FirefoxもWebAssemblyのガベージコレクション機能を実装中であることが明らかに
今回は「FirefoxもWebAssemblyのガベージコレクション機能を実装中であることが明らかに」についてご紹介します。
関連ワード (比較的早期、自動的、進化等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Google Chromeに続いてFirefoxもWebAssemblyのガベージコレクション機能を試験的に実装していることが、KotlinのWebAssembly対応ドキュメントから分かりました(現時点ではFirefoxのBeta版やNightlyのドキュメントには記載がないようです)。
すでにGoogle Chromeが、Dart言語のWebAssembly対応への対応のために試験的実装を示すOrigin TrialとしてWebAssemblyのガベージコレクション機能の実装を開始しています。
参考:WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
Firefoxでもほぼ同様に、現在Nightlyとして公開されているFirefox 112aにおいて、開発者向けの設定である「about:config」ページから「javascript.options.wasm_gc」と「javascript.options.wasm_function_references」の設定を「true」にすることで、試験的なWebAssemblyのガベージコレクション機能が有効にできることが分かりました。
ちなみに、Google Chromeと同じWebブラウザエンジンを採用しているMicrosoft Edgeでも、同様に(あるいは必然的に)WebAssemblyのガベージコレクション対応が進んでいます。
WebAssemblyのガベージコレクション機能はまだ仕様策定段階です。
そのため、現時点でWebAssemblyバイナリを生成できるプログラミング言語は、基本的にはプログラマが完全にメモリを管理するC++や、シンプルな仕組みで自動的にメモリ管理が行われるRustのようなプログラミング言語が対象となっています。
JavaやPython、Rubyなど、プログラミング言語のランタイムが自動的にメモリ管理とガベージコレクションを行う仕組みを備えている言語でWebAssemblyバイナリを生成した場合、WebAssemblyランタイムにガベージコレクション機能が備わっていることが望ましいと考えられます。
WebAssemblyに対するガベージコレクション機能の拡張は、こうした言語でのWebAssembly対応が主な目的です。
そしてDartとKotlinが相次いで、WebAssemblyのガベージコレクション機能の対応を発表していることから、比較的早期にWebAssemblyのガベージコレクション機能対応とそれによる言語対応の実装が進んでいくと期待されます。
関連記事
- KotlinからWebAssemblyバイナリを生成するコンパイラ搭載、「Kotlin/Wasm」が試験的プレビュー公開。Kotlin 1.8.20ベータ版で
- Flutterが進化する方向とは? WebAssemblyサポート、コンポーネントとしてWebアプリに組み込み可能に。Flutter Forward 2023