solidot新版网站常见问题,请点击这里查看。

Linux 内核讨论采用现代 C 语言标准

Linux
WinterIsComing (31822)发表于 2022年02月25日 20时56分 星期五

来自超时空碎片
Linux 内核在快速发展,但它同时依赖于一些相当古老的工具,其中之一是代码仍然采用的是 1989 版的 C 语言标准,已有三十多年历史了。这一情况有望在 5.18 kernel 中改变。Jakob Koschel 向 Linus Torvalds 递交的补丁引发了采用现代 C 语言标准的讨论。他的补丁旨在修复内核链表相关的预测执行漏洞。Torvalds 对补丁修复的问题表示不解,Koschel 对此做出了进一步的解释,Torvalds 随后认为也许可以采用更直接的修复如块级变量声明。但 C89 不支持,而 1999 年发布的 C99 标准支持。Torvalds 说,内核代码一直停留在 C89 的原因之一是编译器 gcc 的旧版本会出现奇怪的问题,现在内核要求的 gcc 最低版本已经提高到了 v5.1 那些 bug 可能不再相关了。另一位内核开发者 Arnd Bergmann 提议直接升级到 C11 甚至 C2x,但跨越太大内核社区未必接受。Torvalds 宣布将在下一个内核版本 v5.18 中尝试下。如果一切顺利,C 语言标准有望在下一个内核版本中迁移到 C11。