突破WebAssembly运行时限制:ZeroPerl的异步化实现

2025-02-11
突破WebAssembly运行时限制:ZeroPerl的异步化实现

作者先前因WebAssembly运行时缺乏对exnref的支持而导致ZeroPerl无法使用而感到沮丧。但他没有止步于抱怨,而是决定自己动手解决问题。通过使用Binaryen的Asyncify特性,作者从头实现了一个setjmp的替代方案,绕过了libsetjmp带来的兼容性问题。最终,经过移除官方库、编写汇编代码和使用wasm-opt优化后,ZeroPerl成功地在Wasmer、Wasmtime等多个WebAssembly运行时上运行。这标志着该项目取得了重大突破,实现了完全沙盒化且自包含的Perl WebAssembly模块。