このプロジェクトについて

PerryはTypeScriptとJavaScript用の事前コンパイラで、Rustで実装されています。解析にはSWC、コード生成にはLLVMを使用し、JavaScriptエンジンを同梱する代わりにスタンドアロンのマシンコードバイナリを生成します。READMEではNode.js、Bun、Electronと比較し、ランタイムインストール不要、小さなバイナリ(hello worldで約330KB)、瞬時のコールドスタートを強調しています。 ターゲットにはmacOS、Windows、Linux、iOS、iPadOS、visionOS、tvOS、watchOS、Android、Wear OSに加え、WebとWebAssembly出力が含まれます。SwiftUIに似たUI APIはWebViewではなくネイティブプラットフォームウィジェット(AppKit、UIKit、Android Views、Win32、GTK4)にコンパイルされ、ホーム画面ウィジェットのサポートも言及されています。 READMEによると、53のnode:*モジュールにわたりNode自身のテストスイートで約97%の合格率を主張しており、fs、http/http2、net/tls、crypto、stream、child_process、worker_threads、fetch、Webグローバルの実装に加え、Fastify、Express、mysql2、pg、ioredis、ws、bcrypt、jsonwebtokenなど約50のnpmパッケージとの互換性があります。プレーンなJavaScriptもサポートされています。 並行性はparallelMap、parallelFilter、spawnを通じて実際のOSスレッドで公開されており、コンパイラは共有可変状態を拒否するため、データ競合はコンパイル時に失敗します。標準ライブラリはデータベース、WebSocket、コンテナ、i18n、キーチェーン、通知、自動更新、TUIフレームワークをカバーしています。 パフォーマンス数値はオープンなベンチマークハーネス(Apple M1 Max、繰り返し実行の中央値)から公開されており、画像畳み込み、再帰的フィボナッチ、JSONパイプライン、オブジェクト割り当て、配列書き込みをカバーし、Node.js、Bun、Rustと比較しています。READMEはV8のJITが依然として勝るワークロードを明示的に指摘し、結果を再現できるようハーネスと方法論へのリンクを提供しています。 インストールはnpm(@perryts/perry)、Homebrew、winget、APT、Scoop、インストールスクリプト、またはソースビルドから利用可能です。一般的な使用法は`perry init`、`perry run`、`perry compile src/main.ts -o myapp`で、セットアップ確認には`perry doctor`を使用します。テレメトリはオプトインで、設定または環境変数で無効化できます。 Perryで構築されたプロジェクトには、Bloom Engine(ネイティブTypeScriptゲームエンジン)、Mango(ネイティブMongoDB GUI)、Hone(AI搭載コードエディタ)、dB Meter(騒音計)が含まれます。このプロジェクトはMITライセンスで、Discordコミュニティと公開イシュートラッカーとともにオープンに開発されています。