Dépasser la limite des 2 Go : E/S asynchrones pour les fichiers volumineux dans WebAssembly
L'auteur avait précédemment implémenté setjmp dans WebAssembly, contournant la dépendance de WASI libc à la proposition de gestion des exceptions. Cependant, cette approche était limitée aux fichiers de moins de 2 Go. Cet article détaille comment utiliser l'API File et le type Blob pour créer un système de fichiers basé sur la mémoire afin de gérer des fichiers plus volumineux. L'E/S web étant asynchrone tandis que les langages système sont généralement synchrones, Asyncify a été utilisé pour relier les paradigmes. L'auteur a rencontré des problèmes d'optimisation avec wasm-opt, qu'il a résolus en créant un faux wasm-opt. Enfin, en utilisant intelligemment un pointeur de fonction volatile, il a contourné l'hypothèse incorrecte d'Asyncify concernant la fonction `asyncjmp_rt_start`, réussissant ainsi à gérer de manière asynchrone les fichiers volumineux.