This repository was archived by the owner on Sep 8, 2025. It is now read-only.
Commit 30b3b76
committed
update
This updates the plumbing, FACT, compilation, and runtime code to use the new
ABI defined in WebAssembly/component-model#524.
- `future.write` now accepts its payload value as up to 4 flat parameters before spilling to linear memory.
- `future.read` takes no payload pointer when it has no payload type
- `{stream,future}.close-{readable,writable}` have been renamed to `{stream,future}.drop-{readable,writable}`
This commit does _not_ address the following items:
> * There is no "number of elements written" packed in the high 28 bits of the `future.{read,write}` results.
> * On successful copy, `future.{read,write}` return `COMPLETED` instead of `CLOSED` (which, as noted above, was renamed to `DROPPED`, making it especially "wrong" as the result code).
> * When a `future` is "done" (by a `COMPLETED` read/write or by the writable end receiving `DROPPED`), the only valid operation is `future.drop-{readable,writable}`. `future.{read,write}` or lifting traps.
> * Because there's no great reason for streams to be more permissive than futures in this regard, streams are also given a "done" state with the same trapping rules as futures, but the stream "done" state is only set when `DROPPED` is received.
I'll address those in one or more follow-up commits.
Signed-off-by: Joel Dice <[email protected]>future.{write,read} ABIs1 parent 418606f commit 30b3b76
File tree
27 files changed
+655
-603
lines changed- crates
- cranelift/src/compiler
- environ/src
- component
- translate
- test-programs
- artifacts
- src
- bin
- wasmtime/src/runtime
- component
- concurrent
- futures_and_streams
- vm/component
- tests/misc_testsuite/component-model-async
27 files changed
+655
-603
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments