Nanobrew: brew와 호환되는 가장 빠른 macOS 패키지 매니저
Source: Hacker News
nanobrew – Zig 로 작성된 가장 빠른 macOS 패키지 관리자입니다.
curl -fsSL https://nanobrew.trilok.ai/install | bash
그런 다음 터미널을 재시작하거나 출력된 export 명령을 실행하세요.
속도
Apple Silicon, macOS 15, 동일 네트워크 환경.
Cold = 새로 다운로드. Warm = 스토어에 캐시됨.
| 벤치마크 | brew (시간) | nb (시간) | 속도 향상 |
|---|---|---|---|
| tree / 0 의존성, cold | 8.99 s | 1.19 s | 7.6배 빠름 |
| wget / 6 의존성, cold | 16.84 s | 11.26 s | 1.5배 빠름 |
| ffmpeg / 11 의존성, warm | ~24.5 s | 3.5 ms | 7,000배 빠름 |
빠른 시작
$ nb install jq
==> Resolving dependencies...
[38ms]
==> Installing 1 package(s):
jq 1.7.1
==> Downloading + installing 1 packages...
✓ jq
==> Done in 1102.4ms
$ nb list
jq 1.7.1
$ nb update # self‑update nanobrew
==> Updating nanobrew...
==> nanobrew updated successfully
작동 방식
- Resolve – 동시 API 호출을 통한 BFS 병렬 의존성 해결.
- Download – 단일 패스 스트리밍 SHA256 검증을 지원하는 네이티브 HTTP.
- Extract – SHA256을 키로 하는 콘텐츠 주소 지정 스토어에 압축 해제.
- Materialize – APFS
clonefile로 Cellar에 복제 — 복사 시 쓰기, 디스크 사용량 0. - Link – 바이너리를
PATH에 심볼릭 링크하고 로컬 데이터베이스에 기록.
왜 빠른가
APFS clonefile
macOS 시스템 콜을 통한 복사 시 쓰기 물질화. 설치당 디스크 오버헤드 0.
모든 작업을 병렬화
다운로드, 압축 해제, 재배치, 의존성 해결이 모두 동시에 실행됩니다.
네이티브 HTTP
Zig std.http.Client 가 curl 서브프로세스 호출을 대체합니다. 병당 프로세스가 하나 줄어듭니다.
네이티브 Mach‑O
바이너리 헤더에서 로드 명령을 직접 읽습니다. otool 불필요. 배치된 코드 서명.
콘텐츠 주소 지정 스토어
SHA256 키 기반 중복 제거로 재설치 시 다운로드와 압축 해제를 완전히 건너뜁니다.
단일 정적 바이너리
Ruby 런타임, 인터프리터 시작, 설정 파일 복잡성 없이 ~2 MB 크기의 단일 바이너리만 존재합니다.