日期即版本
软件常用的版本号,是语义化版本(SemVer),比如 Switch 2 当前的系统版本号为 21.2.0。三段通常分别表示不兼容的 API 更改(通常用来表示大版本更新),次要的兼容性更新,以及错误修复。
不过在另一些软件、硬件里,用日期做版本也很常见。最早最知名的,可能是 Windows 95 吧,这是微软在 1995 年发售的操作系统。也许是受其影响,9 年后的 Ubuntu,也以 4.10 的版本号,发布了第一个版本,因为发布时间是 2004年10月。
这被称作日历版本(CalVer),但后者的形态十分多变,youtube-dl 使用完整并前导零的 YYYY.0M.0D,大概是因为 YouTube 经常封禁其下载方式,所以许多经常更新;IANA/Olson 时区数据库使用年份加英文字母 YYYYa…z,因为一年里,只有个位数的更新。
两种版本号各有好处,语义化适合给具有依赖关系的软件包使用,比如 Python 以及它的各种库,这样就能让软件轻松检测兼容性等问题。而日历版本适合具有可预测发布节奏的企业软件,这能给客户带来更明确的感知。
Apple 在 2025 年,将各个系统更换为了日历版本,最大的优点,还是解决了多个系统的差异吧。比如 2024 年的 Apple 系统有 iOS/iPadOS/tvOS 18、audioOS 17、macOS Sequoia(15)、watchOS 11、visionOS 2,确实很复杂,现在统一为了 26,确实好记了。
不过 Apple 还有个问题没有解决,那就是 MacBook 和 iPad 的硬件版本问题。这两个产品线都没有标明代数(iPad 会标注 M 系列的 SoC),导致需要用户手动标记,使用发售年代或者 SoC 名称,也许是想表明软件大于硬件的想法吧。(不过确实也导致二手产品的搜索存在困难)
附言:就算是在 Apple 官网的购物车里,也只能看到一段描述性的文字:13-inch MacBook Air in Sky Blue with M4 chip。
#杂谈
软件常用的版本号,是语义化版本(SemVer),比如 Switch 2 当前的系统版本号为 21.2.0。三段通常分别表示不兼容的 API 更改(通常用来表示大版本更新),次要的兼容性更新,以及错误修复。
不过在另一些软件、硬件里,用日期做版本也很常见。最早最知名的,可能是 Windows 95 吧,这是微软在 1995 年发售的操作系统。也许是受其影响,9 年后的 Ubuntu,也以 4.10 的版本号,发布了第一个版本,因为发布时间是 2004年10月。
这被称作日历版本(CalVer),但后者的形态十分多变,youtube-dl 使用完整并前导零的 YYYY.0M.0D,大概是因为 YouTube 经常封禁其下载方式,所以许多经常更新;IANA/Olson 时区数据库使用年份加英文字母 YYYYa…z,因为一年里,只有个位数的更新。
两种版本号各有好处,语义化适合给具有依赖关系的软件包使用,比如 Python 以及它的各种库,这样就能让软件轻松检测兼容性等问题。而日历版本适合具有可预测发布节奏的企业软件,这能给客户带来更明确的感知。
Apple 在 2025 年,将各个系统更换为了日历版本,最大的优点,还是解决了多个系统的差异吧。比如 2024 年的 Apple 系统有 iOS/iPadOS/tvOS 18、audioOS 17、macOS Sequoia(15)、watchOS 11、visionOS 2,确实很复杂,现在统一为了 26,确实好记了。
不过 Apple 还有个问题没有解决,那就是 MacBook 和 iPad 的硬件版本问题。这两个产品线都没有标明代数(iPad 会标注 M 系列的 SoC),导致需要用户手动标记,使用发售年代或者 SoC 名称,也许是想表明软件大于硬件的想法吧。(不过确实也导致二手产品的搜索存在困难)
附言:就算是在 Apple 官网的购物车里,也只能看到一段描述性的文字:13-inch MacBook Air in Sky Blue with M4 chip。
#杂谈