HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Linus 妥协?30 年 Linux 内核语言标准将更新

  • 2022-02-28
  • 本文字数:1490 字

    阅读完需:约 5 分钟

Linus 妥协?30 年 Linux 内核语言标准将更新

近日,据 Linux 内核邮件消息,Linux 内核有望在近期采用最新 C 语言标准。Linux 内核一直在快速发展,但由于仍然有着许多老的依赖项,其内核代码仍是 1989 年的 C 语言标准,距今已有 30 余年。不过,这一情况有望在近期的 5.18 版本中发生改变。

修复补丁引发内核升级讨论,Linus 被说服

 

问题起源来自 Linux 的一次社区讨论,一位名叫 Jakob Koschel 的博士生,在研究阻止与内核链表 primitive 相关的预测执行漏洞时,发现了一个问题。Linux 内核广泛使用由 struct list_head 定义的双向链表,这个情况最终就导致了 USB 子系统中的一个 bug:传递给该宏的迭代器在退出宏后还能被使用。发现这个问题后,Koschel 随即提交了一个修复补丁,在循环停止后使用迭代器修复了 bug。

 

起初,Linus Torvalds 并不喜欢这个修复补丁,他认为这只是一个普通的 bug。不久之后,Linus 发现了问题的根源:传递给链表遍历宏的迭代器,必须在循环本身之外的范围内声明。而导致这个问题出现的原因就是内核在 C89 标准上无法在循环中声明变量。

 

于是 Linus 写信给 Linux 内核邮件列表(LKML),他认为是时候转向 C99 标准了,虽然 C99 也有 20 多年的历史,但至少是较近的,足以解决这个问题。而对于为什么一直沿用 C89,Linus 解释是因为一些老的 GCC 编译器版本有奇怪的问题,因此不敢升级。

 

Linux 内核开发人员 Arnd Bergmann 同意升级 Linus 内核标准的看法,他也希望在这方面取得进展。不过他认为应该升级到 2011 年的 C11 标准,因为 C99 并没有流行特别广泛,而 C11 引入了标准化的多线程支持并使 C 语言更加安全。同时他表示,Linux 内核的最低 C 编译器 GCC 5.1 版本已经支持 C11,这让升级标准实行起来也不会很难。

 

最终,Linus 被说服,表示赞同这个想法,决定在下个版本早期尝试一下。如果顺利的话,C 语言标准有望在下一个内核版本也就是 Linux 5.18 中迁移到 C11。不过 Linux 内核开发人员兼记者 Jonathan Corbet 警告称,“语言标准的升级可能在内核中某些不为人知的角落引发 bug,所以必须尽早发现问题才能及时进行版本还原,但如果一切进展顺利,下一个 Linux 内核版本将正式转向 C11。”

Rust 成 Linux 第二官方语言

 

一直以来,Linux 都是 C 语言的代言人,但是 Rust 的兴起赢得了越来越多人的支持。年前,Linux 内核增加对 Rust 作为第二语言的支持,Rust 凭借优秀的性能与安全等特性赢得了 Linus 和其他社区内核维护者的支持。

 

Linus 鼓励采用缓慢稳定的方法将 Rust 引入 Linux,他也表示将 Rust 接口用于驱动程序和其他非核心内核程序是有道理的:“我相信这会发生。它可能不是 Rust,但我们将会有不同的模型来编写这些类型的东西,而且 C 不会是唯一的模型。”

 

Linux 内核维护者 Miguel Ojeda 也曾表示,“该项目尚未完成,大多数工作还没有完成。但如果高级维护人员接受当前的更改并希望我们在内核中工作,我们就准备好进入主线。”

 

关联阅读:

 

2022 年,Rust 将成为 Linux 内核第二官方语言?

另一重大更新:软件定义芯片

 

除了内核的相关更新,英特尔的软件定义芯片也将在 Linux 5.18 中首次亮相。据外媒 Phoronix 报道,一位来自红帽的 Linux 开发员工 Hans de Goede 透露,如果无意外,英特尔为 Xeon CPU 添加的软件定义芯片(SDSi)机制将在 Linux 5.18 内核中得到正式支持。

 

芯片已内建许多强大的功能,但都以软件锁住,用户必须付费购买授权来解锁功能,用户购买的功能是结合芯片驱动程序控制的启动功能来解锁。SDSi 特点是能够通过软件激活被锁定的芯片功能,能够给在 CPU 上运行的 Linux 系统带来较大优化。

 

参考链接:

 

https://lwn.net/SubscriberLink/885941/01fdc39df2ecc25f/

2022-02-28 16:567593

评论

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

浅谈基于Shapley值的数据融合反欺骗数据判断相关

天翼云开发者社区

数据 Shapley

旭阳数字郗维宝:数智化转型助力焦化企业打破行业困境

用友BIP

升级企业数智化底座 2023用友技术大会

VM虚拟机 v13.0.2激活版 for Mac许可秘钥

Rose

VMware Fusion Pro 13 VM虚拟机破解版 Mac虚拟机 VMware Fusion激活秘钥

云原生可观测性的几大误区

Yestodorrow

云原生 APM 监控 可观测性

奋楫扬帆 津鸿智放丨中软国际携手深开鸿亮相第七届世界智能大会

科技热闻

从 DevOps 到平台工程:软件开发的新范式

SEAL安全

DevOps 软件研发 平台工程

BATJ架构师首推!分布式事务原理与实战,出神入化

程序知音

Java 分布式 java架构 Java进阶 后端技术

2023年互联网大厂高频Java面试题(附答案)整理总结

架构师之道

Java 面试

Django笔记三十一之全局异常处理

Hunter熊

Python django 异常处理 全局异常

标签系列:标签管理平台的架构与设计

小鲸数据

数据 标签 数据管理 标签体系

Java性能分析工具JProfiler注册码下载

Rose

JProfiler激活码 JProfiler Mac永久激活版 Java 分析器 JProfiler中文版 JProfiler下载

2023-05-18:有 n 名工人。 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣

福大大架构师每日一题

Go 算法 rust

JavaScript中eval和with语句如何影响作用域链:探索深度知识

Immerse

CDN网关超大range计算方法

天翼云开发者社区

CDN

苹果系统更新:MacOS 11-13.x(PKG系统安装包及IPSW固件)

Rose

mac系统 macOS 13 Ventura 苹果最新系统 苹果系统下载

【5.12-5.19】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

Java面试题1000+附答案大全(合适各级Java开发人员)

采菊东篱下

Java

C语言编程—常量

梦笔生花

高级修图软件:Affinity Photo中文Mac版

真大的脸盆

Mac 图像处理 图像编辑 编辑图像 处理图像工具

中央企业数字化转型专业委员会正式揭牌!

用友BIP

财务管理

上海丨阿里云 Serverless 技术实战营邀你来玩!

Serverless Devs

阿里云 Serverless 中间件

MobTech 秒验|助力预热618

MobTech袤博科技

异常体系与项目实践

Java 架构

原型设计Axure RP 9中文授权码【Mac/win】

Rose

Axure RP 9汉化 Axure RP 9授权码 产品原型设计工具 axure rp9下载 axure rp9安装教程

打造绿色低碳存储方案,助推数据中心绿色长“存”

天翼云开发者社区

CIO

Scrum进入疲惫期?三点帮你走出困境

敏捷开发

Scrum 敏捷开发 软件开发 Scrum Master 疲倦期

全球首款通过HDR Vivid认证的平板发布,华为视频全场景观影体验再升级

最新动态

HashMap 底层是如何实现的?

javacn.site

java面试

《好好学习》:如何管理知识?

郭明

深入浅出 OkHttp 源码解析及应用实践

vivo互联网技术

okhttp 拦截器 源代码

发现你的职业价值观:打造成功职业生涯的关键

Jack

Linus 妥协?30 年 Linux 内核语言标准将更新_架构_辛晓亮_InfoQ精选文章