WebAssembly Component Development
This skill provides comprehensive expertise in developing WebAssembly components, including WASI fundamentals, composition patterns, runtime compatibility, and troubleshooting.
Key Defaults
- Build: Use
wash buildwhen the project has.wash/config.yaml. Usewash build --skip-fetchfor plugins (sincewasmcloud:washinterface isn't published). Otherwisecargo build --target wasm32-wasip2 --release. - Target:
wasm32-wasip2(Rust 1.82+ tier-2 target). WASI 0.2 (wasip2) is the current standard. - Async: Pick one —
tokio1.50+ withRUSTFLAGS="--cfg tokio_unstable", orwstd(lighter, Wasm-native). Do not mix. - Strings: Always UTF-8 on wasip2. Avoid
as_encoded_bytes(). - Threading: Unsupported. Design single-threaded. Avoid
rayon, threadedtokio,std::thread::spawn. - wasmCloud docs: Always use https://wasmcloud.com/docs/ — never
/docs/v1/.
Reference Files
Load the relevant file when working on the matching topic:
| Topic | File |
|-------|------|
| Component Model fundamentals, benefits, WASI (wasip2) basics | core-concepts.md |
| Composition patterns (simple dependency, adapter, middleware, facade), boundary design, building with wash build / cargo, wac, .wash/config.yaml | composition-and-building.md |
| Cross-language composition, supported languages (Rust, Python, JS/TS, Go, C/C++, C#), data type / performance / error handling considerations | language-interop.md |
| WASI gotchas (no threading, UTF-8 string assumptions, network capabilities), unknown-import errors, runtime-specific compatibility (wasmtime flags, wasmCloud), version alignment strategies | gotchas-and-runtime.md |
| Async with tokio on wasip2, wstd (Wasm-native async stdlib), when to choose which | async.md |
| Testing (host harness, mocks, wash integration, feature flags, env setup), debugging workflow, common error patterns, wasm-tools/wash inspect, performance (minimize cross-component calls, streaming, batching) | testing-debugging-performance.md |
| Documentation links, development/component-design/runtime-compat best practices, CI/CD examples, common architecture patterns (microservices, plugin, data pipeline) | patterns-and-best-practices.md |
Summary
- Component Model enables language-agnostic, composable WebAssembly applications
- WASI 0.2 (wasip2) is the current standard with full networking and UTF-8 guarantees
- Design coarse-grained interfaces for better performance
- Test in target runtime early and often
- Use
wash buildfor wasmCloud projects — handles compatibility automatically - Document runtime requirements and maintain compatibility matrices
微信扫一扫