- 你应该知道的工具
- 开发、构建和工作流编排
- repository">
wasm-pack
| repository
- repository">
- 优化和操作
.wasm
二进制文件- repository">
wasm-opt
| repository - repository">
wasm2js
| repository - repository">
wasm-gc
| repository - repository">
wasm-snip
| repository
- repository">
- Inspecting .wasm Binaries
- repository">
twiggy
| repository - repository">
wasm-objdump
| repository - repository">
wasm-nm
| repository
- repository">
- 开发、构建和工作流编排
你应该知道的工具
这是一个精心策划的清单,列出了在进行 Rust 和 WebAssembly 开发时应该了解的一些非常棒的工具。
开发、构建和工作流编排
wasm-pack
| repository
wasm-pack
是成为一个一站式的构建和使用 Rust 生成的 WebAssembly 库,使你可以在 Web上 或 Node.js 上与 JavaScript 进行互操作。
wasm-pack
帮助你构建并将生成的 WebAssembly 发布到 npm 注册表,以便与你已经使用的工作流中的任何其他 JavaScript 包一起使用。
优化和操作 .wasm
二进制文件
wasm-opt
| repository
wasm-opt
工具读取 WebAssembly 作为输入,运行转换、优化和/或检测传递,然后将转换后的 WebAssembly 作为输出发送。
在 LLVM 通过 rustc
生成的 .wasm
二进制文件上运行它通常会创建更小、执行更快的 .wasm
二进制文件。
这个工具是 binaryen
项目的一部分。
wasm2js
| repository
wasm2js
工具将 WebAssembly 编译成 “asm.js”。
这对于支持没有 WebAssembly 实现的浏览器非常有用,比如 Internet Explorer 11。
这个工具是 binaryen
项目的一部分。
wasm-gc
| repository
垃圾收集 WebAssembly 模块并删除所有不需要的导出、导入、函数等的小工具。
这实际上是 WebAssembly 的 --gc-sections
链接器标志。
你通常不需要自己使用此工具,因为有两个原因:
rustc
现在有了足够新的 lld 版本,它支持 WebAssembly 的--gc-sections
标志。这将自动为LTO生成启用。wasm-bindgen
CLI 工具会自动运行wasm-gc
。
wasm-snip
| repository
wasm-snip
将 WebAssembly 函数的主体替换为无法访问的指令。
也许你知道某些函数永远不会在运行时被调用,但是编译器不能在编译时证明这一点?
删掉它!然后再次运行 wasm-gc
,它传递调用的所有函数(在运行时也不能调用)也将被删除。
这对于在非调试生产构建中强制清除 Rust Panic 的基础设施非常有用。
Inspecting .wasm Binaries
twiggy
| repository
twiggy
是 .wasm
二进制文件的代码大小分析器。
它分析二进制的调用来回答如下问题:
- 为什么这个函数首先包含在二进制文件中?也就是说,哪些导出函数正在传递地调用它?
- 这个函数的保留大小是多少?也就是说,如果我删除了它以及所有在删除后变成死代码的函数,会节省多少空间。
使用 twiggy
使你的二进制文件更轻量!
wasm-objdump
| repository
打印有关 .wasm
二进制文件及其每个部分的低级详细信息。
还支持反汇编成 WAT 文本格式。
它类似于 objdump
,但用于 WebAssembly。
这是 WABT 项目的一部分。
wasm-nm
| repository
列出在 .wasm
二进制文件中定义的导入、导出和私有函数符号。