2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

设计原则 — 基于接口而非实现编程

Lemoon Can

面向对象设计原则 设计原则

王者荣耀商城异地多活设计

π

Verilog 设计方法

芯动大师

流程 Verilog 设计方法

【沙丘大会回顾】九科信息研发中心自动化负责人郑文茂分享央企数字员工实践案例

九科Ninetech

模块一作业

陈天境

FL Studio21正式版本发布更新附送85款主题下载

茶色酒

FL Studio 21 FL Studio21

超详细FL Studio水果2023新版更新功能讲解!80项更新与改进!

茶色酒

FL Studio FL Studio 21 FL Studio21

2022-12-07:删除重复的电子邮箱。删除重复数据后,id=3的数据被删除。请问sql语句如何写? DROP TABLE IF EXISTS `person`; CREATE TABLE `per

福大大架构师每日一题

数据库 福大大

面试常问的高并发系统设计,我们到底该怎么学?

程序员小毕

程序员 面试 后端 高并发 架构设计

模块一作业

unique

架构实战营-模块一作业

氢原子

#架构实战营

架构实战营模块一_作业

原城

架构实战营 #架构实战营 架构师实战营 「架构实战营」

重写事件抛发接收机制原理

千锋IT教育

设计原则

Lemoon Can

面向对象设计原则 设计原则

模块七-王者荣耀商城异地多活架构设计

Geek_b35d92

商城 构架 王者荣耀

ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

NebulaGraph

图数据库 世界杯 AI预测

如何通过“推送文案的千人千面”有效提升用户转化和留存

极光GPTBots-极光推送

极光推送 用户运营

设计原则 — 多用组合,少用继承

Lemoon Can

面向对象设计原则 设计原则

FL Studio2023新版本功能爆料将引入4款全新插件!创作力UP!

茶色酒

FL Studio

百亿节点、毫秒级延迟,携程金融基于 NebulaGraph 的大规模图应用实践

NebulaGraph

风控 风控模型 电商风控

架构训练模块1

KING

阿里云祝顺民:生而为云,连接增长

云布道师

阿里云 云网络

无刷直流电机最强科普(收藏版)

元器件秋姐

发展史 电机 BLDC应用 电子工程师 无刷直流电机

架构实战 1 - 微信业务架构图-学生管理系统技术选型

架构实战营 「架构实战营」

提供多种数据看板,瓴羊Quick BI全面提升企业可视化分析能力

小偏执o

携程全球合作伙伴峰会商旅分论坛:以五大中心构建“人数智”服务能力体系

携程商旅

架构训练营模块一作业

现在不学习马上变垃圾

#架构实战营

主数据管理实施四部曲概论

用友BIP

架构--模块七 作业

李某人

架构训练营

全面进化!Apache Doris 1.2.0 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 开源 数据分析 Doris

从汽车之家效能平台建设看汽车行业研发数字化之路

之家技术

数字化 汽车 构架 效能度量 效能

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