
mbx 推出 Rust 共享构建缓存,可跨 worktree 复用 Cargo 编译结果
来源标题:Mbx – shared cargo builds across worktrees
mbx 是一个面向 Rust 项目的共享构建缓存,可在多个 worktree 之间复用 Cargo 编译产物,从而减少磁盘占用并支持并行构建。它从共享存储中恢复匹配的编译器输出,只编译剩余部分;每条命令自行启动并停止缓存代理,无需常驻守护进程。可通过 cargo install mbx 安装,或在 mise 2026.9.2 及以上版本中用 mr_boxington 选项直接包装 Cargo。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
跨 worktree 共享构建缓存。更整洁的 target/。 在不同 worktree 之间复用 Cargo 构建,控制磁盘占用,并让多个构建并行运行。 快速开始 · 文档 · 基准测试 · 发布版本 mbx 是面向 Rust 项目的构建缓存。Cargo 仍然负责解析依赖、规划构建和运行你的工具。mbx 从同一个共享存储中还原匹配的编译器输出,其余部分再现场编译。每条命令都会启动自己的缓存 agent,并在构建结束时停止它;无需管理常驻守护进程。 mise use --global --tool-option mr_boxington=true rust mr-boxington 或者使用 Cargo: cargo install mbx --locked mbx setup 在 mise 2026.9.2 或更新版本中,mr_boxington 这个 Rust 选项可以在没有 mbx setup 钩子的情况下包装 Cargo。打开一个已激活 mise 或已将 mise shims 加入 PATH 的 shell,检查 Cargo 的路径, 然后照常使用 Cargo: cargo build cargo test --workspace --all-features cargo clippy --workspace --all-targets -- -D warnings 交互式构建使用 romancitodev 开发的 cargo-pretty 显示界面,并扩展了 mbx 缓存信息。你可以跟踪正在编译和已完成的 crate,浏览警告和测试失败,并查看缓存命中、未命中、绕过,以及估算节省的编译器时间。构建进度条同时充当缓存明细:绿色表示命中,黄色表示未命中,灰色表示绕过和未查询的编译。 run、测试、doctest 以及已配置的 runner 仍由 Cargo 负责。CI、重定向输出和显式输出格式仍保持 Cargo 的常规输出。 设置 MBX_DISPLAY=plain,或运行 mbx settings set display plain,即可关闭该显示。 如果想在不启用自动包装的情况下试用 mbx,可以安装后直接运行 mbx build。 对于编码 agent 和其他非交互式工具,请使用 mise exec -- cargo build, 或将 mise 的 shims 加入它们的 PATH。 安装指南涵盖了桌面应用 以及使用 Cargo shim 的独立安装方式。对于早于 2026.9.2 的 mise,请参阅 旧版 mise。 已为 Linux、macOS 和 Windows 提供经过验证的发布归档。 所有安装方式 → 跨 worktree 复用。即使检出路径不同,等价的编译也会共享缓存键。构建一个 worktree 会为下一个预热。 自动清理。存储有磁盘预算。受管理的 target 目录会在其检出消失、长期未使用或超出预算时被回收。使用 mbx gc --dry-run 预览回收。 带共享预算的并行构建。独立的 Cargo 命令共享 CPU 和内存许可,并对进行中的相同编译去重。 为每个构建分配各自的 target 目录,以避免 Cargo 的目录锁; check 和 clippy 已经拥有 各自的 check 通道。 更快的本地编辑。mbx 为你正在修改的 crate 保留私有的增量状态,同时在构建的其余部分共享可复用的工作。 CI 复用。使用 GitHub Actions 缓存、兼容的缓存服务器或 S3 兼容的 bucket。mbx 仅在推送到受保护分支时写入缓存服务器或 bucket,因此 pull request 构建只能从中读取。 对每个结果的解释。构建摘要会分别统计每种缓存结果:命中、 未命中、绕过,以及未查询的编译。mbx explain --last 可诊断此工作区上次记录的构建。 冷存储需要一次构建来填充。不受支持的调用会正常运行且不启用缓存,还原的调试信息可能保留原始检出的路径。请参阅工作原理 和缓存限制。 permissions: contents: read jobs: test: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v7
- uses: jdx/mr-boxington-action@v1
- run: mbx test --workspace 请在缓存 action 之前安装你选定的 Rust 工具链。该 action 默认的 github 后端会从 GitHub Actions 缓存还原经过裁剪的 Cargo target 目录和 registry。在推送到默认分支且运行成功后,它会保存一个新条目。pull request 只会还原,除非你设置 save-on-pull-request,让同一仓库的 pull request 保存自己的条目;来自 fork 的 pull request 永远不会保存。请参阅 GitHub Action 指南,了解完整工作流、并行构建、远程缓存和发布策略。 mbx doctor # 检查工具、安装和缓存访问 mbx tui # 观察使用此缓存的构建 mbx stats # 报告累计节省和工作区共享情况 mbx explain --last # 解释上次记录的构建 mbx cache stats # 汇总存储、受管理 target 和增量状态 mbx gc --dry-run # 预览回收 mbx clean # 删除此工作区的受管理 target mbx clean --under /tmp/run # 删除已删除根目录下记录的工作区 mbx adopt --recursive ~/src # 接管现有 target 目录且不删除输出 在支持 reflink 的文件系统上,还原的输出在修改前与存储共享数据块。在其他文件系统上,mbx 默认将只读存储对象硬链接到目标位置。在 Windows 上、无法建立链接时,或设置 restore_hardlink = false 时,它会复制字节。请参阅 输出还原。 运行 mbx adopt 可将现有 target/ 目录转为受管理 target,且不删除其内容。CI 之外的构建会对其自身检出执行相同操作。 了解受管理 target → 任务 指南 配置编辑器、watcher 和 worktree 本地开发 更改预算或构建策略 配置 选择 mold、Wild 或工具链 LLD 受管理链接器 在 CI runner 之间共享工作 远程缓存 缓存 make 或 CMake 构建 独立 C 和 C++ 排查意外结果 故障排查 查询命令 CLI 参考 贡献 请参阅 CONTRIBUTING.md,了解开发环境搭建、文档 检查、测试和 pull request 约定。在 Discussions 中提问;通过 SECURITY.md 中的私密流程报告疑似 漏洞。 mbx 构建于 Cargo 之上,并借鉴了 sccache 和 kache 的思路;kache 直接 启发了它的设计。请参阅 致谢。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。