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 日 |
#244 在 #ethereum
每月 24 次下载
230KB
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
TBA
变更日志
一个变更日志可用。
维护者
许可证
依赖项
~10–15MB
~273K SLoC