象の世界のアリ — Ant Runtimeに 주목すべき理由
Dockerコンテナをシンプルなクラウド関数用にパッケージングする場面を想像してみてください。10行のJavaScriptコードを書くだけで、数百メガバイトものイメージができあがります。その重量のほとんどはNode.jsです。私たちはこの「インフラ税」に慣れてしまいましたが、theMackabuという開発者は変革の時が来たと判断しました。彼らのプロジェクトAntは、わずか8MBでありながら飛ばし方を知っているJavaScriptランタイムの作成試みです。
それは何で、なぜ必要なのか
AntはCでゼロから書かれた軽量JavaScriptランタイムです。著者はNode.jsやDenoのようなV8や、BunのようなJavaScriptCoreなどの既存のエンジンは使用しませんでした。代わりに、Ant Silverという独自のエンジンを написал。
巨人が既に存在するのに、なぜ手間をかけるのか?答えは数字にあります。Node.jsの「箱出し」は約120MBです。Antは標準ビルドで8MB、サイズ最適化でコンパイルすれば4MBまで縮小できます。これは、エッジコンピューティング、組込みシステム、CLIユーティリティに最適で、そこではすべてのメガバイトとミリ秒が重要です。
印象的なコールドスタート
サーバレスアーキテクチャの主な痛点の1つは「コールドスタート」です—プラットフォームがランタイムを起動してコードの実行を開始するまでの時間です。Node.jsがおよそ30msで初期化する間、Antはわずか5msで処理します。
プロジェクトのベンチマークでは、API構築用の人気フレームワークであるHonoを使用しています。AntはHonoを読み込み、ルートを登録して終了するまで、Bunの2倍、Node.jsの5倍高速です。これはもちろん合成的な起動・終了テストですが、ランタイムの初期化時のオーバーヘッドがいかに少ないかを示しています。
技術的内部構造
一人でカスタムJSエンジンを構築するのは狂気の沙汰のように思えますが、ここにはいくつかの巧妙なソリューションがあります。Ant SilverエンジンはMIRベースのJITコンパイラを使用しています。この軽量バックエンドにより、JavaScriptコードがコンパイル言語に近い速度で実行できるようになりながら、オプティマイザが機能するためにギガバイトのRAMを必要としません。
このプロジェクトはWinterTC標準(Minimum Common API)をターゲットとしています。これは、あるサーバーサイドJS環境で書かれたコードを別の環境で変更なしで実行できるようにする試みです。現在、AntはES1〜ES6およびそれ以降の仕様との互換性テストを完全にパスしています(15,011テスト中15,011)。しかし、より包括的なテストではカバレッジは現在のところ約64%です。著者は開発は進行中であることを率直に認め、開発者が実際に必要とする機能に焦点を当てています。
どこで使えるか
Antが既にインパクトを与えられるシナリオがいくつかあります:
- マイクロCLIツール。同僚向けの小さなユーティリティを素早くダウンロードして実行する必要がある場合、4MBのバイナリはNode.jsのインストールを必要とするよりもはるかに魅力的です。
- エッジコンピューティング。分散ネットワークでコードがユーザーにできるだけ近い場所で実行される場合、小さなフットプリントと高速な起動はレイテンシに直接影響します。
- IoTと組込みシステム。メモリリソースが制約されている場所では、通常のNode.jsは単にフィットしませんが、Antは非常に馴染み深いものになります。
試す方法
インストールはこのようなツールでは標準的です:
curl -fsSL https://antjs.org/install | bash
内部を覗いて自分でビルドしたい場合は、Cコンパイラが必要です。プロジェクトは積極的に開発中で、著者は実装の内部構造についての興味深いブログを維持しており、Antがなぜ自分の50倍の重量を運ぶことができるのかを説明しています。
今日乗り換えるべきか?
正直に言いましょう:Antはまだ野心的な実験です。あなたの作品が特定のNode.jsネイティブモジュールやV8内部に依存する広範なNPMエコシステムに依存している場合、問題に直面するでしょう。
しかし、特定の条件下でJSを実行するためのミニマリストツールが必要であれば、または現代のソリューションの重量に厌倦しているなら—このリポジトリにスターを付けてください。これは業界のアーキテクチャの膨張に挑戦する一人の開発者による稀な例です。たとえAntがNode.jsに取って代わらなくても、他のランタイム開発者が最適化について考えるきっかけになるのは確実です。
関連プロジェクト