50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

如何设计一个高性能、不可篡改的选票系统——以美国总统选举为例

测试人

Playwright MCP入门指南:从零开始构建自动化测试

测吧(北京)科技有限公司

一佳教育培训课程系统小程序:一站式教育数字化解决方案

微擎应用市场

婚纱摄影小程序管理系统:助力摄影商家数字化运营新方案

微擎应用市场

当游戏NPC有了“灵魂”,网易伏羲解码游戏智能交互场景新实践

网易伏羲

网易伏羲 游戏AI 逆水寒手游 新倩女幽魂

不止节能,更能 “生钱”:MyEMS 辅助企业参与电力现货市场的实操案例

开源能源管理系统

开源 能源管理系统

添加DNS解析记录需要注意哪些事项?(国科云)

防火墙后吃泡面

医院更衣室外来物种:全新自动发衣系统,比你效率高

斯科信息

斯科信息 RFID自动发衣系统 RFID智能发衣机

2025 年 9 月《大模型 SQL 能力排行榜》发布

爱可生开源社区

sql LLM

思科SRv6 实现 VPN+流量工程测试

天翼云开发者社区

网络

函数计算 × MSE Nacos : 轻松托管你的 MCP Server

阿里巴巴云原生

阿里云 云原生 函数计算 MSE

当能耗监控变 “游戏”:MyEMS 可视化看板如何让员工主动参与节能?

开源能源管理系统

开源 能源管理系统

SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施

阿里巴巴云原生

阿里云 云原生 sls

企业如何选择私有化部署的即时通讯(IM)系统?

BeeWorks

即时通讯 IM 私有化部署

等保合规日志 “暗礁” 识别:5个常见错误+规避方法

运维有小邓

日志管理 日志审计 等保20 Syslog日志管理

拼叨叨砍价系统:实体店低成本引流的营销利器

微擎应用市场

流量突然提升100倍QPS,怎么办?

测试人

提升AD管理效率:权限委派的两次进化

运维有小邓

AD域管理

电商小程序开发,打通物流端的终极大招之API接口

快递鸟

原生 App 的开发费用

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

APP开发 软件外包公司 APP外包

如何像顶尖产品主理人一样思考?掌握这五个黄金维度

星云低代码中间件

软件 业务系统 企业系统

DeepSeek-V3.2的DSA稀疏注意力技术:在TPU平台上的效能革命与适配实践

中昊芯英

人工智能 tensorflow TPU 大语言模型 DSA

【隐语SecretFLow隐私计算】纵向联邦算法 SecureBoost Benchmark——SGB性能测试报告

隐语SecretFlow

算法 联邦学习 隐私计算 可信隐私计算评测

如何通过内核版本检查判断FreeBSD是否需要重启

qife122

freebsd 内核更新

喜报!网易灵动荣获2025全球数贸创新大赛机器人赛道金奖

网易伏羲

智慧矿山 网易伏羲 工程机械 网易灵动

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名AI代理框架需求洞察

qife122

开源项目 AI开发

一种智能调度分布式路径计算解决方案

天翼云开发者社区

CDN 安全加速

事件驱动重塑 AI 数据链路:阿里云 EventBridge 发布 AI ETL 新范式

阿里巴巴云原生

阿里云 云原生 EventBridge

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