Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Antは、ゼロから構築された軽量で高性能なJavaScriptランタイムです

Antは、わずか9.1 MBの単一バイナリ内でV8に近い速度体験を提供し、大規模なダウンロードや複雑なツールチェーンのセットアップの必要性を排除します。他の多くのランタイムとは異なり、AntはV8、JSC、またはSpiderMonkeyのラッパーではありません。Ant Silverと呼ばれる独自の自作エンジンを使用しています。

極限のバイナリサイズとコールドスタート性能

Antは、最小限のフットプリントと迅速な初期化のために設計されています。ランタイムのバイナリサイズは9.1 MBであり、これは従来のJavaScriptランタイムよりも大幅に小さいものです。この効率性は、より高速なコールドスタートに直結します。Honoをインポートし、2つのルートを登録して終了するまでの時間を測定するベンチマークでは、Antは5.4 msのコールドスタート時間を記録し、Bun (12.8 ms)、Deno (24.8 ms)、およびNode.js (31.1 ms)を上回りました。

ネイティブエコシステムとTypeScriptサポート

Antは既存のJavaScriptエコシステムと互換性があり、実際のnpmパッケージをサポートしています。WinterTC標準に準拠しており、100%の互換性スコアを維持しています。Hono、Elysia、TypeScript、React、およびRolldownなどの人気のあるフレームワークやツールと動作します。

開発者体験における主な機能は以下の通りです:

  • Zero-config TypeScript: Antは、tsconfigファイル、バンドラー、または個別のビルドステップを必要とせずに、TypeScriptファイルを直接実行します。
  • Direct Server Execution: Antはデフォルトのfetch exportを提供し、Honoのようなフレームワークがアダプターなしで動作することを可能にします。開発者は単にant server.jsを実行するだけでサーバーを開始できます。
  • Fast Package Installation: Antは、npmよりも最大40倍高速であると報告されている独自のパッケージインストールメカニズムを備えています。

ハードウェア分離型サンドボックス

Antは、信頼できないJavaScriptコードを実行するために、VM分離型のサンドボックスを提供します。単純な権限プロンプトとは異なり、これはKVMまたはHypervisor.framework VMを介して実装されたハードな境界であり、各サンドボックスがハードウェアによって分離された独自のインスタンスであることを保証します。

サンドボックスの機能は以下の通りです:

  • Read-only Mounts: 書き込みアクセスが明示的に許可されない限り、ファイルシステムは不変(immutable)としてマウントできます。
  • Network Control: ネットワークアクセスはデフォルトで拒否され、具体的に指定されたポートのみが転送されます。

ants.land レジストリ

Antは、npmプロトコルに対応するオープンレジストリであるants.landを導入しました。これにより、パッケージはスコープまたはベアネームで公開およびインストールが可能になります。また、パッケージはesm.ants.landを介してブラウザから直接アクセスすることも可能です。

コミュニティのフィードバックと検討事項

Antプロジェクトは、その小さなバイナリサイズと組み込みの可能性により関心を集めていますが、コミュニティはさらなる開発に向けたいくつかの点を指摘しています:

"I hope you get some collaborators, to increase the bus factor. You might want to want to write a roadmap to focus efforts."

さらに、プロジェクトの作者であるtheMackabuは、最近のリリースにおいて、インストール中のlibcaresエラーにより、静的なリリースホットフィックスが必要になったと述べています。

Sources