Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit 30b3b76

Browse files
committed
update future.{write,read} ABIs
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]>
1 parent 418606f commit 30b3b76

File tree

27 files changed

+655
-603
lines changed

27 files changed

+655
-603
lines changed

Cargo.lock

Lines changed: 39 additions & 121 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)