This repository was archived by the owner on Sep 8, 2025. It is now read-only.
update future.{write,read} ABIs#199
Closed
dicej wants to merge 1 commit into
Closed
Conversation
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 <joel.dice@fermyon.com>
Collaborator
Author
|
Alex, Luke, and I just discussed this and decided we're going to scale back these changes given how big they turned out to be implementation-wise. I'm going to close this and open a new one next week. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This updates the plumbing, FACT, compilation, and runtime code to use the new ABI defined in WebAssembly/component-model#524.
future.writenow accepts its payload value as up to 4 flat parameters before spilling to linear memory.future.readtakes 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:
I'll address those in one or more follow-up commits.