SafariもWebAssemblyのガベージコレクション機能の実装に着手。Technology Preview 167で明らかに
今回は「SafariもWebAssemblyのガベージコレクション機能の実装に着手。Technology Preview 167で明らかに」についてご紹介します。
関連ワード (メモリ、実装中、着手等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Apple製品の標準的なWebブラウザとして使われているSafariで、WebAssemblyのガベージコレクション機能(WebAssembly GC)の実装に着手されたことが明らかになりました。
Safari Technology Preview 167 is now available with updates to Web Inspector, CSS, JavaScript, WebAssembly, Media, Popover, Rendering, Web API, and more.https://t.co/KNqMNv9amo pic.twitter.com/WlknQwNM2y
— WebKit (@webkit) April 5, 2023
4月5日付で公開されたSafari Technology Preview 167のリリースノートにおいて、以下の項目が示されています。
Implemented initial minimal JS API for Wasm GC behind flag (261544@main)
これにより、WebAssembly GCのための最小限のJavaScript APIの実装に着手したことが分かります。
今後どのようなペースで実装が進むのかは不明ですが、これで少なくともChrome、Firefox、Safariの代表的なモダンブラウザでのWebAssembly GCの実装が開始されたことになるわけです。
- WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
- FirefoxもWebAssemblyのガベージコレクション機能を実装中であることが明らかに
WebAssembly GCで今後さまざまな言語がWebAssembly対応に
WebAssemblyのガベージコレクション機能はまだ仕様策定段階ですが、実装されればJavaやPython、Rubyなど、プログラミング言語のランタイムに自動的にメモリ管理とガベージコレクションを行う仕組みを備えている言語をWebAssembly化することが容易になります。
現時点ではWebAssemblyにガベージコレクションがないため、WebAssemblyバイナリを生成できるプログラミング言語は、基本的にはプログラマが完全にメモリを管理するC++や、シンプルな仕組みで自動的にメモリ管理が行われるRustのようなプログラミング言語が中心となっています。
すでにJava言語のKotlinと、Googleが中心になって開発を進めているDart言語およびそのフレームワークではWebAssembly GCが実装されることを前提に、WebAssemblyへの対応を表明しています。
KotlinはWebAssemblyバイナリの生成機能を備えた「Kotlin/Wasm」でWebAssembly対応を表明。
- KotlinからWebAssemblyバイナリを生成するコンパイラ搭載、「Kotlin/Wasm」が試験的プレビュー公開。Kotlin 1.8.20ベータ版で
DartはWebアプリケーションフレームワークである「Flutter for Web」でFlutterからWebAssemblyへのコンパイルをサポートすることを表明しています。
- Flutterが進化する方向とは? WebAssemblyサポート、コンポーネントとしてWebアプリに組み込み可能に。Flutter Forward 2023
WebAssembly GCの標準化と実装が進むことで、これら以外にもJavaなど多くの言語のWebAssembly対応が期待され、今後さまざまな環境で実行できるWebAssemblyの存在感はさらに高まるように見えます。