Wastrel, a Profligate Implementation of WebAssembly
7 months ago
- #Compiler
- #WASI
- #WebAssembly
- Wastrel 是一个创新的WebAssembly (Wasm)实现方案,通过将Wasm模块编译为C代码再生成独立二进制文件
- 与同类项目(wasm2c/w2c2)的核心差异在于:通过Whippet垃圾回收库支持WasmGC实现自动内存管理
- 其CLI工具设计类似wasmtime,默认直接编译运行C输出文件,而wasm2c更侧重C代码生成
- 完整实现了WASI 0.1标准(WASI预览版1),可直接执行依赖WASI导入的二进制程序
- 通过轻量级效应分析生成优化后的C代码,有效减少冗余临时变量
- 性能基准测试显示:Wastrel仅比原生代码慢2-5%,与w2c2相当,且显著快于Wasmtime
- WASI实现面临三大挑战:受限类型的ABI处理、poll_oneoff等复杂函数的实现,以及规范模糊性问题
- 采用Linux文件系统命名空间实现安全沙箱,目前仅支持Linux平台,强调基于能力(capabilities)的安全模型
- 项目动机包括:倡导WASI支持垃圾回收、推动WasmGC语言在浏览器外运行、推广Whippet GC库的应用
- 未来计划包括:与ocamlopt的性能对比研究、通过Hoot/Whippet/Wastrel工具链实现Guile程序的原生编译