Git 2.55-rc0 刚发布,最值得注意的变化不是某个新命令或性能优化,而是 Rust 支持变成了默认选项。在此之前,想用 Rust 编写的 Git 组件,你得在构建时手动加参数;从 2.55 起,它直接开箱即用。这对一个拥有二十年 C 代码历史的工具来说,是一个明确的信号。
从 WITH_RUST 到默认启用
在 Git 2.54 及更早版本中,Rust 支持需要显式开启。用标准 Makefile 构建时,你必须设置 WITH_RUST 变量;用 Meson 构建体系时,也需要手动指定对应选项。这意味着绝大多数从包管理器安装 Git 的用户,实际上跑的是纯 C 版本——Rust 组件从未被激活。
Git 2.55 把这个开关翻转了:Rust 支持默认启用,不再需要额外配置。Makefile 和 Meson 构建体系都已同步这一变更。
仍然可以关闭
默认启用不等于强制。如果你出于兼容性、构建环境限制或个人偏好需要禁用 Rust,Git 2.55 保留了关闭途径。Makefile 中提供了对应的禁用选项,Meson 构建同样支持。
这在过渡期很关键:一些 CI 环境可能尚未安装 Rust 工具链,某些发行版的打包流程也需要时间适配。
构建与验证实操
下面是从源码构建 Git 2.55 并验证 Rust 状态的具体步骤。
默认构建(Rust 自动启用)
# 确保 Rust 工具链可用
rustc --version
# 如果没有安装,先获取
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 克隆并构建 Git 2.55-rc0
git clone https://github.com/git/git.git
cd git
git checkout v2.55.0-rc0
# 直接 make,Rust 默认启用
make
# 验证构建结果中包含 Rust 组件
./git --version
# 检查是否有 Rust 相关的 object 文件
find . -name '*.rlib' -o -name '*.rs' | head -20
显式禁用 Rust 构建
# 在 Makefile 构建中禁用 Rust
make NO_RUST=1
# 或在 Meson 构建中禁用
meson setup build --disable-rust
ninja -C build
检查已安装 Git 是否启用了 Rust
# 查看 Git 版本和构建配置
git --version
# 某些发行版会在版本输出中标注 Rust 状态
# 也可以检查二进制中是否链接了 Rust 符号
nm $(which git) | grep -i rust | head -5
为什么这件事值得关注
Git 是全球开发者每天都在用的基础设施工具。它从纯 C 走向 C + Rust 双语言架构,路径非常谨慎:先让 Rust 组件可选存在,再默认启用,而非一步到位替换核心模块。这种渐进策略降低了风险,也给发行版和 CI 系统留出了适配窗口。
默认启用意味着未来 Git 的新功能、性能优化和安全加固会越来越多地用 Rust 实现。对开发者来说,你不需要做任何事就能受益——只要构建环境有 Rust 工具链,新组件自动参与工作。
过渡期注意事项
- CI 环境:如果你的 CI 流程从源码构建 Git,确保 runner 上已安装
rustc和cargo,否则构建会失败。短期内可以用NO_RUST=1绕过,但长期应适配。 - 发行版打包:各 Linux 发行版维护者需要更新构建脚本,确保 Rust 工具链在打包环境中可用。
- 交叉编译:在嵌入式或非标准目标平台上交叉编译 Git 时,Rust 工具链的交叉支持需要额外配置,可能需要暂时禁用。
- 二进制体积:Rust 组件可能增加 Git 二进制体积,对极小容器镜像有影响,留意
strip和优化选项。
Git 2.55 的这个变更,表面是一个构建开关的翻转,实质是 Git 项目对 Rust 的信任投票。如果你还在用纯 C 版本的 Git,升级到 2.55 后你会自动获得 Rust 组件带来的改进——除非你主动选择关掉它。