91917


お世話になっております。

「ハンズオンWebAssembly」という本を元にwasmの勉強をしているのですが、その中でwasmのメモリ管理がJavaScriptのArrayBufferを利用しているために標準Cライブラリのmalloc関数などを利用できないという話が出てきます。

セキュリティを強固にするトレードオフとしてメモリ管理が線形メモリしか使えないことは、単純なポーティング作業だけではなく色々苦労を産みそうな気がするのですが、具体的にご経験したことなどあれば知りたいです。

よろしくお願いします。


CC BY-SA 4.0
2022-10-31T08:53:45.747
91914
2022-10-31T13:10:17.833
2904
question
untagged
wasmのメモリ管理方式で苦労した点があれば、教えてほしい


アプリ開発ではEmscripten上のC/C++でlibc実装やRustやGoなどのランタイム経由でmalloc相当のことはできるため、デバッガの機能不足やアライメントの制限を除けばメモリ管理自体で特に苦労した記憶はありません。ブラウザで細切れに実行されることによる制限のほうが大きく感じます。

自分でWASM対応コンパイラやインタプリタを作成する場合には、Emscriptenを利用しないとlibc相当の機能を自分で準備する必要があること、レジスタやスタックにアクセスできないこと、仮想メモリが無いことで他アーキテクチャへの移植方法が使えない制約はありました。  
経験があるのはちょっとしたテスト実装までで、実用的な言語処理系を実装すると他にもいろいろ苦労がありそうです。


CC BY-SA 4.0
2022-10-31T13:10:17.833
91917
2022-10-31T13:10:17.833
241
91914
answer