写点什么

“单调是好事”,Go 语言开发负责人承诺未来的兼容性

  • 2023-09-12
    北京
  • 本文字数:898 字

    阅读完需:约 3 分钟

大小:466.15K时长:02:39
“单调是好事”,Go语言开发负责人承诺未来的兼容性

Go 语言技术负责人、谷歌杰出工程师 Russ Cox 承诺“不会出现与 Go 1 程序不兼容的 Go 2。”


Cox 还介绍了刚刚发布的 Go 1.21 对向前兼容性的改进。


在 Go 语言官网的一篇博文中,Cox 提出了一种观点,即兼容性“远比任何可能的与过去不兼容的东西更有价值”。对兼容性的承诺对 Go 语言来说并不是什么新鲜事:早在 2012 年 Go 1.0 发布时,其文档中就写道:“按照 Go 1 规范编写的程序在该规范的整个生命周期内都可以正确编译和运行,不会发生任何改变。”当然,这个承诺是针对源代码而不是二进制文件的兼容性。


文档中所指的是未来可能出现基于新规范的 Go 2,兼容性可能不太高,但 Cox 现在表示“不会出现与 Go 1 程序不兼容的 Go 2。”


尽管有这些承诺,但兼容性并不是绝对的,Cox 解释了几种新版本可能会破坏已有代码的情况。修复错误行为就是其中的一个例子。另一个则是时间的精度问题。现在函数变多了,那么第三种情况就是随着排序优化的实现,相等结果的排序发生了变化。第四种情况是默认协议发生变化,例如从 HTTP/1.1 变到 HTTP/2。这些情况意味着对 Go 语言的修改仍然会破坏已有的代码。Go 语言开发团队通过在谷歌内部运行 Go 代码测试来缓解这一问题。Cox 还提到了 Kubernetes 团队使用 ParseIP 函数的分叉版本,其中使用了更为严格的解析器,否则保存的配置可能会损坏。


Go 1.21 中的一些新特性进一步提高了兼容性,比如工具链管理,go 命令(自动下载、构建、安装和测试 Go 语言包)不会试图构建更新版本的代码,相反,它会自动下载更新的版本,但不会覆盖已安装的版本。


还有对 GODEBUG 的扩展使用,一个键值对,可以设置为环境变量。一般来说,如果变更确实破坏了兼容性,“我们将定义一个新的 GODEBUG 设置,允许个体程序不包含新的行为”。


Go 的兼容性真的像声称的那么好吗?一位开发者在 Hacker News 上表示:“我在大部分 Go 语言升级过程中都遇到过严重的故障。我在 Rust 升级和 gcc 升级时遇到的问题要少得多。”一些人也遇到了 Cox 所描述的一些问题。不过总体的反应是积极的。另外也有人说:“我两年前开始在工作中使用 Go,我很喜欢它,尤其是它的向后兼容性。”


原文链接:https://devclass.com/2023/08/16/boring-is-good-says-go-tech-lead-promising-future-compatibility/

2023-09-12 18:544448

评论

发布
暂无评论
发现更多内容

停机不收费!华为云RDS for MySQL降本有奇招

轶天下事

招行&华为云,科技进步一等奖!

轶天下事

【深入浅出Docker原理及实战】「Docker安装说明」零基础+全方位带你学习探索Docker容器开发实战指南(Ubuntu、Debian)

洛神灬殇

Docker 容器 容器化部署

莲子数据与阿里云开源PolarDB合作助力制造业数字化转型

阿里云数据库开源

polarDB PolarDB-X PolarDB-PG

解析数字信息时代下的信息安全挑战:大道至简——JNPF快速开发平台的低代码之光

快乐非自愿限量之名

低代码 信息安全 企业数字化 低代码数字转型

无惧百万级并发,GaussDB(for Cassandra)让华为Push推送服务更快触达

轶天下事

华为云GaussDB践行数字化,护航证券保险高质量发展

平平无奇爱好科技

行业DBA走进华为,共建数据库生态

平平无奇爱好科技

亿级用户实时互动,GaussDB(for Redis)带您沉浸式体验迷你世界

轶天下事

车载手势识别技术的原理及其应用

来自四九城儿

华为云GaussDB入选“2022年数字技术融合创新应用解决方案”

平平无奇爱好科技

黄瑾:做强坚实数据库底座,GaussDB与产业携手共进

平平无奇爱好科技

PostgreSQL插件那么多,怎样管理最高效?

平平无奇爱好科技

华为云GaussDB以技术创新引领金融行业分布式转型

平平无奇爱好科技

深耕数据库根技术,华为云云原生数据库推动汽车产业数智升级

轶天下事

精彩纷呈!LLUG 2023 北京场活动回顾来啦 | 视频回放已上线

OpenAnolis小助手

开源 龙蜥社区 LLUG Linux中国 沙龙回顾

新应用爆发,开启5G的鱼龙之变

脑极体

5G

【精彩回顾】华为云亮相2023开放原子全球开源峰会

华为云开源

#云原生 #开源

产教融合,华为云GaussDB助推高校国产数据库课程建设

轶天下事

智能工厂中人工智能应用场景及技术分析

工赋开发者社区

技术驱动,数据赋能,华为云GaussDB给世界一个更优选择

平平无奇爱好科技

智能工厂 | 上海三菱电梯有限公司电梯智能工厂

工赋开发者社区

瓴羊Quick BI数据门户,让企业数据管理一目了然

巷子

MacOS专业截屏指南——截屏技巧和截屏工具分享

互联网工科生

macos mac截图工具

华为云GaussDB重磅亮相华为全球智慧金融峰会,产品能力全新升级

轶天下事

数字化转型下我国分布式数据库应用挑战及发展建议

轶天下事

为什么MySQL单表不能超过2000万行?

轶天下事

车载手势识别技术的挑战和未来发展

来自四九城儿

“云创未来,共享生态”——支付宝小程序云产品发布会,报名开启!

TRaaS

小程序

华为云GaussDB构建智能数据底座,助推中国数字经济发展

轶天下事

企业如何数字化转型?企业数字化转型面临哪些挑战?

优秀

企业数字化转型

“单调是好事”,Go语言开发负责人承诺未来的兼容性_编程语言_Tim Anderson_InfoQ精选文章