Mozillaの研究部門に所属しているAtul Varma氏のブログにおいて、Running C and Python Code on The Webのタイトルで興味深い内容が紹介されている。タイトルだけ見るとWebアプリケーションでC言語やPythonのコードを実行すると言う話のようだが…
同氏のブログによれば、Adobe Systems, Scott Petersen氏が現在C言語で作成したコードをTamarin仮想マシンで実行できるようにするツールチェインを開発しており、近々オープンソースソフトウェアとして公開するという。TamarinはAdobeからMozillaへ寄贈されたJavaScriptエンジンだ。Firefox 3.0には取り込まれていないが将来的にはTamarinベースのJavaScriptエンジン実装がFirefoxに取り込まれるとみられている。時期は未定だがFirefox 4からの導入が濃厚だろう。
Scott Petersen氏の取り組んでいる内容は次のようなもの。
- CソースコードをLLVM命令へ変換する(llvm-gccかまたはこれのカスタム版か)
- LLVM命令をActionScriptが実行できる仮想マシン向けの命令へ変換
- Adobe FlashにActionScriptをかませることで自動的にTamarinバイトコードへ変換
- TamarinバイトコードはTamarin JITによって実行時にネイティブコードへ変換され実行
ActionScriptに変換されてからは、いくつかの拡張は必要になるものの基本的に現在実現されている処理に載せるだけだ(3. 4.が該当)。彼の取り組みで注目すべきところは、CをいったんLLVM命令に変換したあとでActionScriptへ変換しているところにある。ActionScriptはECMAScriptの一種で、JavaScriptによく似ている。
Scott Petersen氏によって開発されているツールチェインはFlashにアクセスするためのCライブラリやカスタムPOSIXシステムコールAPIなども含められているという。またオーバーヘッドの少ないメモリマッピングも検討されているようだ。
これはC言語で開発されたアプリケーションがAdobe Flashで動作するようになることを意味している。Scott Petersen氏のデモンストレーションではFlashで動作するQuakeゲームやゲームエミュレータなどが示されたという。さらに同氏はC言語でコンパイルされたLua、Ruby、Perl、PythonがFlashで動作している様子も示したという。
AdobeやScott Petersen氏から正式発表はまだおこなわれていないため、事の真相については定かではないが、これが事実であればFlashは強力なサンドボックスプラットフォームになる可能性が高い。FlashでCベースのアプリケーションが動作するようになるほか、RubyやPython、Perlスクリプトが使えるようになる。もちろんOSネイティブに動作する場合と比較して制限ははいるだろうが、強力なプラットフォームが誕生することは間違いないだろう。今後の発表に期待したい。