矛盾的很,Go1.24 将需要更新的 Linux 内核!

大家好,我是煎鱼。

一门编程语言总是要适配多个平台多种架构,其中莫过于适配 Windows 和 Linux 的不同版本。

老的可能会被逐渐废弃,稳定版本的逐渐占据主流。Go 有 Go1 兼容性保障,导致取舍之间总是会纠结要不要继续保留老的 Linux 版本内核支持。

Go1.24 期望用 Linux 内核 3.2

最近 Go1.24 的规划已经提上日程了,其中包含一项内核变更《all: require Linux 3.2 kernel for Go 1.24[1]》:

c21dd9e13ae2ee87f19479b2e270ae43.png

在 2021 年,Go 将 Linux 内核的最低版本提高到了 2.6.32。至此 3 年多再也没变过。

Rust 和 glibc 在去年决定将内核的最低版本定为 3.2。Linux 生态系统的其他部分也逐步开始采用 3.2。

作为 Go 的最低版本,rsc 认为选用 3.2 这似乎是合理的。Go 团队计划在 Go 1.24 中做出改变。每个人都应该使用更新的内核进行安全更新。

Go 创始人的纠结

Go 创始人 Rob Pike 还是挺纠结的,他表示:总体而言,我对这一趋势持矛盾态度。对于 Go,它也有点违背兼容性承诺。

5b88fdb7bfac99671e1028afe42a16e8.png

制造商放弃对旧硬件的支持,要求我购买昂贵的升级产品,但没有任何回报,这让我多次感到困扰。

我仍然在实验室中运行 32 位 x86 Mac,因为没有它,我无法控制只能与旧版 macOS 交互的重要设备。我甚至无法将其连接到网络,因为担心某些更新会导致我的设备无法工作。

虽然我理解 “更新更安全,更新更好” 的隐含价值,但让 Go 二进制文件在旧操作系统上运行对项目的实际成本是多少?这似乎是评估该提案的更好方法。

最终结论

本次是由 rsc 直接当机立断,表示即使是改向支持 Linux 3.2 也都已经是 12 年前发布的了。肯定不算是先进技术!得变!

同时他们在 crypto/rand: crash process on error reading randomness[2] 的讨论中发现,Linux 3.17 增加了 getrandom(2) 方法,可以满足 Go 的使用诉求。将原定的 Linux 3.2 版本要求再度提高了。

最终 Go1.24 将 Linux 内核所需的最低版本定到了:Linux 3.17。另外 Linux 3.10 版本中追加补丁后添加了 getrandom(2) 系统调用也是能够支持的。

推荐阅读

参考资料

[1]

all: require Linux 3.2 kernel for Go 1.24: https://github.com/golang/go/issues/67001

[2]

crypto/rand: crash process on error reading randomness: https://github.com/golang/go/issues/66821

关注和加煎鱼微信,

一手消息和知识,拉你进技术交流群👇

64638aceed0b76981ee7561009e914f4.jpeg

25da70868a12abaadb2dd1125e04bd14.png

你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路

日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!

原创不易 点赞支持

### 安装 Nginx 1.24 的详细指南 #### 准备工作 确保 Linux 系统已更新至最新状态并安装必要的依赖项。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y ``` #### 添加官方源 为了获取稳定版本的 Nginx,建议添加官方仓库。对于特定版本如 1.24 版本,可能需要从编译源或其他第三方库中寻找支持。 ```bash echo "deb http://nginx.org/packages/mainline/ubuntu/ $(lsb_release -cs) nginx" | \ sudo tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg ``` #### 更新包索引 完成上述配置后,刷新本地软件包缓存以使新加入的源生效。 ```bash sudo apt update ``` #### 安装指定版本 如果要安装确切的 1.24.x 版本,则可以使用 `apt-cache policy` 查看可用版本列表,并通过全名指定安装该版本。 ```bash # 列出所有可选版本 apt-cache policy nginx # 假设目标版本号为 1.24.0-1~focal sudo apt-get install nginx=1.24.0-1~focal ``` 注意:实际命令中的版本字符串应替换为当前环境中有效的具体版本编号[^1]。 #### 验证安装成功与否 可以通过以下方式验证是否正确安装了所需的 Nginx 版本: ```bash nginx -v ``` 此操作会显示所安装的具体版本信息。 #### 启动与启用服务 为了让 Nginx 能够随系统启动而自动运行,执行如下指令来开启自启功能并立即激活服务。 ```bash sudo systemctl enable nginx.service sudo systemctl start nginx.service ``` 此时应该可以在浏览器中输入服务器 IP 地址或域名访问默认欢迎页面,确认 Web 服务器正常运作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值