Adobe Alchemy

2008年7月、C言語で開発されたアプリケーションやPythonスクリプトがFlash Playerで動作するようになったという報告が複数のブログに掲載されていた。どうやらこの取り組みは一時的なものでも噂でもコンセプトプルーフでもなかったようだ。

Adobe LabsにAlchemyと呼ばれるプロジェクトが登場した。噂されていた内容がそのままプロジェクトになっている。

AlchemyはC/C++で開発されたコードをActionScript仮想マシン(AVM2)で動作するコードにコンパイルするための研究プロジェクトコード名。C/C++で開発された既存のライブラリをFlash PlayerやAdobe AIRで動作するWebアプリケーションから活用できるようにすることを目指している。Flash PlayerやAdobe AIRのポテンシャルを一気に向上させる可能性がある。

Alchemyの仕掛けは報告されていたとおりだ。要するにAlchemyの取り組みとは、LLVMのActionScript仮想マシンバックエンドを開発することにある。LLVMのC/C++フロントエンドを使ってLLVM中間形式バイトコードを生成し、LLVMコードからActionScript仮想マシンバイトコードに変換する。すでにLLVMというプラットフォームがありC/C++フロントエンドが提供されている。あとはActionScript仮想マシンバックエンドを開発すれば完成というわけだ。

Alchemyで対象とするのはOS処理にあまり依存していないC/C++ライブラリ。特にコーデック、データ操作、XMLパース、暗号処理、物理計算など計算能力が必要とされるケースを想定しているという。Alchemyで変換されたコードはActionScript 3.0よりもかなり高速に動作し、ネイティブC/C++コードよりは2倍から10倍遅く動作するとみられる。

プロジェクトページで触れられている説明ではC/C++ライブラリが主要な対象のようだが、LLVMの仕組み上、ほかの言語のフロントエンドを使えばそうしたプログラミング言語もFlash PlayerやAIRで動作することになる。FlashやAIRのポテンシャルを高めるプロジェクトとして大きく注目しておきたい。