软件版本号解读(语义化SemVer、日历化CalVer及标识符)

1. 版本控制规范

1.1. 语义化版本(SemVer)

版本格式:主版本号.次版本号.修订号,版本号递增规则:

  1. 主版本号(MAJOR version):添加了不兼容的 API 修改,
  2. 次版本号(MINOR version):添加了向下兼容的功能性新增,
  3. 修订号(PATCH version):添加向下兼容的问题修正。
1.1.1. 补充说明
  1. 版本号均从 0 开始,一般使用 0.1.0 作为初始化开发版本。
  2. 主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变(即公共 API 不稳定)。
  3. 1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容。
  4. 主版本号更新时,次版本号,修订号需要归零;次版本号更新时,修订号需要归零。
  5. 先行版本号(可选)被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符来修饰。范例:1.0.0-alpha、1.0.0-0.3.7、1.0.0-x.z。
  6. 版本编译信息(可选)被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符来修饰。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.shaf85。
1.1.2. 实际应用

Node.js, npm, Go Module, Kubernetes 等

1.1.3. 参考
  1. 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
  2. GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver

1.2. 日历化版本(CalVer)

基于项目发布日期的版本控制约定,CalVer 并未像"SemVer"使用单一方案,而是引入了开发人员的 标准术语:

  • YYYY - 年份全称 - 2006、2016、2106
  • YY - 年份缩写 - 6、16、106
  • 0Y - 以零填充的年份 - 06、16、106
  • MM - 月份缩写 - 1、2 … 11、12
  • 0M - 以零填充的月份 - 01、02 … 11、12
  • WW - 星期(自年初开始)- 1、2、33、52
  • 0W - 以零填充的星期 - 01、02、33、52
  • DD - 日 - 1、2 … 30、31
  • 0D - 以零填充的日 - 01、02 … 30、31
1.2.1. 补充说明
  • 传统的递增版本号是从 0 开始,而日期段是从 1 开始的,且年份缩写和以零填充的年份是相对于 2000 年。
  • 星期的使用通常与月/日互斥。
1.2.2. 实际应用

Ubuntu, Twisted, Boltons 等

1.2.3. 参考
  1. 日历化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html

2. 标识符

2.1. Maven

  • SNAPSHOT:快照版本,如 2.4.0-SNAPSHOT(开发环节)
  • RELEASE:正式版本(可以放心使用)

2.2. Spring

  • SNAPSHOT:快照版本,如2020.0.0-SNAPSHOT
  • M数字(milestone):里程碑版本,如2020.0.0-M1、2020.0.0-M2
  • RC数字(Release Candidate):最终产品的候选版本,如果未出现问题则可发布成为正式版本。多数开源软件会推出两个 RC 版本,最后的 RC2 则成为正式版本。如2020.0.0-RC1、2020.0.0-RC2
  • 无后缀:正式版本,如 2.4.0
2.2.1. 参考
  1. What is the difference between Spring’s GA, RC and M2 releases? - Stack Overflow: https://stackoverflow.com/questions/2107484/what-is-the-difference-between-springs-ga-rc-and-m2-releases
  2. https://stackoverflow.com/a/2107490

2.3. Windows

  • SP(Service Pack): 一套经过测试的、累积的修补程序、安全更新、关键更新以及其他更新。
  • KB(Knowledge Base):Microsoft 的在线知识库。每个 KB 文章都有一个唯一的编号,用于跟踪特定的问题或更新。
2.3.1. 参考
  1. 标准术语说明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates

2.4. 其他常见标识符

  • alpha:内部测试版本
  • beta:公开测试版本
  • gamma:相对成熟的测试版,接近即将发行的正式版
  • stable:稳定版(正式版本)
  • RTM:生产商发放(Release to Manufacturing)软件产品准备交付,提供给工厂压片的版本,来自于以前还需要使用实体载具(光盘,硬盘等)来进行安装的时代。
  • GA:一般可用(General availability)所有必要的商业活动(安全性,合法测试,销售评估等)已经完成,该软件产品已经可以发售的阶段。
  • RTW:网络分发(Release to Web,Web发布)利用互联网分发软件
  • OEM:计算机厂商随计算机销售的版本,不能零售。
  • RTL:零售版(Retail),正式上架的零售版。
  • Demo:演示版,试用版,包含正式版的部分功能。
  • Enhance:增强版,会加入一些实用的新功能。

在这里插入图片描述
Heyinsun, CC BY 3.0 https://creativecommons.org/licenses/by/3.0, via Wikimedia Commons

3. 参考汇总

  1. spring 版本号命名 https://mp.weixin.qq.com/s/ZoUG9h1TndW2QpnPyGeIQA
  2. 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
    1. GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver
  3. 日历化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html
  4. What is the difference between Spring’s GA, RC and M2 releases? - Stack Overflow: https://stackoverflow.com/questions/2107484/what-is-the-difference-between-springs-ga-rc-and-m2-releases
    1. https://stackoverflow.com/a/2107490
  5. 标准术语说明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates
  6. Version Meta Experimental {VSChemaUnderDef}: https://versionmeta.org/
  7. 软件版本周期 - 维基百科,自由的百科全书: https://zh.wikipedia.org/zh-cn/軟件版本週期
  8. 软件各种版本的含义!例如 RC,M,GA 等等 _ 软件测试 rc 包 -CSDN 博客: https://blog.csdn.net/sun54429552/article/details/47690391

  • ID: E5-Q2+1.1.0
  • 原文:https://blog.cc01cc.cn/2024/02/23/understanding-software-versioning/
  • 署名:零一/cc01cc(zeo): https://github.com/cc01cc
  • 欢迎大家转载分享,本作品采用署名-非商业性使用-禁止演绎 4.0 国际进行许可,转载请标明源地址,切莫修改或破坏原文结构,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2804967.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document) 本聪老师:DID标识符和DID URL还都只是ID,必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。 本聪老师:每个DID标识符都唯一对应一个DID文档,也可以说&#x…

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本篇为​【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】,图文讲解四种内存函数,带大家更深刻理解C语言中内存函数的操作&…

Seurat包学习:如何查看R包函数源代码

​我们很多时候都很好奇作者的r包是如何写出来的,手痒的时候就想学习一下源码,顺便改一改 问题来源 为什么要写今天这个推文呢? 起因是因为我想使用seurat自带函数画热图,奈何这个图不是那么好看 DoHeatmap(pbmc,features fea…

[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

编译GreatSQL with RocksDB引擎

GreatSQL里也能用上RocksDB引擎 1. 前言 RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点: 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现…

2024-02-23 作业

作业要求: 1.自己实现单向循环链表的功能 2.整理思维导图 3.复习前面顺序表和链表的代码,重写链表逆置函数 1.自己实现单向循环链表的功能 运行代码: main.c #include "loop_list.h" int main(int argc, const char *argv[]) {loop_p H cr…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及,互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术,可以实现精准定向,提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系,分析其优势和应用场景…

Window部署SkyWalking

SkyWalking mysql的驱动依赖 选择下载版本 v9.4 现在后解压缩目录结构 一、修改config目录文件 application.yml 修改1: selector: ${SW_STORAGE:h2} 修改后: selector: ${SW_STORAGE:mysql} 修改2:使用mysql数据库 mysql: properti…

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版,MouseBoost Pro for Mac只要轻点你的鼠标右键,就可以激活你想要的各种功能,让你的工作效率大幅度提高,非常好用。 软件下载:MouseBoost PRO for Mac v3.3.6中…

Electron实战之环境搭建

工欲善其事必先利其器,在进行实战开发的时候,我们最终的步骤是搞好一个舒服的开发环境,目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下来我们将分别介绍基于 Vue CLI Plu…

【算法与数据结构】417、LeetCode太平洋大西洋水流问题

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:题目要求雨水既能流向太平洋也能流向大西洋的网格。雨水流向取决于网格的高度。一个比较直接的方式是对…

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析: IPv4:AR…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展,社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中,Facebook作为先行者和领导者,对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献,以及它对在…

MySql-DQL-条件查询

目录 条件查询修改数据 查询 姓名 为 Name10 的员工查询 id小于等于5 的员工信息查询 没有分配职位 的员工信息查询 有职位 的员工信息查询 密码不等于 password1 的员工信息查询 入职日期 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间的员工信息查询 入职时间 在 2000-01-0…

跨区互联组网怎么做?SD-WAN专线可以实现吗?

在当今数字化时代,企业不断扩张,跨区域互联成为业务发展的必然需求。然而,跨区互联组网涉及到复杂的网络架构和连接,传统的网络方案往往难以满足高性能、高可靠性和低成本的要求。SD-WAN专线技术的出现,为跨区互联组网…

C++:Level2阶段测试

总结。 只要你看过我的文章,哪怕只是一半,一定能够过关! 准备好开始测试氻吗? 判断题,每题4分,共100分 1、Red Panda Dev C Maker【3.0自创黑客版】添加的头文件有Heike.h() 2、在…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…