Top 100 Homebrew formulae and top 100 casks now run through nanobrew's own Zig install path. Covered packages do not need Homebrew installed, do not spawn brew, and do not touch the Ruby metadata path.
359 verified native paths: 256 formula records plus 103 cask records. nanobrew resolves, downloads, verifies, extracts, caches, links, shims, and records install state itself.
nb update # to v0.1.192
yt-dlp target reinstall: nanobrew 48.8ms → zerobrew 1830.7ms → Homebrew 5827.7ms. Sandboxed macOS Actions runner, 5 iterations.
Target reinstall means dependencies and cache/store were primed, then only yt-dlp was removed and installed again. Current nanobrew runs as nb install --shims yt-dlp and smoke-tests that yt-dlp --version works while dependency tools stay private.
The shimmed path exposes the requested tool while keeping dependency executables out of the global prefix.
$ nb install --shims yt-dlp ==> Using verified upstream release metadata for yt-dlp ==> Installing dependencies privately for shim runtime ==> Linking requested command through prefix/bin/yt-dlp ==> Done in 48.8ms on the target reinstall benchmark $ yt-dlp --version 2026.03.17 $ ls /opt/nanobrew/prefix/bin/deno /opt/nanobrew/prefix/bin/python3.14 not exposed globally; shim PATH is private
x86 is not supported in v0.1.192 because of a Rosetta signed-binary bug. Fresh unsigned x86 builds run under Rosetta with status 0, but signed/notarized x86 exits 139. A universal signed binary also runs the arm64 slice fine while the x86 slice still exits 139. Apple accepts notarization, but the actual Rosetta smoke test fails, so the x86 artifact is not safe to release as-is.
Thanks to @SteveXFLiu for the cask MountFailed/ExtractFailed report that drove the cask installer IO fix in this branch.
Thanks to @jet10000 and @edvardm for the x86 startup crash reports. Those reports are why this release now calls out the Rosetta signed-binary blocker instead of publishing a broken x86 artifact.
The embedded registry now carries 256 formula records and 103 cask records, covering 100/100 top Homebrew formulae and 100/100 top casks from the April 25, 2026 snapshot.
Covered packages do not shell out to brew, require a Homebrew prefix, or boot Ruby. Bottle-backed records still use verified artifact URLs and checksums; nanobrew owns the install work.
Already-installed shimmed packages now exit through the native state path in single-digit milliseconds on CI, 548.9x faster than v0.1.191 in the same workflow.
nb install --shims yt-dlp exposes yt-dlp but keeps helper binaries such as deno and python private, then injects them only into the wrapper's PATH.
GitHub Actions now compares current nanobrew, previous nanobrew, Homebrew, and pinned zerobrew on disposable macOS runners without polluting a developer machine.
nb telemetry off and nanobrew telemetry off make opt-out explicit. Events are anonymized and intended to prioritize which native paths to build next.
v0.1.192 moves the common path out of metadata lookup and into nanobrew's own install machinery.
| Phase | v0.1.192 behavior | Why it matters |
|---|---|---|
| Resolve | Loads the verified upstream registry from local cache, hosted registry, or embedded fallback and parses the matching record. | No full formula-list parse on the hot path. |
| Fetch | Uses Zig native HTTP with streaming SHA256 verification and content-addressed blob caching. | No curl process and no second hash pass. |
| Extract | Uses native source-archive, bottle, and cask pipelines with cached relocated store entries. | Reinstalls skip repeated download/extraction/relocation work. |
| Link | Repairs links only when needed and can create wrapper shims for private dependency runtimes. | Common already-installed and target-reinstall paths stay tiny. |