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

Download history 92/week @ 2024-04-05 100/week @ 2024-04-12 71/week @ 2024-04-19 100/week @ 2024-04-26 139/week @ 2024-05-03 192/week @ 2024-05-10 158/week @ 2024-05-17 181/week @ 2024-05-24 129/week @ 2024-05-31 187/week @ 2024-06-07 132/week @ 2024-06-14 122/week @ 2024-06-21 80/week @ 2024-06-28 119/week @ 2024-07-05 52/week @ 2024-07-12 74/week @ 2024-07-19

每月下载量 335
用于 4 个 crates (3 个直接)

Apache-2.0/MIT 许可证

165KB
333 行(不含注释)

wasm-snip

wasm-snip 将 Wasm 函数体替换为 unreachable 指令。

Build Status Crates.io version Download docs.rs docs

API 文档 | 贡献 | 聊天

由 🦀🕸 构建,由 Rust 和 WebAssembly 工作组 支持

关于

wasm-snip 将 WebAssembly 函数体替换为 unreachable

也许你知道某些函数在运行时永远不会被调用,但编译器在编译时无法证明这一点?剪掉它!它间接调用的所有函数(没有被其他任何东西调用,因此也永远不会在运行时被调用)也将被删除。

当减小 WebAssembly 二进制文件大小时非常有用!

此功能依赖于 .wasm 文件中存在 "name" 部分,因此请使用调试符号构建

[profile.release]
debug = true

可执行文件

要安装 wasm-snip 可执行文件,请运行

$ cargo install wasm-snip

您可以使用 wasm-snipinput.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