2GB 제한 극복: WebAssembly에서 대용량 파일의 비동기 I/O

2025-03-04
2GB 제한 극복: WebAssembly에서 대용량 파일의 비동기 I/O

저자는 이전에 WebAssembly에서 setjmp를 구현하여 WASI libc의 예외 처리 제안에 대한 의존성을 우회했습니다. 하지만 이 방법은 2GB 미만의 파일로 제한되었습니다. 이 글에서는 File API와 Blob 유형을 사용하여 더 큰 파일을 처리하기 위한 메모리 기반 파일 시스템을 만드는 방법을 설명합니다. 웹 I/O는 비동기식인 반면 시스템 언어는 일반적으로 동기식이므로 Asyncify를 사용하여 패러다임을 연결했습니다. wasm-opt 최적화 문제가 발생했지만 더미 wasm-opt를 만들어 해결했습니다. 마지막으로, volatile 함수 포인터를 영리하게 사용하여 `asyncjmp_rt_start` 함수에 대한 Asyncify의 잘못된 가정을 우회하여 대용량 파일의 비동기 처리를 달성했습니다.

개발