💭

[2025 年時点] wasm(Emscripten) + ブラウザではメモリ 2GB が限界

に公開

背景

wasm でメモリたくさん使う...
2GB 以上つかえへんの?

現状だと 2GB までっぽ.

Chrome

module としてビルドしていると, -sMAXIMUM_MEMORY で 2GB+ にしていても無視される

https://github.com/emscripten-core/emscripten/issues/20946

wasm64(memory64)

2025/07 時点で Chrome, Firefox で使えます.
Safari では未対応.

https://webassembly.org/features/

-sMEMORY64 でコンパイルする.
ただ -sASSERTION=1 だと glue code の assert() で実行時エラー(Cannot mix BigInt and other types, use explicit conversions)がでる.
-sASSERTION=2 だと OK っぽい.

まとめ

wasm32 の場合, 2GB まで.

wasm64(memory64)の場合, -sASSERTION=2 -sMEMORY64 -sMAXIMUM_MEMORY=4GB でメモリ上限を引き上げ可能.
ただし memory64 は Safari では使えない.

memory64 の仕様は 2024 年末くらいに決まったようなので, Safari で対応はあと2~3年はかかりそ?

気になったら Claude くんなり ChatGPT くんに聞いて.

Discussion