Go 2 永远不会给 Go 1 带去破坏性变化


上周发布的 Go 1.21 提到该版本继续保持了 Go 1 的兼容性承诺(甚至有所增强)。不过仍有人好奇,未来是否会发布一个会破坏与现有 Go 1.x 程序兼容性的 "Go 2"。

昨天,Go 开发团队技术 leader Russ Cox (rsc) 发表博客详细介绍了针对 Go 向后兼容性的改进,并回答了上面的问题。

rsc 回应称,答案是永远不会。如果所谓“破坏”是指不与旧版本兼容、不支持编译旧程序,Go 2 永远不会出现。从 2017 年开始对 Go 1 进行重大改革来看,Go 2 事实上早已存在。

所谓 Go 2 并非一个单独的重大更新版本,而是通过 “增量 (incremental) 更新” 的方式以逐渐抵达 "Go 2.0"。

他表示,未来不仅不会破坏 Go 2 与 Go 1 的兼容性,还会积极提升两者的兼容情况。团队认为优先考虑兼容性是为 Go 1 所做的最重要的设计决定。

因此,在未来几年里,开发者将看到大量令人兴奋的新变化,这些变化以谨慎、兼容的方式完成。

更多信息查看:

  • 向后兼容性:Go 1.21 和 Go 2
  • Go 1.21 的向前兼容性和工具链管理

相關推薦

2022-04-06

“锁定 (locked)” 外部变化(例如发布依赖项的新版本)不会影响 Go 构建。 与其他大多数软件包管理器所使用的配置文件不同,Go modules 没有单独的约束列表和用于锁定特定版本的 lock 文件。参与 Go 构建的每个依赖项的版本完

2023-05-18

源模块维护者在保持其依赖项最新,并避免因版本控制和破坏性变化而造成的中断方面面临挑战。官方表示,其将计划进一步探索该领域,以帮助维护者提供稳定健康的生态系统。 与以往的调查结果一样,Go 还是主要用于科

2022-12-22

个生命周期——开始、中间和结束——并且没有项目需要永远存在。这可能不会让每个人都开心,但这就是生活。” Matt Silverlock 还表示,他们这些人对 Gorilla Toolkit 的维护都是出于热爱,并没有金钱目的。从来没有任何人试图

2022-08-03

称,这是一个相对较大的版本更新,带来了许多新功能和破坏性变化。在 1.17 开发周期里,总共合并了 645 个 PR。 Gitea 1.17.0 对部分依赖进行了升级,其中包括 Git >= 2.0、docker >= 20.10.6,以及需要 Go 1.18 或更高的版本进行编译

2022-11-17

消时,在错误消息中包含当前流状态的名称。 NIO 写入永远不会返回 -1,因此重构CLOSED_NIO_CHANNEL,使之不返回,并删除对该返回值的检查。基于 #562。 删除不必要的代码,这些代码会暴露asyncTimeout给从未使用过它的组件。

2023-04-03

OpenAPI Normalizer 中的几条新 rules。 有一个带有 fallback 的破坏性变更:[Java][Spring] 选项是否生成所需的 args 构造函数 #14941 General 添加 isOverridden,更新 Java pojo 的 parent properties 设置器 #15051 添加新的 openapi-normal

2023-11-15

。DevJobsScanner 认为,鉴于 Ruby 的多样性,学习该语言永远不会是一个糟糕的选择;它也是一种高级语言,可以快速开发应用程序(类似于 Python)。 Ruby 开发人员的工资中位数(13.6 万美元)超过了平均工资(13.2 万美元)

2022-10-21

歌宣布将其 Go 应用镜像构建器 ko 作为沙箱项目提交给 CNCF。ko 是谷歌在 2019 年开源的 Go 应用程序的简单、快速和安全的容器镜像构建器,最近还添加了一些新功能,包括多平台支持和自动 SBOM 生成。 就像谷歌的 o

2023-05-12

添加 Xojo client generator #15194 有 2 个带有 fallback 的破坏性变更: [csharp-netcore] 显式实现 IValidatableObject #15160 [python-nextgen] 添加对 StrictFloat 和 StrictInt 联合的支持#15124 具体包括: General [openapi-normalizer] 修复 oneO

2022-11-14

不清楚,但是有一些已知的公共实例,例如 Flink 就表示不会再使用带有新许可证的 Akka 版本。当然不也能说 Scala 会像 Akka 一样,但是在增长停滞不前且竞争激烈的语言环境中,不可能排除该决定对语言的不利影响。 Objective C (

2023-08-24

Fixed 修复特定字符可能会破坏文件路径的问题 Enhancements 为SFTP新增一些集成测试 支持软链接本身的同步 实现通过文件查询接口获取链接信息 新增go1.21支持 移除go1.19支持 新增symlink动作 为FileInfo结构新增LinkTo字

2022-12-13

H=riscv64) 的实验性支持。 Go 1.20 目前在语法方面包含 4 项变化。 从 slice(切片)到数组的转换 Go 1.7 增加了从 slice (切片)到数组指针转换的功能,Go 1.20 对该功能进行了扩展——可直接从 slice 转换成数组。 比如给定一

2023-01-25

IP 访问目标网站的功能。如果入口 IP 是内网 IP,出口 IP 不会使用入口 IP 支持限速,HTTP (S)\SOCKS5\SPS\TCP 代理支持限速。 支持限连接数,HTTP (S)\SOCKS5\SPS\TCP 代理支持限连接数。 SOCKS5 代理支持级联认证。 证书参数使用 base6

2023-05-18

任者和替代者,尽管如此,目前已有的大量Objective-C 代码不会消失,这意味着 Objective-C 的下滑应该是逐步的。