-
Notifications
You must be signed in to change notification settings - Fork 298
Synchronize some component model intrinsics with the spec #2065
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
alexcrichton
merged 2 commits into
bytecodealliance:main
from
alexcrichton:fix-some-component-intrinsics
Feb 24, 2025
Merged
Synchronize some component model intrinsics with the spec #2065
alexcrichton
merged 2 commits into
bytecodealliance:main
from
alexcrichton:fix-some-component-intrinsics
Feb 24, 2025
Conversation
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
I'll note that this is based on #2064, so only the last commit is exclusive to the PR (at this time) |
dicej
approved these changes
Feb 24, 2025
This commit goes through a few component model intrinsics and synchronizes them with the current specification, mainly centered around async intrinsics. This doesn't synchronize all of them but is at least a start. Changes here include: * Support for `resource.drop async` intrinsics. * Renaming `task.backpressure` to `backpressure.set`. * Adding canonical ABI options to `task.return`. * A number of refactorings to simplify some constructs, reduce duplication, etc. The validation of `task.return` has been updated to take WebAssembly/component-model#453 into account with the new set of options that are allowed on it. Additionally `wit-component` was updated to set options for `task.return` in the same manner as the `canon lift`'d function on the other end.
49f1bfe
to
0a76357
Compare
alexcrichton
added a commit
to alexcrichton/wasm-tools
that referenced
this pull request
Feb 25, 2025
This commit fixes fuzzer fallout from bytecodealliance#2065 and related PRs where previously async destructor imports were being generated but were actually bound with synchronous destructor imports. Now `wit-component` is generating an error on async resource destructors so this fixes the generator to avoid generating such imports for now while there's not support for lowering them.
alexcrichton
added a commit
to alexcrichton/wasm-tools
that referenced
this pull request
Feb 25, 2025
This commit fixes fuzzer fallout from bytecodealliance#2065 and related PRs where previously async destructor imports were being generated but were actually bound with synchronous destructor imports. Now `wit-component` is generating an error on async resource destructors so this fixes the generator to avoid generating such imports for now while there's not support for lowering them.
alexcrichton
added a commit
to alexcrichton/wasm-tools
that referenced
this pull request
Feb 27, 2025
This commit fixes fuzzer fallout from bytecodealliance#2065 and related PRs where previously async destructor imports were being generated but were actually bound with synchronous destructor imports. Now `wit-component` is generating an error on async resource destructors so this fixes the generator to avoid generating such imports for now while there's not support for lowering them.
github-merge-queue bot
pushed a commit
that referenced
this pull request
Feb 27, 2025
* Force using `sync` resource-drop during fuzzing This commit fixes fuzzer fallout from #2065 and related PRs where previously async destructor imports were being generated but were actually bound with synchronous destructor imports. Now `wit-component` is generating an error on async resource destructors so this fixes the generator to avoid generating such imports for now while there's not support for lowering them. * Implement the WIT `async` keyword This commit is an implementation of WebAssembly/component-model#442 in this repository, namely: * The `async` identifier is now a keyword in WIT. * Functions in WIT can be annotated `async`. * New kebab-names are now recognized to round-trip this attribute through the wasm binary format: * `[async]foo` => `foo: async func()` * `[async method]foo.bar` => `resource foo { bar: async func() }` * `[async static]foo.bar` => `resource foo { bar: static async func() }` * Various new tests were updated to ensure these names are gated behind the component-model-async feature and additionally test some validation of these names. * The `wit-component` convention of "name mangling" was updated to use `[async-lower]` instead of `[async]` for lowered functions (to not conflict with the kebab-name otherwise. Additionally in exports `[async-lift]` is used instead of `[async]` as well as `[async-lift-stackful]` instead of `[async-stackful]`. * Support was added to `wit-smith` to generate `async` functions. * Fix `Ord for ComponentNameKind` * Another `Ord`-related fix
duffney
pushed a commit
to duffney/wasm-tools
that referenced
this pull request
Mar 4, 2025
* Force using `sync` resource-drop during fuzzing This commit fixes fuzzer fallout from bytecodealliance#2065 and related PRs where previously async destructor imports were being generated but were actually bound with synchronous destructor imports. Now `wit-component` is generating an error on async resource destructors so this fixes the generator to avoid generating such imports for now while there's not support for lowering them. * Implement the WIT `async` keyword This commit is an implementation of WebAssembly/component-model#442 in this repository, namely: * The `async` identifier is now a keyword in WIT. * Functions in WIT can be annotated `async`. * New kebab-names are now recognized to round-trip this attribute through the wasm binary format: * `[async]foo` => `foo: async func()` * `[async method]foo.bar` => `resource foo { bar: async func() }` * `[async static]foo.bar` => `resource foo { bar: static async func() }` * Various new tests were updated to ensure these names are gated behind the component-model-async feature and additionally test some validation of these names. * The `wit-component` convention of "name mangling" was updated to use `[async-lower]` instead of `[async]` for lowered functions (to not conflict with the kebab-name otherwise. Additionally in exports `[async-lift]` is used instead of `[async]` as well as `[async-lift-stackful]` instead of `[async-stackful]`. * Support was added to `wit-smith` to generate `async` functions. * Fix `Ord for ComponentNameKind` * Another `Ord`-related fix
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 commit goes through a few component model intrinsics and
synchronizes them with the current specification, mainly centered around
async intrinsics. This doesn't synchronize all of them but is at least a
start. Changes here include:
resource.drop async
intrinsics.task.backpressure
tobackpressure.set
.task.return
.duplication, etc.
The validation of
task.return
has been updated to takeWebAssembly/component-model#453 into account with the new set of options
that are allowed on it. Additionally
wit-component
was updated to setoptions for
task.return
in the same manner as thecanon lift
'dfunction on the other end.