6 个版本 (破坏性更新)
0.6.0 | 2020 年 1 月 15 日 |
---|---|
0.5.0 | 2019 年 7 月 26 日 |
0.4.0 | 2019 年 6 月 4 日 |
0.3.0 | 2019 年 5 月 23 日 |
0.1.0 | 2018 年 11 月 15 日 |
#195 in #webassembly
在 chisel 中使用
160KB
3.5K SLoC
wasm-chisel
一些有用的工具,用于转换 WebAssembly 可执行文件,最重要的是在确定性/区块链环境下使用的 WebAssembly,例如与 ewasm 一起使用。
库
remapimports
提供导入列表(包括命名空间和名称),并用新的命名空间和名称对替换它们。
这对于与不支持在导入中指定命名空间的编译器一起使用非常有用。截至 2018 年中,这几乎包括所有编译器(一个例外是 AssemblyScript)。
它支持与 verifyimports
相同的预设。
trimexports
删除所有出口,但指定的出口。
这附带了一些预设
ewasm
:保留main
和导出内存pwasm
:保留_call
trimstartfunc
删除启动函数。
这附带以下预设
ewasm
:如果存在,则删除start
函数
verifyimports
验证模块的导入是否符合提供的导入接口。可以设置为要求整个导入集的存在,或者只需验证具有匹配标识符的现有导入的有效性。可以设置为允许或禁止未列出的额外导入。
提供了以下预设
verifyexports
验证模块的导出是否符合提供的导出接口。可以设置为允许或禁止未列出的额外导出。
提供了以下预设
ewasm
:验证main
函数和memory
已导出。禁止任何未列出的导出。
dropsection
从模块中删除选定的部分。
deployer
将模块包装成 ewasm 兼容的构造函数。它有两个预设
memory
:将模块封装为预定义的内存部分customsection
:将模块作为自定义部分包含
repack
重新序列化模块。它将丢弃任何未知(自定义)部分。
remapstart
如果有起始部分,将其导出为main
(替换任何现有的main
导出)并删除起始部分
snip
包装wasm-snip并开启从wasm中删除Rust格式化和调试信息。
dropnames
如果存在,则删除NamesSection。
CLI
chisel
是一个命令行工具。它支持两种用法模式,配置驱动和Unix风格,也称为oneliner
。
它使用在wasm-gc和wasm-utils中实现的库功能。它附带一个配置文件chisel.yml
。
chisel run
:在当前目录中搜索chisel.yml
,如果未指定其他方式,则使用标志-c
。运行配置中指定的模块,如果翻译器或创建模块进行了任何更改,则输出新文件,并打印每个模块的简要报告。
chisel
:调用Unix风格模式。它需要标志--modules
和--config
。
-
--modules
接受一个逗号分隔的模块列表,要调用的模块。一个有效的模块列表示例是:--modules remapimports,verifyimports
-
--config
接受一个逗号分隔的键值选项列表,用于要调用的模块,形式为module.option=value
。一个有效的配置示例是:--config remapimports.preset=ewasm,verifyimports.preset=ewasm
配置文件
配置文件以规则集条目开头,其中名称可以是任何名称。规则集中包含其选项。
唯一必需的字段是file
,它指定了要雕刻的Wasm二进制的路径。
可选地,也可以通过output
选项指定输出文件。
需要注意的是,如果所有规则都以连字符开头,则配置解析将无法正常工作。请避免这种情况,直到配置解析器被通用化。
ewasm:
file: "target/wasm32-unknown-unknown/release/sentinel.wasm"
output: "out.wasm"
remapimports:
preset: "ewasm"
sentinel.rs
待定
变更日志
变更日志在此处可用。
维护者
许可证
依赖关系
~8–12MB
~220K SLoC