Nanobrew: Homebrew와 호환되는 가장 빠른 macOS 패키지 매니저

Nanobrew: The fastest macOS package manager compatible with brew

요약

Zig로 작성된 Nanobrew는 Homebrew 대비 7,000배 빠른 macOS 패키지 매니저이며, 2MB 단일 바이너리로 Ruby 런타임 없이 동작한다.

핵심 포인트

  • 동시 다운로드, 추출, 재배치, 의존성 해결로 극적인 성능 향상 달성
  • Copy-on-write 구현으로 설치당 디스크 오버헤드 제로, SHA256 기반 중복 제거로 재설치 시 다운로드 스킵
  • Ruby 런타임 제거로 약 2MB 단일 바이너리만 필요하며 interpreter 오버헤드 완전 제거

왜 중요한가

macOS 개발자의 일일 워크플로에서 패키지 설치 시간을 급격히 단축하며, 특히 M1/M2 Mac에서 Homebrew의 성능 병목을 해결한다.

📄 전문 번역

macOS에서 가장 빠른 패키지 매니저, Zig로 만들어졌어요

터미널을 다시 시작하거나 출력된 export 명령을 실행하면 설정이 완료됩니다.

성능이 정말 다릅니다

Homebrew보다 7,000배 빠르고, echo 명령보다도 빠릅니다.

테스트 환경은 Apple Silicon macOS 15에서 같은 네트워크 조건입니다. Cold 상태는 처음 다운로드할 때, Warm 상태는 저장소에 캐시된 상태를 말합니다.

디스크 효율이 뛰어납니다

macOS의 Copy-on-write 메커니즘을 활용해서 설치할 때마다 디스크 오버헤드를 거의 없앴어요. 각 패키지마다 실제로 필요한 부분만 메모리에 올려서 사용합니다.

동시 처리로 속도를 확보했습니다

다운로드, 압축 해제, 파일 재배치, 의존성 해석 같은 작업들을 모두 동시에 진행합니다. 한 작업이 끝날 때까지 기다릴 필요가 없어요.

프로세스 생성을 줄였습니다

curl 같은 서브프로세스를 따로 띄우지 않습니다. 대신 Zig의 표준 라이브러리에 있는 std.http.Client를 직접 사용해서 각 패키지마다 프로세스 하나를 덜 만들게 되었어요.

바이너리 검사를 효율적으로 합니다

otool 같은 외부 도구를 부르지 않고 바이너리 헤더의 로드 명령을 직접 읽습니다. 코드 서명 검증도 일괄 처리해요.

설치 재실행이 빠릅니다

SHA256 키 기반 중복 제거 덕분에 같은 패키지를 다시 설치할 때 다운로드와 압축 해제를 완전히 건너뜁니다.

가볍고 간단합니다

Ruby 런타임이 필요 없고, 별도의 인터프리터 시작 시간도 없습니다. 복잡한 설정 파일도 없어요. 그냥 약 2MB 크기의 바이너리 하나면 됩니다.