prism

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

3posts · 30d
Nov 40 posts
  1. Zenn · · @zorro

    zerobrew で cask が入らなかったので、AI と Homebrew 互換の nextbrew を作った はじめに Homebrew の遅さが気になって、Rust 製の速いクライアントの zerobrew を使っていました。速さには満足していたものの、GUI アプリなどの cask はうまく入らないことが多くありました。 直してもらうのを待つより、今なら AI を使えば自分で OSS を作れるのではと思い、zerobrew をフォークして作り始めたのが nextbrew です。Homebrew の bottle と cask をそのまま使いつつ、Ruby も Homebrew 本体も使わずにインストールします。 nextbrew/nextbrew 何も入っていない状態から bat、fd、ripgrep(依存を含めて10パッケージ)をインストール。GitHub Actions の macOS ランナーで録画 左が nextbrew、右が Homebrew です。nextbrew は 2.8 秒、Homebrew は 43.7 秒でした。 試し方 curl -fsSL nextbrew.dev | bash nb migrate # 今の Homebrew 環境をまとめて移す nb install jq nb install cask:ghostty nextbrew は Homebrew と prefix を共有せず(macOS は /opt/nextbrew)、Homebrew には手を加えません。今の環境はそのままで、並べて試せます。やめたくなったら nb reset して prefix を消せば元どおりです。 どれくらい速いか よく使われる formula 22個(jq、git、node、go、ruby、gh など)をインストールした時間です。 Cold(キャッシュなし) Warm(ダウンロード済み) nextbrew 0.1.2 20.5 秒 2.8 秒 zerobrew 0.4.2 33.8 秒 8.3 秒 nanobrew 0.1.212 56.6 秒 23.3 秒 wax 0.20.31 110.7 秒 107.4 秒 Homebrew 7.0.10 260.6 秒 226.1 秒 計測の条件 GitHub Actions の macos-latest(Apple M2 Pro 仮想5コア、macOS 26.6.2)で3回計測した中央値です。計測日は 2026-10-25 です。 Cold は formula も依存も入っておらず、ダウンロードのキャッシュもない状態です。 Warm は一度アンインストールして、ダウンロードしたファイルだけ残した状態です。 特定のクライアントがいつも最初に CDN からダウンロードすることにならないよう、formula ごとに実行順を入れ替えています。 計測スクリプト、ワークフロー、formula ごとの結果はリポジトリにあります。条件の細かい違い(nanobrew は post_install を実行しない、など)は ベンチマークのページ にまとめました。 何が速さに効いているか Homebrew との差の大部分は、フォーク元の zerobrew の設計から来ています。zerobrew との差(Cold で 33.8 秒→20.5 秒、Warm で 8.3 秒→2.8 秒)が、nextbrew で足した部分です。 zerobrew から受け継いだのは次の3つです。 依存を解決したら、bottle をまとめて並列にダウンロードする。 展開した bottle はハッシュをキーにしたストアに一度だけ置き、Cellar にはそこから APFS の clonefile(Linux ではハードリンク)で複製する。同じ bottle を入れ直すときは、展開もコピーもほぼ要りません。 Ruby を起動しない。Homebrew はコマンドのたびに Ruby を立ち上げて formula を評価しますが、formula の情報は formulae.brew.sh の JSON API から取ります。 nextbrew で足したのは、主に次のところです。 大きいファイルを HTTP の Range リクエストで分割し、接続数を調整しながら取る。 Cellar へのリンクを並列に張ってシステムコールを減らし、署名する対象も実行ファイルとライブラリに絞る。 ca-certificates の CA バンドルを、ダウンロード中に並行して作る。 サードパーティの tap は JSON API がないので .rb を読むしかありません。Prism でパースして、formula の DSL を Rust 側で評価しています。Ruby が実際に動くのは、ソースからビルドするときだけ。 Homebrew との互換性 今の Homebrew 環境からそのまま移れるように、互換性にはかなり時間を使いました。zerobrew にもあった cask、tap、migrate、ソースビルドは対応範囲を広げ、service と brew 互換のコマンドは新しく足しています。 zerobrew で困っていた cask は、app、pkg、dmg、zip などに対応していて、preflight/postflight も実行します。 nb migrate は、Homebrew で入れた formula、cask、tap、pin、service を nextbrew に移します。実行前に計画を表示して確認を求め、移せなかったものは Homebrew に残します。 Homebrew に jq、ripgrep と cask の Rectangle を入れた状態から nb migrate を実行。GitHub Actions の macOS ランナーで録画 service は macOS では launchd、Linux では systemd で動かします。Brewfile(nb bundle)も読めて、コマンドの名前、オプション、終了コードは brew に合わせました。 対応状況の詳細は 互換性のページ にあります。 開発での AI の使い方 開発には Claude Code を使っています。フルオートで作り切れるわけではありませんが、問題点を洗い出して一つずつ対処していけば、誰でも作れるくらいに今の AI は優秀になっていると実感しました。AI に指示を出すときには、これまでのエンジニアとしての知識も役に立っています。 コードは CI(macOS と Debian、Fedora、Arch、openSUSE)のテストを通してからマージしています。 既知の制限 まだ 0.1.x です。1.0 までは破壊的な変更が入る可能性があります。 Intel Mac には対応していません(Apple Silicon の macOS と Linux のみ)。 tap の formula を Rust で評価しているので、凝った Ruby を書いている tap では動かないことがあります。 おわりに 動かない tap や cask を見つけたら、Issue で教えてもらえると助かります。気に入ったら GitHub のスターをもらえると励みになります。

  2. Uses Ruby Prism, so need to do more testing to see how (if!) it holds up.

  3. @jpcamara Yeah a lot github.com/ruby/prism/blob/main/CHANGELOG.md. Note too many on the Ruby side, but a ton through native code.

    25 views

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

Scan pending.

README badges

Embed a badge in your README or website.

Live mentions · last 30 days
ruby/prism mentions in the last 30 days