你應該知道的工具
這是一個精心挑選的出色工具清單,當使用 Rust 和 WebAssembly 進行開發時,你應該瞭解這些工具。
開發、建構和工作流程管理
wasm-pack
| 儲存庫
wasm-pack
旨在成為一站式服務,用於建構和使用 Rust 生成的 WebAssembly,以便你在網路上或使用 Node.js 與 JavaScript 資料互用。wasm-pack
可協助你建構並將 Rust 生成的 WebAssembly 發布到 npm 註冊表,以便在工作流程中與你已經使用的其他 JavaScript 套件一起使用。
最佳化和處理 .wasm
二進位檔
wasm-opt
| 儲存庫
wasm-opt
工具會讀取 WebAssembly 作為輸入,執行其轉換、最佳化和/或演算法的傳遞,然後輸出轉換後的 WebAssembly。透過 rustc
的方式在 LLVM 產生的 .wasm
二進位檔上執行它,通常會產生大小和執行速度都更快的 .wasm
二進位檔。此工具是 binaryen
項目的其中一部分。
wasm2js
| 儲存庫
wasm2js
工具會將 WebAssembly 編譯成「幾乎是 asm.js」。這非常適合支援沒有 WebAssembly 執行環境的瀏覽器,例如 Internet Explorer 11。此工具是 binaryen
項目的其中一部分。
wasm-gc
| 儲存庫
一個小型工具用於收集 WebAssembly 模組的垃圾並移除所有不需要的匯出、匯入、函數等等。這實際上是 WebAssembly 的 --gc-sections
連結器旗標。
由於以下兩個原因,您通常不需要自己使用此工具:
rustc
現在有新版本的lld
,它支援 WebAssembly 的--gc-sections
標記。這會自動啟用於 LTO 建置。wasm-bindgen
CLI 工具會自動為您執行wasm-gc
。
wasm-snip
| 儲存庫
wasm-snip
會以 unreachable
指令取代 WebAssembly 函數的主體。
也許您知道在執行階段時某些函數永遠不會被呼叫,但編譯器沒辦法在編譯階段證明這點嗎?將它剪輯掉!然後再次執行 wasm-gc
,它暫時呼叫的所有函數(在執行階段時可能永遠不會被呼叫)也會被移除。
這有助於在非偵錯生產建置中強制移除 Rust 的恐慌架構。
檢查 .wasm
二進位檔
twiggy
| 儲存庫
twiggy
是 .wasm
二進位檔的程式碼大小分析工具。它會分析二進位檔的呼叫圖形,用於回答類似以下的問題:
- 這個函數一開始為什麼會放入二進位檔中?也就是說,哪些匯出函數會暫時呼叫它?
- 這個函數的保留大小是多少?也就是說,如果我移除它以及在移除後會變成廢棄程式碼的所有函數,可以省下多少空間。
使用 twiggy
讓您的二進位檔更精簡!
wasm-objdump
| 儲存庫
列印有關 .wasm
二進位檔及其各個區段的低階詳細資料。也可將其分解組譯成 WAT 文字格式。就像 objdump
,但是適用於 WebAssembly。這是 WABT 專案的一部分。
wasm-nm
| 儲存庫
列出在 .wasm
二進位檔中定義的,已導入、已匯出及私有函式符號。就像 nm
,但是適用於 WebAssembly。