TypeScriptをコンパイルしてWebAssemblyバイナリに、実現を目指す「TypeScript Compilation SIG」をByteCode Allianceが発表
今回は「TypeScriptをコンパイルしてWebAssemblyバイナリに、実現を目指す「TypeScript Compilation SIG」をByteCode Allianceが発表」についてご紹介します。
関連ワード (必要、表明、適用等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
WebAssemblyの普及と発展を目的とするByteCode Allianceは、TypeScriptのコードをコンパイルしてWebAssemblyバイナリを生成できるようにすることを目指すスペシャルインタレストグループ「TypeScript Compilation SIG」を発表しました。
WebAssemblyの仕様策定はW3Cが行っており、ByteCode AllianceはそのWebAssemblyを基盤として、クロスプラットフォーム対応を実現するAPI群のWASI(WebAssembly System Interface)やコンポーネントモデル、ガベージコレクション対応などの拡張、およびそれらの事実上のリファレンス実装であるWebAssemblyランタイムWasmTimeの開発などを行っています。
参考:WebAssemblyをあらゆるプラットフォームでセキュアに実行できるようにする「Bytecode Alliance」発足。インテル、Mozilla、Red Hatなど
TypeScriptをWebAssemblyにコンパイルできるようにする
TypeScript Compilation SIGは3月にプロポーザルが公開されていました。
このプロポーザルによると、TypeScript Compilation SIGの主な目的は、TypeScriptプログラムをWebAssemblyにコンパイルできるようにし、Webブラウザとスタンドアロンの両方のWebAssemblyランタイムで実行可能にするための適切なソリューションを、WebAssemblyガベージコレクション(WasmGC)の仕様提案に基づいて記述し改良すること、とされています。
活動の範囲は、TypeScriptのWebAssemblyへのコンパイル、Any typeなどTypeScriptの言語仕様をサポートするために必要なランタイムAPIの定義、動的型付け言語のサポートを強化するためにWebAssemblyをどのように発展させるかの検討などとなっています。
すでにTypeScriptライクな「AssemblyScript」と呼ばれるプログラミング言語では、WebAssemblyへのコンパイルを実現しています。しかしTypeScript Compilation SIGではTypeScript言語のフォークによる実現は意図しておらず、言語仕様のサブセットの適用や型システムの追加、ライブラリの利用など拡張によって実現し、それをTypeScriptのコアチームと連携しつつTypeScriptのアップストリームに反映すると説明しています。
WasmGCの登場でTypeScriptだけでなく対応言語が広がる
WebAssemblyにガベージコレクション機能を追加し、新しいプログラミング言語に対応を広げる動きはTypeScriptに限ったものではありません。
WebAssemblyはこれまでガベージコレクション機能を備えておらず、そのためにプログラマが完全にメモリを管理するC++や、シンプルな仕組みで自動的にメモリ管理が行われるRustのようなプログラミング言語などをコンパイルし生成することが一般的でした。
WebAssemblyにガベージコレクション機能が追加されることで、JavaやPythonやRubyなど、ランタイムが自動的にメモリ管理を行うプログラミング言語などのWebAssembly対応が期待できます。
すでにWebAssemblyのガベージコレクション対応の実装は始まっており、それを前提にDart/FlutterやKotlin/Wasmなどの言語やフレームワークがWebAssembly対応を表明しています。
- WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
- FirefoxもWebAssemblyのガベージコレクション機能を実装中であることが明らかに
- SafariもWebAssemblyのガベージコレクション機能の実装に着手。Technology Preview 167で明らかに
TypeScriptはWebアプリケーションの開発を中心に幅広く使われているプログラミング言語です。TypeScriptのプログラムがWebAssemblyへコンパイル可能になれば、WebAssemblyの普及に大きく貢献することは確実でしょう。