写点什么

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

评论

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

复旦大学智能计算平台与世界科学智能大赛启动仪式

新云力量

智能 计算 复旦大学

入门指南:使用Spring Boot构建Java应用程序

2756

入门学习

架构实战营(一)

架构实战营

CVPR2023|小红书提出 OvarNet 模型:开集预测的新SOTA,“万物识别”有了新玩法

小红书技术REDtech

深度学习 算法 小红书

实现 AI 大语言模型的关键在于超高性能存储能力

焱融科技

解决QT QGraphicsView提升到QChartView报错的问题

梦笔生花

最佳实践|亚马逊可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

JavaScript

什么是区块链?

TiAmo

区块链 去中心化 6 月 优质更文活动

一图看懂华为云CodeArts Board5大特性,带你玩转看板服务

华为云PaaS服务小智

云计算 数据可视化 华为云 企业研发管理 数据看板

直播程序源码技术分享主播邀请上麦功能

山东布谷科技

软件开发 程序 源码搭建 直播源码

华为开发者大会—开发者的一站式代码检查利器:华为云代码检查CodeArts Check

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

3dMax 应该用哪个渲染器?Vray、Corona、Arnold?

Finovy Cloud

提升测试质量的四个关键特征

老张

质量保障 测试质量

AI与企业信息安全的应用、技术以及前景

行云管家

AI 网络安全 信息安全 企业信息

小程序容器技术在移动警务中的业务价值

FinFish

小程序容器 移动警务 警务app

New Arrival: QCN9074 Dual Band/Tri-band 4X4 WIFI6 Network Card DR9074 (#QCN9074)

wallyslilly

QCN9074

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动

李彦宏:AI原生应用比大模型数量更重要

飞桨PaddlePaddle

人工智能 百度 paddle 大模型

目前包头市等保测评企业有几家?2家还是3家?

行云管家

等保 等级保护 等保测评 等保合规

Go语言中的init函数: 特点、用途和注意事项

EquatorCoco

编程 Go 语言

复旦发布云上最大科研智算平台

新云力量

智能 计算 复旦 科研智算平台

NFTScan 与 Sender Wallet 达成合作伙伴,双方在多链 NFT 数据方面展开合作!

NFT Research

NFT\

强化学习从基础到进阶-案例与实践[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 A3C算法

STC89C52+DHT20设计的环境温湿度检测仪

DS小龙哥

6 月 优质更文活动

Flutter性能优化的一些路径思考

Onegun

flutter 移动开发

搜索语义模型的大规模量化实践

百度Geek说

paddle NLP 大模型 企业号 6 月 PK 榜 6 月 优质更文活动 INT8

IoT场景时序数据库性能对比报告出炉,TDengine 远超 InfluxDB & Timescal

电子信息发烧客

沐曦与百度飞桨完成兼容性测试,助力计算机视觉应用发展

飞桨PaddlePaddle

人工智能 百度 paddle

es笔记一之es安装与介绍

Hunter熊

elasticsearch Kibana 安装Kibana

浅析 Jetty 中的线程优化思路

vivo互联网技术

jetty EatWhatYouKill 线程策略

工业物联网SCADA软件推荐

2D3D前端可视化开发

工业物联网 工业控制系统 web组态软件 HMI SCADA软件

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