44 releases
0.28.0 | Jan 25, 2024 |
---|---|
0.27.0 | Nov 2, 2023 |
0.26.1 | Mar 21, 2023 |
0.24.1 | Sep 12, 2022 |
0.17.0 | Jul 28, 2020 |
#633 in WebAssembly
356 downloads per month
Used in 36 crates
(14 directly)
290KB
7K
SLoC
This crate contains an implementation of WebAssembly Interface Types (abbreviated WIT). It is composed of 5 parts:
- Types and Values: To represent the WIT types and values representations,
- AST: To represent the WIT language as a tree (which is not really abstract). This is the central representation of the language.
- Decoders: To read the AST from a particular data
representation; for instance,
decoders::binary::parse
reads the AST from a binary. - Encoders: To write the AST into a particular
format; for instance,
encoders::wat
writes the AST into a string representing WIT with its textual format. - Interpreter: WIT defines a concept called
Adapters. An adapter contains a set of instructions. So, in
more details, this module contains:
- A very light and generic stack implementation, exposing only the operations required by the interpreter,
- A stack-based interpreter,
defined by:
- A compiler that transforms a set of instructions into a set of executable instructions,
- A stack,
- A runtime that holds the “invocation inputs” (arguments of the interpreter), the stack, and the WebAssembly instance (which holds the exports, the imports, the memories, the tables etc.),
- An hypothetic WebAssembly runtime,
represented as a set of enums, types, and traits —basically
this is the part a runtime should take a look to use the
wasmer-interface-types
crate—.
Dependencies
~3.5–5MB
~96K SLoC