NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2022-02-28 16:567335

评论

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

开源公开课丨大数据调度系统Taier任务调度介绍

袋鼠云数栈

iofod - 借助低代码快速构建WeUI表单

独来独往

前端 低代码 表单 weui

NFTScan 与 Bulletime 在 NFT 底层数据方面达成战略合作

NFT Research

区块链 NFT 合作伙伴

Nginx + keepalived 实现高可用

C++后台开发

nginx 高可用 中间件 后端开发 C++开发

java编程技术学习好还是自学好

小谷哥

IntelliJ IDEA 设置 IBM Semeru JDK

HoneyMoose

科创人·望繁信创始人索强:中国版流程挖掘注定有完全不同的活法

科创人

RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

矜辰所致

RT-Thread 8月月更 IO设备模型

前端程序员在培训学习中需要学习什么?

小谷哥

如何选择适合自己的前端培训机构

小谷哥

字节跳动基于ClickHouse优化实践之“多表关联查询”

字节跳动数据平台

数据库 数据分析 OLAP Clickhouse 数据查询

ElasticSearch 集群备份与恢复实践

移动云大数据

elasticsearch

干货 | 工单系统与 ITSM 软件的区别是什么?

嘉为蓝鲸

运维 AIOPS 流程 ITSM 工单

学好前端开发技术的培训机构推荐

小谷哥

阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

退休的汤姆

面试 微服务 社招 Java工程师 秋招

Node js 开发入门 —UDP 编程,小白也能轻松学会

CRMEB

Ding!您有一份ChunJun实用指南,请查收

袋鼠云数栈

开源一夏 | Docker Compose从入门到实践

微枫Micromaple

开源 容器 云原生 8月月更

如何在OpenHarmony上使用SeetaFace2人脸识别库?

OpenHarmony开发者

OpenHarmony

如何完美的进行数字化转型?

雨果

数字化转型

IPQ4019 IPQ4029 ,wallys ,802.11ac Outdoor Metal Waterproof Enclosure Metal Outdoor

wallys-wifi6

内网场景 Dubbo 微服务接入观测云

观测云

IBM Semeru Windows 下的安装

HoneyMoose

一箭双雕!刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

退休的汤姆

Java 面试 阿里 Java工程师 spring、

大型软件团队协作中的常见难题和避坑策略|ONES 研发管理大师课

万事ONES

所有人!把膝盖准备好,这份“保姆级”的RabbitMQ笔记,你不服不行

退休的汤姆

面试 RabbitMQ 社招 Java工程师 秋招

开源小白到核心开发——我与 sealer 的成长故事

阿里巴巴中间件

Docker 阿里云 容器 云原生 sealer

零基础学习java有必要参加吗?

小谷哥

自动化元数据管理的“七宗最”?

雨果

元数据

Hadoop与数据湖是什么关系?终于有人说明白了!

雨果

hadoop 数据湖

Apache Pulsar Tenant 和 Namespace 级别限速使用与实现

移动云大数据

pulsar

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