Skip to content
Artwork for Andrej Karpathy的RSS订阅清单
Andrej Karpathy的RSS订阅清单 · Yesterday · 9 min

36.0排在4.0.0前面:Bazel版本排序颠覆你的常识

当工具把 protobuf 的最新版本误判为四年前的 3.19.6,问题并非数据过时,而是通用 SemVer 解析器无法理解 Bazel 刻意放宽的版本规则。本文从这一真实案例出发,深入解析 Bazel 模块版本的特殊语法、排序逻辑,以及 `.bcr.N` 后缀背后的注册表机制。 本期节目对原文进行深度解析,带你理解为什么 Bazel 会让 36.0 排在 4.0.0 前面,以及“通用版本解析器”如何在没有报错的情况下持续产生错误结果。 原文链接: https://nesbitt.io/2026/08/27/bazel-module-versions-arent-semver.html 原文标题:Bazel Module Versions Aren’t SemVer 主要内容: • Bazel 为什么有意偏离 SemVer,支持多段版本号和包含字母的标识符 • Bazel 独特的版本排序规则,以及 36.0 为何排在 4.0.0 前面 • `.bcr.1` 后缀的作用:如何为注册表补丁版本确保正确升级 • Minimal Version Selection 如何影响 Bazel 的依赖解析 • 严格或宽松的通用解析器为何都会误判 Bazel 版本,以及最终的修复方案 推荐理由: 这篇文章不仅解释了一个隐藏四年的真实工程漏洞,也揭示了版本号并非跨生态通用的标准真理,而是具体工具和社区约定的局部规则。对于从事依赖管理、包索引、构建系统或开发者工具工作的读者,这是一堂非常值得深入了解的版本解析与生态设计课。 --- 「Andrej Karpathy的RSS订阅清单」为您精选全球最前沿的AI技术博客文章,深度剖析技术背后的核心洞察。 由 voieech.com 提供技术支持。

0:00-9:00

transcript

No transcript — this publisher did not publish one.

show notes

当工具把 protobuf 的最新版本误判为四年前的 3.19.6,问题并非数据过时,而是通用 SemVer 解析器无法理解 Bazel 刻意放宽的版本规则。本文从这一真实案例出发,深入解析 Bazel 模块版本的特殊语法、排序逻辑,以及 `.bcr.N` 后缀背后的注册表机制。

本期节目对原文进行深度解析,带你理解为什么 Bazel 会让 36.0 排在 4.0.0 前面,以及“通用版本解析器”如何在没有报错的情况下持续产生错误结果。

原文链接:
https://nesbitt.io/2026/08/27/bazel-module-versions-arent-semver.html
原文标题:Bazel Module Versions Aren’t SemVer

主要内容:

• Bazel 为什么有意偏离 SemVer,支持多段版本号和包含字母的标识符
• Bazel 独特的版本排序规则,以及 36.0 为何排在 4.0.0 前面
• `.bcr.1` 后缀的作用:如何为注册表补丁版本确保正确升级
• Minimal Version Selection 如何影响 Bazel 的依赖解析
• 严格或宽松的通用解析器为何都会误判 Bazel 版本,以及最终的修复方案

推荐理由:
这篇文章不仅解释了一个隐藏四年的真实工程漏洞,也揭示了版本号并非跨生态通用的标准真理,而是具体工具和社区约定的局部规则。对于从事依赖管理、包索引、构建系统或开发者工具工作的读者,这是一堂非常值得深入了解的版本解析与生态设计课。

---

「Andrej Karpathy的RSS订阅清单」为您精选全球最前沿的AI技术博客文章,深度剖析技术背后的核心洞察。
由 voieech.com 提供技术支持。