概要

JavaScriptおよびTypeScriptのコードを中間表現を経てC言語に変換し、そこからネイティブバイナリやWebAssembly(WASM)を生成するAOT(Ahead-of-Time)コンパイラ「Porffor」(発音: poor-for)が、アルファ版の段階に到達した。開発者のOliver Medhurst氏が発表したもので、Node.jsなどのJavaScriptランタイムやライブラリに依存しない、軽量な独立実行ファイルを作成できる点が特徴だ。Medhurst氏は「実世界の依存関係が動き始めており、以前よりもずっと近づいている」とコメントしており、Node.js互換性の向上が現在の主要な課題だとしている。

パフォーマンスとサイズの改善

Porfforが生成する実行ファイルは、Node.jsをバンドルした実行ファイルと比較して最大で約50分の1のサイズに収まるという。この差はメモリ効率にも直結しており、1GBのメモリ環境ではNode.jsベースの構成では28個程度のアプリケーションしか同時実行できないのに対し、Porfforでコンパイルした場合は1000個以上を実行できるとしている。コールドスタート時間も100マイクロ秒以下まで短縮されており、サーバーレス環境やエッジ環境など、起動の速さとメモリ効率が重視される用途との親和性が高い。

直近の技術的改善

ベータ版に向けた開発の中では、URI関連関数の大幅な改善に加え、クロージャの最適化によって最大65%の高速化と30%のメモリ削減を達成したという。こうした細部のチューニングは、実際のJavaScriptコードベースをそのまま扱えるようにするための地道な積み重ねであり、Node.js互換性というボトルネックの解消に向けた布石といえる。

今後の展望

現時点ではアルファ版であり、既存のNode.jsベースのWebアプリケーションをそのままコンパイルできるようになるにはまだ課題が残る。しかし、Node.js非依存で軽量かつ高速に動作するJavaScript実行環境というコンセプトは、コンテナやサーバーレス関数のコールドスタート問題に悩む開発者にとって魅力的であり、ベータ版に向けた互換性向上の進展が注目される。