
2026/03/24 20:40
**Nanobrew:** Homebrew と互換性のある、macOS 用最速パッケージマネージャー。
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
要約
Nanobrew は Zig で書かれた macOS 用パッケージマネージャーで、「最速の macOS パッケージマネージャー」と称されています。インストールは次の一行スクリプトで実行します:
curl -fsSL https://nanobrew.trilok.ai/install | bash
インストール後、
nb install jq コマンドは依存関係を約 38 ms で解決し、jq 1.7.1 のインストールをわずか 1 102 ms で完了します。ffmpeg(11 個の依存関係)のウォームインストールは Homebrew より 7 000 倍 が速く、コールドインストールも大幅に高速です(例:tree は 7.6 倍、wget は 1.5 倍)。
Nanobrew のワークフローは Homebrew と同様ですが、各ステージを最適化しています:
- 依存関係解決 – 幅優先探索で並列 API 呼び出し。
- ダウンロード – ネイティブ HTTP クライアントを使用したストリーミング SHA256 検証(サブプロセス不要)。
- 展開 – ファイルは SHA256 キーのコンテンツアドレス可能ストアに保存され、APFS の clonefile によってマテリアライズされるため、コピーオンライトでディスクコストがゼロ。
- リロケーションとリンク – バイナリはユーザーの PATH へシンボリックリンクされ、ローカルデータベースに記録されます。
性能向上はすべてのステージを並列実行し、ネイティブ Mach‑O ヘッダー解析(
otool 不要)、バッチコードサイン、コンテンツアドレス型重複排除によって達成されています。単一静的バイナリ(約 2 MB)はインタプリタ起動オーバーヘッドがなく、迅速に起動します。
Nanobrew は Apple Silicon 上の macOS 15 で動作し、すべてのテストは同じネットワーク環境でベンチマークされました。
nb update による自己更新をサポートし、軽量ネイティブマネージャーが従来ツールに比べて高速インストールと低ディスク使用量を実現できることを示しています。本文
nanobrew
最速のmacOSパッケージマネージャ。Zigで書かれています。
curl -fsSL https://nanobrew.trilok.ai/install | bash
その後、ターミナルを再起動するか、表示されたエクスポートコマンドを実行してください。
3.5 msでウォームインストール
Homebrewの7,000倍速 – echoよりも高速です
スピード(Apple Silicon, macOS 15, 同一ネットワーク)
| シナリオ | 依存関係 | 結果 |
|---|---|---|
| 0 | **7.6×**速い(クール) |
| 6 | **1.5×**速い(クール) |
| 11 | **7,000×**速い(ウォーム) |
クイックスタート
$ nb install jq ==> 依存関係を解決中... [38ms] ==> パッケージ1個をインストール中: jq 1.7.1 ==> パッケージ1個のダウンロードとインストール... ✓ jq ==> 完了 (1102.4 ms) $ nb list jq 1.7.1 $ nb update # nanobrew の自己更新 ==> nanobrew を更新中... ==> nanobrew が正常に更新されました
動作概要
| ステップ | アクション |
|---|---|
| 01 | Resolve – 同時 API コールで並列 BFS 依存関係解決 |
| 02 | Download – ネイティブ HTTP とストリーミング SHA256 検証(1パス) |
| 03 | Extract – SHA256 キー付きコンテンツアドレス型ストアに展開 |
| 04 | Materialize – APFS clonefile で Cellar にクローン (コピーオンライト、ディスクコストゼロ) |
| 05 | Link – バイナリを PATH にシンボルリンクし、ローカル DB に記録 |
なぜ高速なのか
- APFS clonefile – macOS のシステムコールでコピーオンライト実装。インストールごとにディスクオーバーヘッドゼロ。
- すべてを並列化 – ダウンロード、展開、リロケーション、依存解決が同時実行。
- ネイティブ HTTP – Zig の
が curl サブプロセスを置き換え、ボトルごとに1つのプロセス削減。std.http.Client - ネイティブ Mach‑O – バイナリヘッダから直接ロードコマンドを読み取り(otool不要)。コード署名はバッチ処理。
- コンテンツアドレス型ストア – SHA256 キーで重複排除し、再インストール時にダウンロードと展開を完全スキップ。
- 単一の静的バイナリ – Ruby ランタイムもインタープリタ起動も不要。設定ファイルもほぼ存在せず、約2 MB のシンプルな実行ファイルだけです。