突破2GB限制:在WebAssembly中使用异步I/O处理大型文件
2025-03-04

作者先前在WebAssembly中实现了setjmp,绕过了WASI libc对异常处理提案的依赖。但该方法限制在2GB以内。文章讲述了如何利用File API和Blob类型实现基于内存的文件系统,从而处理更大的文件。由于Web I/O是异步的,而系统语言通常是同步的,作者使用了Asyncify来桥接两种范式。过程中遇到了wasm-opt优化的问题,通过创建伪wasm-opt解决。最终,通过巧妙地使用volatile函数指针,成功绕过了Asyncify对`asyncjmp_rt_start`函数的错误假设,最终实现了对大型文件的异步处理。
开发