大家好,我是煎鱼。
高县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
平时我们经常会跟踪 Go 的版本发布,看看是不是有 BUG,新特性等值得关注的东西,好吸取新的知识和技术跟进,用到自己的日常工作和系统中。
在新的特性、新的资料记录的映射上,我们也会用版本号来与之关联,这很常见。
但看 Go 版本号时,会出现一个和其他软件版本不一样的神奇现象。那就是 Go 的主要版本号,居然是两位数:
图片
说是两位数,也可以理解。结果你认真一看,会发现是主要版本和次要版本,在两位数和三位数之间横跳:
图片
这时候就会有一个容易引起误解(理解)的事情。像是开发同学或运维同学部署开发、私有化环境时,问你用的什么版本?
可能大部分同学会直接说用 Go1.20。有了解 Go 版本号规则的人,不知道你到底说的是 Go1.20(第一个版本),还是说要求 Go1.20.x(该大版本的当前最新版本),就会造成明确混淆。
懒得纠结的,一配置,Docker 一拉取。就直接应用到 Go1.20 的第一个版本去了。会错过许多 Go BUG 本身的修复。
对于许多应用场景来讲,这可能影响不是特别大。但对于 Go 是一门对外开源社区运作的编程语言来讲,显然是不合适的。
在业内有一个管理版本号的标准:semver。版本格式:“主版本号.次版本号.修订号”,版本号递增规则如下:
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。并且标准的版本号必须(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改版本号规则,主版本号终于支持第三位数字0了...
本文链接:http://www.shufengxianlan.com/qtweb/news42/211642.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联