ข้ามไปยังเนื้อหา

เครื่องมือ (Tooling)

การส่ง WebAssembly ที่มีประสิทธิภาพเริ่มต้นก่อนที่คุณจะเขียนคำสั่งแรก คุณต้องมีเครื่องมือเพื่อแปลงข้อความ .wat ให้เป็น binary .wasm เพื่อตรวจสอบว่ามีอะไรอยู่ใน module ที่คอมไพล์แล้ว และเพื่อลดขนาดไบต์ก่อนที่จะส่งผ่านเครือข่าย โปรเจกต์สามตัวครอบคลุมความต้องการเกือบทั้งหมด: wabt, Binaryen และ wasm-tools

ตระกูลเครื่องมือดูแลโดยจุดแข็งหลัก
wabt (WebAssembly Binary Toolkit)WebAssembly CGการแปลง WAT ↔ binary, การ validate, การตรวจสอบ
BinaryenGoogle / Emscriptenการ optimise และ code generation, wasm-opt
wasm-toolsBytecode 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"]
WAT → .wasm → optimised → inspect

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 เป็นไปตามข้อกำหนดหรือไม่

Terminal window
# ติดตั้งผ่าน npm (ทำงานโดยไม่ต้องสร้าง native)
npm install -g wabt
# คอมไพล์ WAT ให้เป็น binary
wat2wasm add.wat -o add.wasm
# Disassemble กลับเป็น text
wasm2wat add.wasm -o add.wat
# ตรวจสอบ section headers
wasm-objdump -x add.wasm
# Validate โมดูล
wasm-validate add.wasm

Binaryen คือโครงสร้างพื้นฐาน compiler สำหรับ WebAssembly ที่ optimise เครื่องมือที่ใช้กันมากที่สุดคือ wasm-opt ซึ่งเขียน binary .wasm ที่มีอยู่ใหม่เพื่อผลิต output ที่เล็กลงหรือเร็วขึ้น Emscripten, AssemblyScript และ wasm-pack (สำหรับ Rust) ทั้งหมดเรียก wasm-opt โดยอัตโนมัติเป็นส่วนหนึ่งของ release builds

Terminal window
# ติดตั้ง
npm install -g binaryen
# Optimise เพื่อความเร็ว (ต้องการการทำงานที่รวดเร็ว)
wasm-opt -O3 input.wasm -o output.wasm
# Optimise เพื่อขนาด (ต้องการ download ที่เล็ก)
wasm-opt -Oz input.wasm -o output.wasm

wasm-tools คือชุดเครื่องมือรุ่นใหม่ของ Bytecode Alliance เขียนด้วย Rust และมีทั้งในรูปแบบ CLI และ library รองรับ WebAssembly Component Model proposals การรวมหลาย module เข้าด้วยกัน การลบ custom sections และการ encode/decode ในรูปแบบ binary

Terminal window
# ติดตั้ง
cargo install wasm-tools
# Validate
wasm-tools validate add.wasm
# แสดง text format
wasm-tools print add.wasm
# ลบ custom sections (ลบ debug info)
wasm-tools strip add.wasm -o add.stripped.wasm
tool ไหนแปลงไฟล์ .wat เป็น .wasm binary?
tool family ไหนที่เน้นเรื่อง size และ speed optimization เป็นหลัก?
องค์กรไหนดูแลโปรเจกต์ wasm-tools?
wasm2wat ทำอะไร?