9 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2019年9月12日 |
---|---|
0.3.0 | 2019年8月14日 |
0.2.0 | 2019年7月25日 |
0.1.5 | 2019年5月2日 |
0.1.0 | 2018年1月11日 |
在 WebAssembly 中排名 #1385
每月下载量 335
用于 4 个 crates (3 个直接)
165KB
333 行(不含注释)
wasm-snip
wasm-snip
将 Wasm 函数体替换为 unreachable
指令。
API 文档 | 贡献 | 聊天
由 🦀🕸 构建,由 Rust 和 WebAssembly 工作组 支持
关于
wasm-snip
将 WebAssembly 函数体替换为 unreachable
。
也许你知道某些函数在运行时永远不会被调用,但编译器在编译时无法证明这一点?剪掉它!它间接调用的所有函数(没有被其他任何东西调用,因此也永远不会在运行时被调用)也将被删除。
当减小 WebAssembly 二进制文件大小时非常有用!
此功能依赖于 .wasm
文件中存在 "name" 部分,因此请使用调试符号构建
[profile.release]
debug = true
可执行文件
要安装 wasm-snip
可执行文件,请运行
$ cargo install wasm-snip
您可以使用 wasm-snip
从 input.wasm
中删除 annoying_space_waster
函数,并将新二进制文件放在 output.wasm
中,如下所示
$ wasm-snip input.wasm -o output.wasm annoying_space_waster
有关使用 wasm-snip
可执行文件的信息,请运行
$ wasm-snip --help
然后您将获得最新的帮助文本,如下所示
Replace a wasm function with an `unreachable`.
USAGE:
wasm-snip [FLAGS] [OPTIONS] <input> [--] [function]...
FLAGS:
-h, --help Prints help information
--snip-rust-fmt-code Snip Rust's `std::fmt` and `core::fmt` code.
--snip-rust-panicking-code Snip Rust's `std::panicking` and `core::panicking` code.
-V, --version Prints version information
OPTIONS:
-o, --output <output> The path to write the output wasm file to. Defaults to stdout.
-p, --pattern <pattern>... Snip any function that matches the given regular expression.
ARGS:
<input> The input wasm file containing the function(s) to snip.
<function>... The specific function(s) to snip. These must match exactly. Use the -p flag for fuzzy matching.
库
要将 wasm-snip
作为库使用,将以下内容添加到您的 Cargo.toml
[dependencies.wasm-snip]
# Do not build the executable.
default-features = false
有关 API 文档,请参阅 docs.rs/wasm-snip
许可证
许可协议为以下之一
任选其一。
贡献
有关黑客攻击的详细信息,请参阅 CONTRIBUTING.md
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交用于作品中的任何贡献,都将双重许可,如上所述,无任何附加条款或条件。
依赖项
~12MB
~233K SLoC