You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Encode component types in canonical ABI module custom sections (#331)
* Remove support for handles and resources
This commit removes all support for the `resource` and `Handle` types
from the AST of `wit-parser` and all related support in all code
generators. The motivation for this commit is that `wit-bindgen` is on
the cusp of actually being able to work with components: producing a
component from guest output and consuming components in host generators.
More detail about this is in #314. With components as an intermediate
format, however, there is no way to encode resources since they are not
part of the component model proposal yet.
All is not lost for handles and resources, though. The official design
for handles and resources is being worked on upstream in the component
model repository itself at this time and once added all of this support
will be re-added to `wit-bindgen`. In the meantime though I personally
think that the best way forward is to remove the interim support for a
few reasons:
* Primarily it unblocks progress at this time towards fully integrating
components and the `wit-bindgen` generators. The requirement to run
existing tests that use handles would mean that no host generator
could actually switch to components and/or modes for today's
core-wasm-lookalike would need to be preserved.
* Otherwise though the semantics of the current handles are basically
invented out of thin air by myself and were never really formally
specified, debated, or designed deliberately. I grafted `witx`-style
handles into `wit-component` and added features as necessary over
time, but it seems highly unlikely that the handles designed as part
of the component model will be the ones that `wit-bindgen` currently
supports. This inevitably means that a new system would need new code
anyway and would likely result in removal regardless.
As usual git always has the history of handles and this all may come
back in one shape or another if only slightly tweaked. I'm confident in
our history spelunking abilities, though, so I don't feel that keeping
support in the repository is necessary for this purpose.
* Remove resources from the demo
* smuggle wit information in custom sections
* move transcoder to the crate, and make it available in the cli
* gen-guest-rust can emit custom component-type section
* custom section takes a pub static, not a const
* ComponentEncoder needs to own its Interfaces
so that I can use the Interfaces decoded from the module's custom
section
* make ComponentEncoder always transcode component-type info from custom sections
* flavorful tests: types and functions are actually the same namespace
theyre not in wit, but thats a bug we need to fix, because they are in
component types
* test-helpers: build rust guests with wasm32-unknown-unknown and assert they encode as components
except for "invalid" and "handles" which are not gonna work
* refactor
* gen-guest-rust: now infallible
Co-authored-by: Alex Crichton <[email protected]>
0 commit comments