写点什么

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

评论

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

Jetpack架构组件学习——使用Glance实现桌面小组件

不在线第一只蜗牛

架构

《CPython Internals》阅读笔记:p336-p352

codists

CPython Internals

Byteman 使用指南(三)

FunTester

一次线上生产库的全流程切换完整方案

京东零售技术

后端

低代码教你克服数字化应用挑战的策略

秃头小帅oi

Infosys稳居全球IT服务品牌前三名,继续领跑行业

财见

一文带你入门 MCP(模型上下文协议)

Se7en

1688 图片识别商品接口系列(1688 API)

tbapi

1688API 1688图片识别接口

Kmesh v1.0正式发布!稳定易用的高性能Sidecarless服务网格

华为云原生团队

云计算 容器 云原生

茁壮:我所见证的鸿蒙之路

脑极体

AI

MCP Server 开发实战:无缝对接 LLM 和 Elasticsearch

Se7en

MES系统助力五金制品行业数字化转型

万界星空科技

制造业 mes 万界星空科技 五金行业 五金制品行业

音乐 NFT 项目的优化

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

从数据到决策,如何打造驱动游戏业务增长的数据引擎?

镜舟科技

游戏 分析型数据库 StarRocks 物化视图 实时分析

体育 NFT 项目的技术框架

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

不同Redis持久化方案在库存场景的性能评测

晨章数据

NoSQL 数据库 kv 数据库、

职场新人如何设计职业规划

老张

职场成长 职业生涯规划 职场认知

区块链智能合约的优化

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

牛牛剧场APP:不只是观看,更是投资未来的趋势

新消费日报

艺术藏品NFT的开发流程

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

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