Rompiendo la barrera de los 2 GB: E/S asincrónica para archivos grandes en WebAssembly
El autor implementó previamente setjmp en WebAssembly, eludiendo la dependencia de WASI libc en la propuesta de manejo de excepciones. Sin embargo, este enfoque estaba limitado a archivos menores a 2 GB. Esta publicación detalla cómo usar la API de Archivos y el tipo Blob para crear un sistema de archivos basado en memoria para manejar archivos más grandes. Dado que la E/S web es asincrónica, mientras que los lenguajes de sistema suelen ser sincrónicos, se utilizó Asyncify para conectar los paradigmas. El autor encontró problemas de optimización con wasm-opt, resolviéndolos creando un wasm-opt ficticio. Finalmente, utilizando inteligentemente un puntero de función volátil, eludió la suposición incorrecta de Asyncify sobre la función `asyncjmp_rt_start`, logrando finalmente el manejo asincrónico de archivos grandes.