Zerobrew:Rust 打造的超快 macOS 包管理器替代方案
-
Zerobrew:Rust 打造的超快 macOS 包管理器替代方案
目录在 macOS 开发生态中,Homebrew 几乎是装机必备,自 2009 年由 Max Howell 创建以来,它已成为超过百万开发者的标配工具。然而,其基于 Ruby 的底层架构在执行速度(尤其是更新索引时)常被用户诟病。根据 GitHub 社区讨论,即使是执行简单的
brew help命令(仅打印帮助字符串),也需要约 1 秒的启动时间——这完全归因于 Ruby 运行时的加载开销。Zerobrew 应运而生,作为一款实验性的替代工具,它旨在通过底层重构彻底解决速度痛点。该项目由软件工程师 Lucas Gelfond(现任职于知名独立电影公司 A24)开发,他在布朗大学学习计算机科学与英语,此前曾在 Substack 和纽约市规划部门从事工程工作。
⚡ 核心亮点
1. 🚀 极致的执行速度
根据 Reddit 社区 的开发者测试,Zerobrew 的运行速度比 Homebrew 快 5 到 20 倍。具体而言:
场景 性能提升 冷启动(Cold Start) 约 5 倍加速 热启动(Warm Start) 约 20 倍加速 这种性能提升主要归功于以下技术架构:
- Rust 语言的高效并发处理能力:Rust 的零成本抽象和无运行时开销特性,使得 Zerobrew 在启动时无需等待解释器加载
- 流式执行管道(Streaming Execution Pipeline):下载、解压和链接操作并发执行,而非传统的串行处理模式
- 智能 HTTP 缓存:并行下载时自动去重正在进行的请求,并在多个 CDN 连接之间竞速选择最快源
2. 🦀 Rust 动力驱动
Zerobrew 是 "用 Rust 重写一切"(Rewrite It In Rust, RIIR) 浪潮中的佼佼者。这一技术趋势在 2024-2025 年持续升温,据 JetBrains 调研数据,全球已有超过 226 万开发者使用 Rust,其中 70.9 万人将其作为主要开发语言。 通过取消对 Ruby 环境的依赖,Zerobrew 显著降低了运行时的开销。
为什么 Rust 特别适合构建包管理器?
特性 对包管理器的意义 内存安全 避免缓冲区溢出等安全漏洞(据微软和 Google 统计,超过 70% 的严重漏洞源于内存安全问题) 零成本抽象 高级语言特性不带来运行时性能损失 无垃圾回收 无 GC 暂停,执行时间可预测 强大的并发原语 安全地实现并行下载和处理 3. 💾 内容寻址存储(Content-Addressable Store)
这是 Zerobrew 最具创新性的设计之一。所有软件包存储在一个基于 SHA256 哈希值的内容寻址仓库中:
/opt/zerobrew/store/{sha256}/这种设计带来的优势包括:
- ✅ 即时重装:如果存储条目已存在,重新安装几乎瞬间完成(无需重复下载)
- ✅ 天然去重:相同内容的包只存储一份,节省磁盘空间
- ✅ 版本隔离:不同版本的同一软件包可安全共存
4. 🍎 APFS Clonefile 技术集成
Zerobrew 充分利用了 macOS 的 APFS(Apple File System)原生能力,使用
clonefile系统调用从存储区物化文件。什么是 APFS Copy-on-Write?
根据 Apple 开发者文档 和技术分析,APFS 的写时复制机制允许:
逻辑上复制一个文件——它看起来和表现得像一个独立的文件——但不会立即在磁盘上复制文件内容,而是与原文件共享数据块。只有当任一副本被修改时,系统才会动态分配新存储空间用于存储修改的部分。
实际效果:
- 📁 复制操作几乎瞬时完成(仅需少量元数据写入)
- 💿 零磁盘开销:副本不占用额外空间(仅元数据开销)
- ⚡ 30GB 文件可在硬盘上瞬间"复制"
5. 🔄 命令无缝兼容
作为一种 "无痛替换" 方案,Zerobrew 尽量维持了与原版 brew 命令的一致性,减少了用户的迁移成本。由于 Zerobrew 直接从 Homebrew 的 CDN 拉取软件包,你可以直接用
zb替换brew命令:# Homebrew 原命令 brew install node # Zerobrew 等效命令 zb install node🤔 为什么选择它?
如果你是一位追求极致效率的开发者,或是不满于
brew update漫长的等待过程,Zerobrew 提供了一个更现代、更轻量化的选择。Homebrew 的典型性能痛点
根据 GitHub 上的多个 Issue 讨论,用户普遍反映以下问题:
问题 具体表现 brew update缓慢停顿 2-3 分钟才开始实际更新 brew --prefix延迟在 .zshrc中使用会拖慢每次终端启动外部 Tap 处理慢 Ruby 进程 CPU 占用 100%,耗时 5-10 分钟 即使简单命令也慢 brew help需要约 1 秒(Ruby 启动开销)社区常见的权宜之计包括:
- 设置
HOMEBREW_NO_AUTO_UPDATE=1禁用自动更新 - 使用
${HOMEBREW_PREFIX}/opt/<formula>替代brew --prefix - 虽然 Homebrew 5.0.0 引入了并行下载功能,但核心的 Ruby 启动开销问题依然存在
⚠️ 注意事项与局限性
虽然 Zerobrew 目前仍被开发者 Lucas Gelfond 定义为 实验性项目,但其展现出的性能潜力已吸引了大量极客关注。在使用前,你需要了解以下重要信息:
🔧 技术挑战
根据 Homebrew 维护者的反馈,有一些值得注意的技术挑战:
"Homebrew 的许多 bottles(预编译二进制包)是可重定位的,但有相当一部分不是。之前已有多次尝试构建更快的 Homebrew,它们通常能完成到 95% 的进度,然后就会遇到各种恼人的边缘情况——这些正是 Homebrew 多年来积累'伤疤组织'的地方。"
具体而言:
挑战 说明 不可重定位的包 部分软件包硬编码了安装路径 边缘情况处理 Homebrew 15 年的积累中包含大量特例处理 生态兼容性 需要与现有 Homebrew 基础设施完美对接 📊 项目成熟度
截至目前(2026 年 1 月),Zerobrew GitHub 仓库 状态:
- ⭐ 644 Stars
- 🍴 6 Forks
- 🏷️ 定位:实验性项目
- ✅ 核心 Homebrew 软件包大多可用
🤖 开发背景趣闻
值得一提的是,Lucas Gelfond 在开发 Zerobrew 时大量使用了 Claude Opus 4.5 来编写代码。他表示:
"我非常相信语言模型在编程方面的能力,尤其是当它们被给予精确的规范并与人类协作时。"
这也反映了 2025-2026 年 AI 辅助编程的新趋势——开发者与 AI 协作完成复杂系统工程项目。
🛠️ 如何开始?
安装方式
你可以通过以下命令快速安装 Zerobrew:
curl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash安装完成后,即可使用
zb命令替代brew。基本使用示例
# 安装软件包 zb install wget # 更新软件包索引 zb update # 升级所有已安装的软件包 zb upgrade # 搜索软件包 zb search python📎 更多详情:访问 Zerobrew GitHub 仓库 查看最新的编译和安装说明。
🌐 同类项目对比
Zerobrew 并非唯一的 Rust 重写 Homebrew 的尝试。以下是目前活跃的同类项目:
项目 开发者 特点 状态 Zerobrew Lucas Gelfond 内容寻址存储、APFS clonefile、Homebrew CDN 兼容 实验性 sps (Sapphire) alexykn 支持 Formulae 和 Casks、计划推出自定义包系统 v2 实验性,仅 ARM Sapphire (sps) 项目的未来规划尤其值得关注:
开发者计划在 v2 版本中实现:
- 🔄 原子化安装/更新
- 📸 自动快照
- ⏪ 完整的包回滚功能
- 🔒 自动 CVE 安全检查
💡 要点总结
要点 核心内容 性能提升 冷启动 5x,热启动 20x 速度提升 技术栈 Rust 语言,消除 Ruby 运行时开销 创新设计 内容寻址存储 + APFS clonefile + 流式并行执行 兼容性 直接使用 Homebrew CDN,命令语法兼容 成熟度 实验性项目,核心功能可用,边缘情况待完善 适用人群 追求效率的高级开发者、macOS 工具链探索者
歡迎留言回复交流。
Log in to reply.