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 |
1,258 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
~99K SLoC