当前位置:首页 >综合 >Go 改版本号规则,主版本号终于支持第三位数字 0 了... 主版终于支持我是第位煎鱼

Go 改版本号规则,主版本号终于支持第三位数字 0 了... 主版终于支持我是第位煎鱼

2024-06-30 20:41:36 [百科] 来源:避面尹邢网

Go 改版本号规则,改版规则主版本号终于支持第三位数字 0 了...

作者:陈煎鱼 开发 前端 目前该提案已经完成审查和 CL,本号本号可以说很明确将会进入到 Go 后续版本的主版终于支持使用中。以后主版本将会是第位 go1.21.0 起,并补充 “.0”,数字而不再是改版规则以前的 go1.21,能够规避相当一部分的本号本号版本混淆问题。

大家好,主版终于支持我是第位煎鱼。

平时我们经常会跟踪 Go 的数字版本发布,看看是改版规则不是有 BUG,新特性等值得关注的本号本号东西,好吸取新的主版终于支持知识和技术跟进,用到自己的第位日常工作和系统中。

Go 改版本号规则,主版本号终于支持第三位数字 0 了... 主版终于支持我是第位煎鱼

在新的数字特性、新的资料记录的映射上,我们也会用版本号来与之关联,这很常见。

Go 改版本号规则,主版本号终于支持第三位数字 0 了... 主版终于支持我是第位煎鱼

背景

但看 Go 版本号时,会出现一个和其他软件版本不一样的神奇现象。那就是 Go 的主要版本号,居然是两位数:

Go 改版本号规则,主版本号终于支持第三位数字 0 了... 主版终于支持我是第位煎鱼

图片图片

说是两位数,也可以理解。结果你认真一看,会发现是主要版本和次要版本,在两位数和三位数之间横跳:

图片图片

这时候就会有一个容易引起误解(理解)的事情。像是开发同学或运维同学部署开发、私有化环境时,问你用的什么版本?

可能大部分同学会直接说用 Go1.20。有了解 Go 版本号规则的人,不知道你到底说的是 Go1.20(第一个版本),还是说要求 Go1.20.x(该大版本的当前最新版本),就会造成明确混淆。

懒得纠结的,一配置,Docker 一拉取。就直接应用到 Go1.20 的第一个版本去了。会错过许多 Go BUG 本身的修复。

对于许多应用场景来讲,这可能影响不是特别大。但对于 Go 是一门对外开源社区运作的编程语言来讲,显然是不合适的。

要不要用 semver 做版本控制

在业内有一个管理版本号的标准:semver。版本格式:“主版本号.次版本号.修订号”,版本号递增规则如下:

  1. 主版本号:当你做了不兼容的 API 修改,将是主版本号的破坏性变更。
  2. 次版本号:当你做了向下兼容的功能性新增,将是次版本的特性变更。
  3. 修订号:当你做了向下兼容的问题修正,将是修复的版本变更。

先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。并且标准的版本号必须(MUST)采用 X.Y.Z 的格式。

以往在 Go 社区很多人提了很多次,希望 Go 掰过来。用 semver 来管理社区的版本号发布,这样子最为标准化。

图片图片

显然 Go 是不符合的,为什么呢?因为 Go 并没有采纳这个版本思路,版本号也是用 go 开头的,例如 runtime.Version() 输出的结果是:go1.20,或是 go1.20.6。

最重要的是 Go 创始人认为 semver 是理想化的,在互联网社区的路子上是行不通的,直接就拒绝了。

解决方案

经过多年的折腾,大家也认清了现实。提出了一个有意缩小变更范围的新提案《build: use a zero for third digit for major release, such as 'go1.21.0'[1]》,争取解决背景中提到的问题。

图片图片

本次仅限只做一个变动,那就是:把 “.0” 加到主版本中。例如以前是 go1.23。现在要变成 go.1.23.0。

在 Go 工具链上。例如配套的 go.mod 的 go 行,我后续也是会跟着改变的,主版本时也会多 “.0”,确保两者保持一致。

这样的妥协方案,至少可以解决解决大家对 go1.20(以该版本举例)的理解误差。明确到底是 1.20.0,还是 1.20.x 的版本。

我们也可以缓解另一派以为 go1.20.0 才是第一个 BUG 修复版本,结果没想到居然是 go1.20.1。现在会更明确和清晰些。

当然,为此会带来一些成本。例如:解析 Go 版本号的工具链和脚本的改造、文档、博客、书籍等的更新。但综合成本来看,改变的成本并不是很大。

总结

目前该提案已经完成审查和 CL,可以说很明确将会进入到 Go 后续版本的使用中。以后主版本将会是 go1.21.0 起,并补充 “.0”,而不再是以前的 go1.21,能够规避相当一部分的版本混淆问题。

这个问题,说大不大,是比较细微的变更。但在我们的日常工程构建中,是经常会遇到的。为了省事(没具体看),有的同学会在 Dockerfile 中写 go1.18,更新版本号也是写 go1.19、go1.20 等,很少会关注到后面的 BUG 修复版本,这是比较可惜的。

当然,Go 版本号的命名规则不完全统一,本身也是一个比较无奈的事。与此相类似的还有 RC 版本。

Go RC 版本目前的命名规则是:go1.20rc3。社区会建议 go1.20-rc3 的格式规范。但显然,Go 核心团队暂时没打算改。

责任编辑:武晓燕 来源: 脑子进煎鱼了 Go版本号规则

(责任编辑:休闲)

    推荐文章
    • 社区团购近半年迎来大洗牌 价格优势逐渐消失

      社区团购近半年迎来大洗牌 价格优势逐渐消失同程生活破产、十荟团等平台关闭,监管部门“出手”对社区团购提出严格要求……曾经风风火火的社区团购,近半年迎来大洗牌。在市场方面,近日,记者采访了多位 ...[详细]
    • 7只环保基金年内亏损40% 最多下跌近五成

      7只环保基金年内亏损40% 最多下跌近五成在今年的市场持续调整中,环保板块受伤最重,截至昨日,Wind环保指数年内跌幅超过50%,为所有主题指数中下跌幅度最大的一种。受此影响,多只环保主题基金净值回撤较大,其中有7只跌幅超过40%,亏损最大的 ...[详细]
    • 比较优势理论优缺点是什么?比较优势理论是什么?

      比较优势理论优缺点是什么?比较优势理论是什么?比较优势理论优缺点,比较优势理论例子比较优势理论是由日本的小岛清故授畏出的。他利用李熹图的国际分工比较成本原理.比较优势理论分析与比较了日本型对外直接投资和美国型对外直接投资的不同.提出了解释日本对外 ...[详细]
    • 职责分离原则具体是什么?

      职责分离原则具体是什么?职责分离原则是企业各业务部门及业务操作人员之间责任和权限的相互分离机制。基本要求是,业务活动的核准、记录、经办及财物的保管应当尽可能做到相互独立,分别由专人负责,如果不能做到完全分离,也必须通过其他适 ...[详细]
    • 华阳股份(600348.SH)公布消息:拟开展应收账款保理业务

      华阳股份(600348.SH)公布消息:拟开展应收账款保理业务华阳股份(600348.SH)公布,公司及公司下属煤炭销售公司拟将一定期间内向华能国际电力股份有限公司(“华能国际”)电厂供应煤炭所形成的应收账款用于办理应收账款保理融资业务。 ...[详细]
    • 英大证券交易特征有什么?

      英大证券交易特征有什么?英大证券网上交易下载软件,英大证券下载集行情下载、分析、交易、资讯于一体,英大证券管网上交易下载软件具有完善的下载的行情揭示、强大的技术指标、最快的信息资讯、最深入的技术分析。英大证券使用网上交易下载 ...[详细]
    • 欧盟对谷歌处以巨额罚款 致谷歌母公司Alphabet市值蒸发了170亿美元

      欧盟对谷歌处以巨额罚款 致谷歌母公司Alphabet市值蒸发了170亿美元据外媒报道,欧盟反垄断机构欧盟委员会27日对谷歌(Google)处以24.2亿欧元(约合27亿美元)的巨额罚款,这一消息致谷歌母公司Alphabet市值蒸发了170亿美元。欧盟委员会经过一段时间的调查 ...[详细]
    • 券商研判市场行情 十月份注意“防寒保暖”

      券商研判市场行情 十月份注意“防寒保暖”步入金秋十月,券商密集发布策略展望A股市场行情。由于下半年以来市场波动加剧,加上央行宣布降准等多方面因素影响,短期内券商对本月的行情走势格外关注。部分券商认为,10月份市场将维持震荡,关注结构性机会; ...[详细]
    • “双11”全国快件量达47.76亿件 11日当天共处理快件6.96亿件

      “双11”全国快件量达47.76亿件 11日当天共处理快件6.96亿件11月12日,据国家邮政局监测数据显示,11月1日至11月11日,全国邮政、快递企业共处理快件47.76亿件,同比增长超过两成。其中,11月11日当天共处理快件6.96亿件,稳中有升,再创历史新高。与 ...[详细]
    • 职责分离原则具体是什么?

      职责分离原则具体是什么?职责分离原则是企业各业务部门及业务操作人员之间责任和权限的相互分离机制。基本要求是,业务活动的核准、记录、经办及财物的保管应当尽可能做到相互独立,分别由专人负责,如果不能做到完全分离,也必须通过其他适 ...[详细]
    热点阅读