プログラミング
Show HN: Meow – 第4かつ最後のJavaScriptランタイムおよびツールチェーン
Show HN: Meow – The 4th and final JavaScript runtime and toolchain (meow.style)
要約
Meowは、断片化され肥大化した現代のJavaScriptエコシステムを解決するために設計された、第4かつ最後のJavaScriptランタイムおよびツールチェーンです。Node.js、パッケージマネージャー、フォーマッター、テストランナー、リンター、チェッカー、バンドラーの機能を単一の82MBのバイナリに統合しています。V8とdeno_nodeを利用し、コードベースを一度だけOxc ASTにパースすることで、超高速なツール提供を実現しています。また、macOSのAPFS clonefileやLinux/Windowsのハードリンクを利用した0バイトのnode_modules重複排除、7msの高速ウォームインストール、Next.jsやSvelteKitのネイティブサポート、デフォルトでのサンドボックス化された`npx`実行などの特徴があります。
全文翻訳
はい、最後と言いました。コメントで戦いましょう。
しかし真面目な話、世界には基本的に厳密に3つの主要なJSランタイムがあります。(今では4つ…いや1つかな、私には分からない)。
なぜでしょうか?なぜなら、現代のJSエコシステムは断片化され、肥大化した悪夢だからです。Node、pnpm、tsc、eslint、prettier、vite。それぞれが独自のV8インスタンスを起動し、コードベースをゼロから解析し、ルートディレクトリに.json設定ファイルの墓場を残します。
meowはこれらすべてをかわいい82MBのバイナリに凝縮しました。これはドロップインのNode代替品であり、超高速なパッケージマネージャー、フォーマッター、テストランナー、リンター、チェッカー、そしてバンドラーです。
私はJSエンジンをゼロから書いたわけではありません、そこまで落ち込んではいません。meowは安定性のためにV8を使用し、deno_node(Denoチームに感謝)を介してNodeのドロップイン互換性を実現しています。
秘密のソース:meowはコードベースを一度だけメモリ内のOxc ASTに解析します。その単一のグラフが、ランタイム、リンター、フォーマッター、タイプチェッカー、およびバンドラーにネイティブに供給されます。冗長な割り当てはありません。利用可能な最速のJavaScriptツールが完全に統合されています。
0バイトの重複node_modules(シンボリックリンク地獄なし)
pnpmはクールですが、そのシンボリックリンクはフレームワークリゾルバーを壊すことで悪名高いです。meowはグローバルキャッシュに一度ダウンロードし、OSレベルのコピーオンライト(macOS APFS clonefile)または並列ハードリンク(Linux/Windows)を使用してパッケージをプロジェクトにプロジェクションします。これにより、フラットで標準的なnode_modulesがSSD上で正確に0バイトの追加消費で得られます。
7ミリ秒のウォームインストール
SHA-512暗号化検証をバックグラウンドOSスレッドにオフロードすることで、コールドインストールは約250ミリ秒、ウォームインストールは7〜15ミリ秒かかります。そして、はい、検証をスキップせずにその速さで実行します。
実際にNext.js & SvelteKitが動作します
高速なランタイムは、アプリのビルドに失敗するまで楽しい小道具です。meowはNext.js 15、Astro、SvelteKitを箱から出してすぐにネイティブに起動し、CommonJS & Nodeの組み込みサポートも完全に提供します。
デフォルトでサンドボックス化されたnpx
`npx create-next-app`を実行すると、ランダムなスクリプトがホストへのフルアクセス権を持つことになります。シャイ・フルードをそんなに自由に走り回らせるべきではありません。meow x(一時的なランナー)はデフォルトでサンドボックス化されています。ネットワークは拒否され、書き込みは現在の作業ディレクトリに制限され、クロック/エントロピーは凍結されます。 `--trust`を渡すと怪しいことを許可します。
UX
meowはルックスを非常に重視しています。T T Yで小さな女の子が吐いたように見えます。しかし、非対話型環境をインテリジェントに検出し、クリーンな標準出力に劣化させるため、CI/CDを壊すことなく組織に忍び込ませることができます。
嘘偽りなく、ベンチマークもかなり良好です。もしLLMだったら、間違いなく神話級でしょう。ベンチマークは以下にあります。
インストール(macOS / Linux):
`curl -fsSL https://meow.style/install | sh`
Web: https://meow.style
Docs: https://docs.meow.style
GitHub: https://github.com/0xchasercat/meow
さあ、誰か私と戦いませんか?「でもxxxxで動かないじゃないか!1!!!」と私に言ってください。(でも本当に、問題に遭遇した場合は、GitHub Issuesを歓迎します)。
免責事項:meowはまだ非常に初期段階です。エッジケースに遭遇するでしょうが、一般的なアプリでは完全に動作します。
ベンチマーク(https://github.com/0xchasercat/fluffybench)
パッケージマネージャー(大規模ワークスペース、コールド / 重複排除):
Meow: 248ms / 725ms
Bun: 2.7s / 3.5s
NPM: 36.7s / 55.9s
Deno: 46.7s / 55.0s
ランタイム(HTTPリクエスト | 正規表現 | コールドスタート):
Meow: 43.7kリクエスト | 89ms | 23ms
Deno: 42.0kリクエスト | 90ms | 24ms
Node: 40.3kリクエスト | 99ms | 38ms
Bun: 36.2kリクエスト | 107ms | 16ms