Skip to content

Commit e688778

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 e688778

26 files changed

+666
-602
lines changed

Cargo.lock

Lines changed: 38 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)