Googleは米国時間1月4日、標準的なPythonインタープリタの代替となるアプローチとして、Pythonコードを「Go」言語にトランスパイル(変換)する「Grumpy」というプロジェクトを発表した。Grumpyは、コンカレント(並行)ワークロードにおいて同社が抱えているパフォーマンス上の不満を解消するために生み出されたものだという。
GrumpyはApacheライセンスの下で公開されている。PythonのソースコードをGoのソースコードに変換し、ネイティブコードとして実行できるようにコンパイルするGrumpyは、純粋なPythonコードが使用するランタイムとの互換性に軸足を置いて設計されている。
GitHub上の同プロジェクトのページには「これは、Grumpyには仮想マシン(VM)がないことを意味している。コンパイルされたGoのソースコードは、Grumpyランタイムへの一連の呼び出しとなる。Grumpyランタイムとは、PythonのC言語APIと同様の目的を果たすGoのライブラリだ」と記されている。
GoogleのYouTube担当エンジニアであるDylan Trotter氏は同社ブログへの投稿で、GrumpyプログラムはGoのパッケージをインポートできるとともに、参照カウント方式ではなく、Go内部でのガーベッジコレクションを利用できるが、設計上の選択により、C言語で記述されたPythonの既存拡張モジュールを利用できないと述べている。
Trotter氏は同投稿で「Grumpyは、C言語で記述され、大量に存在しているPythonの拡張モジュールを使用できない。しかしこれによって、並列作業向けのスケーラビリティに優れたAPIやオブジェクト表現の設計に大きな柔軟性がもたらされる」と述べるとともに、「現実世界の多くのワークロードにおけるスケーラビリティという観点で、われわれはGrumpyがCPythonよりも優れた力を秘めていると考えている」と述べている。
「これはまだアルファ版のソフトウェアだが、言語構造のほとんどと、核となる多くの組み込み型は期待通りに動作している。ただ、やるべきことはまだまだある。メソッドや属性の実装されていない組み込み型が数多くあり、組み込み関数も実装されておらず、標準ライブラリはないに等しい状態だ」(Trotter氏)
Trotter氏によると、同プロジェクトを開始したのは、YouTube上でのPythonの実行状況を改善する必要性に迫られてのことだという。YouTubeのフロントエンドでは、コンカレントワークロードを効率的に取り扱うためにPython 2.7が使用されている。
Goは、Googleが扱うような大規模ワークロードをプログラミングするために、Robert Griesemer氏とRob Pike氏、Ken Thompson氏によって2007年に生み出され、2009年11月に披露された言語だ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。