66个版本 (36个重大更改)
新 0.216.0 | 2024年8月22日 |
---|---|
0.215.0 | 2024年7月31日 |
0.214.0 | 2024年7月16日 |
0.202.0 | 2024年3月26日 |
0.0.0 | 2022年5月10日 |
在WebAssembly中排名第5
每月下载量199,064
在77个crate中使用(直接使用43个)
2.5MB
57K SLoC
wit-component
wit-component
是一个crate,用于创建和与基于组件模型提案的WebAssembly组件交互。
命令行使用
wit-component
crate可以通过wasm-tools
CLI套件中的两个子命令获得
# Create a component from the input core wasm module
$ wasm-tools component new core.wasm -o component.wasm
# Extract a `*.wit` interface from a component
$ wasm-tools component wit component.wasm
功能
-
从输入的核心WebAssembly模块创建WebAssembly 组件二进制文件。输入模块通过规范ABI与用
*.wit
文件描述的导入和导出接口进行通信。wit接口必须直接嵌入到核心wasm二进制文件中。 -
支持“适配器”,可以用来将遗留的核心WebAssembly导入函数桥接到组件模型函数。适配器本身是核心wasm二进制文件,将被嵌入到最终组件中。适配器的导出可以被主核心wasm二进制文件导入,然后适配器可以调用组件模型导入。
-
可以从现有的组件中提取
*.wit
接口,以查看它导出和打算导入的接口。
使用
请注意,这个软件包旨在作为组件工具的低级详细信息。开发人员不一定会在日常工作中与这些工具交互,而是使用如cargo-component
这样的封装器,它会自动执行wit-component
来生成组件二进制文件。
首先,wit-component
支持WIT包的基于wasm的编码。
$ cat demo.wit
package my:demo;
interface host {
hello: func();
}
world demo {
import host;
}
$ wasm-tools component wit demo.wit -o demo.wasm --wasm
# The output `demo.wasm` is a valid component binary
$ wasm-tools validate --features component-model demo.wasm
$ wasm-tools print demo.wasm
# The `*.wit` file can be recovered from the `demo.wasm` as well
$ wasm-tools component wit demo.wasm
工具链作者可以使用wit-component
将此组件类型部分嵌入到核心wasm二进制文件中。在这里,我们将使用一个原始的*.wat
wasm文本文件进行小型演示,其中demo.wit
参数是手动指定的,但是。
$ cat demo.core.wat
(module
(import "my:demo/host" "hello" (func))
)
$ wasm-tools component embed demo.wit --world demo demo.core.wat -o demo.wasm
# See that there's a new `component-type` custom section
$ wasm-tools objdump demo.wasm
# Convert the core wasm into a component now
$ wasm-tools component new demo.wasm -o demo.component.wasm
# Like before the output `demo.wasm` is a valid component binary
$ wasm-tools validate --features component-model demo.component.wasm
$ wasm-tools print demo.component.wasm
# Additionally like before the `*.wit` interface can still be extracted
$ wasm-tools component wit demo.component.wasm
现在,可以将demo.component.wasm
运送到组件运行时或嵌入到宿主中。
依赖项
~2.9–4MB
~67K SLoC