เครื่องมือ (Tooling)
การส่ง WebAssembly ที่มีประสิทธิภาพเริ่มต้นก่อนที่คุณจะเขียนคำสั่งแรก คุณต้องมีเครื่องมือเพื่อแปลงข้อความ .wat ให้เป็น binary .wasm เพื่อตรวจสอบว่ามีอะไรอยู่ใน module ที่คอมไพล์แล้ว และเพื่อลดขนาดไบต์ก่อนที่จะส่งผ่านเครือข่าย โปรเจกต์สามตัวครอบคลุมความต้องการเกือบทั้งหมด: wabt, Binaryen และ wasm-tools
ตระกูลเครื่องมือทั้งสาม
หัวข้อที่มีชื่อว่า “ตระกูลเครื่องมือทั้งสาม”| ตระกูลเครื่องมือ | ดูแลโดย | จุดแข็งหลัก |
|---|---|---|
| wabt (WebAssembly Binary Toolkit) | WebAssembly CG | การแปลง WAT ↔ binary, การ validate, การตรวจสอบ |
| Binaryen | Google / Emscripten | การ optimise และ code generation, wasm-opt |
| wasm-tools | Bytecode Alliance | ชุดเครื่องมือที่เขียนด้วย Rust: parse, validate, compose, encode |
แต่ละตระกูลครอบครองขั้นตอนที่แตกต่างกันใน pipeline แผนภาพด้านล่างแสดงให้เห็นว่าไฟล์ต้นฉบับ .wat เดินทางผ่านเครื่องมือเหล่านี้อย่างไรจนกลายเป็น module ที่ถูก deploy และ optimise แล้ว
flowchart LR A[".wat source"] -->|"wat2wasm"| B[".wasm binary"] B -->|"wasm-opt -O3"| C["optimised .wasm"] C -->|"wasm2wat / wasm-objdump"| D["inspection / debug"] B -->|"wasm-validate"| E["validation report"] B -->|"wasm-tools parse"| F["structured analysis"]
wabt — ชั้นการแปล
หัวข้อที่มีชื่อว่า “wabt — ชั้นการแปล”wabt คือ reference implementation ของ WAT text format binary หลักคือ wat2wasm ซึ่งแปลงไฟล์ .wat เป็น binary .wasm ทิศทางย้อนกลับ — การ disassemble .wasm กลับเป็น WAT ที่อ่านได้ — จัดการโดย wasm2wat เครื่องมือเสริมสองตัวทำให้ครบชุด: wasm-objdump แสดง section headers และ symbol table ของ binary ใดก็ได้ และ wasm-validate ตรวจสอบว่า module เป็นไปตามข้อกำหนดหรือไม่
# ติดตั้งผ่าน npm (ทำงานโดยไม่ต้องสร้าง native)npm install -g wabt
# คอมไพล์ WAT ให้เป็น binarywat2wasm add.wat -o add.wasm
# Disassemble กลับเป็น textwasm2wat add.wasm -o add.wat
# ตรวจสอบ section headerswasm-objdump -x add.wasm
# Validate โมดูลwasm-validate add.wasmBinaryen — ตัว optimise
หัวข้อที่มีชื่อว่า “Binaryen — ตัว optimise”Binaryen คือโครงสร้างพื้นฐาน compiler สำหรับ WebAssembly ที่ optimise เครื่องมือที่ใช้กันมากที่สุดคือ wasm-opt ซึ่งเขียน binary .wasm ที่มีอยู่ใหม่เพื่อผลิต output ที่เล็กลงหรือเร็วขึ้น Emscripten, AssemblyScript และ wasm-pack (สำหรับ Rust) ทั้งหมดเรียก wasm-opt โดยอัตโนมัติเป็นส่วนหนึ่งของ release builds
# ติดตั้งnpm install -g binaryen
# Optimise เพื่อความเร็ว (ต้องการการทำงานที่รวดเร็ว)wasm-opt -O3 input.wasm -o output.wasm
# Optimise เพื่อขนาด (ต้องการ download ที่เล็ก)wasm-opt -Oz input.wasm -o output.wasmwasm-tools — ชุดเครื่องมือสมัยใหม่
หัวข้อที่มีชื่อว่า “wasm-tools — ชุดเครื่องมือสมัยใหม่”wasm-tools คือชุดเครื่องมือรุ่นใหม่ของ Bytecode Alliance เขียนด้วย Rust และมีทั้งในรูปแบบ CLI และ library รองรับ WebAssembly Component Model proposals การรวมหลาย module เข้าด้วยกัน การลบ custom sections และการ encode/decode ในรูปแบบ binary
# ติดตั้งcargo install wasm-tools
# Validatewasm-tools validate add.wasm
# แสดง text formatwasm-tools print add.wasm
# ลบ custom sections (ลบ debug info)wasm-tools strip add.wasm -o add.stripped.wasm