写点什么

“单调是好事”,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:544479

评论

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

抽丝剥茧!为您揭秘ChatGPT背后的数据库

华为云开发者联盟

数据库 华为云 ChatGPT 企业号 2 月 PK 榜 华为云开发者联盟

数据服务门槛再提升,这个“TOP1玩家”凭何再度领军?

澳鹏Appen

人工智能 自动驾驶 智能驾驶 数据标注

做好产业数字化助手,腾讯云助力贝壳实现降本增效与业务创新

科技热闻

MAR:针对动作识别的视频掩码建模

Zilliz

怎么写一份好的接口文档?

Liam

Java API 免费API接口 API接口 API接口文档

架构训练营模块六作业

gigifrog

一款互联网SaaS产品都包含哪些内容

Y

数字山河一盘棋:2023新华三如何发力商业市场?

脑极体

新华三

Bytebase:让数据库管理和协作变得无缝

天黑黑

MySQL 云原生 dba 数据库管理工具

大数据应用场景下,标签策略如何实现价值最大化?

袋鼠云数栈

标签体系

【立哥】【每日一个小知识】“奔”字为什么这样写?

Lee Chen

新耀东方-2023第二届上海网络安全博览会暨高峰论坛 SCSF-SHANGHAI CYBER SECURITY FAIR AND SUMMIT FORUM 2023

Anthony

网络安全 信息安全 大数据 开源

大数据时代下的企业网络安全

镭速

阿凡达(Avata)泰山众筹系统开发部署技术

薇電13242772558

智能合约 dapp

数据隔离方案

Y

乌托邦UTO系统开发NFT技术

薇電13242772558

NFT

CodeArts Snap:辅助你编程的神器

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

Zebec生态持续深度布局,ZBC通证月内翻倍或只是开始

西柚子

关于云原生,我问了ChatGPT几个问题......

拓维信息

DevOps 云原生 ChatGPT

大势前瞻!文旅还是短视频,你弯道超车风口在这了

引迈信息

创业 投资 短视频 旅游 创业项目风口

netstat与ss

飞翔

白鲸开源发布迁移工具 Airphin 并开源,2 步迁移 Airflow 至 Dolphinscheduler

白鲸开源

Apache 开源 Apache DolphinScheduler airflow Airphin

ChatGPT 可收费的那种产品该如何实现?一点尝试 | 社区征文

非喵鱼

Java openai ChatGPT

GitHub标星30K+的Java面试八股文长啥样?

小小怪下士

Java 程序员 面试

Zebec官方辟谣“我们与Protradex没有任何关系”

西柚子

软件测试/测试开发 | 黑盒测试方法论—因果图

测试人

软件测试 自动化测试 测试开发 测试用例 测试方法

2023年1月用户体验GX评测:商业银行抢抓新春营销旺季,多措并举持续提升用户体验

易观分析

金融 银行 经济

软件测试/测试开发 | 黑盒测试方法论—场景法

测试人

软件测试 自动化测试 测试开发 测试用例 测试方法

架构实战营模块1作业

2023 版最新大数据面试宝典

五分钟学大数据

大数据 大数据面试

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