FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对

越来越多的开发者和内核维护者青睐 rust,但在内核开发社区中,支持 rust 和支持 c 的阵营之间存在争议。

Rust 最终应该在 Linux 内核中取代 C 代码。然而,这可能需要几十年的时间才能实现。但在短期内,预计会看到 Rust 代码在 Linux 中的激增,从边缘设备到微软的 Xbox 都有支持,尽管包括一些 Linux 内核维护者在内的许多人对此表示不满。

Rust 在内核中的使用越来越普遍,并且已经证明其在 Linux 内核和其他领域的各种用例中优于 C,特别是在内存安全方面。然而,Rust 相对于内核中的 C 语言并非没有风险,更不用说其非常陡峭的学习曲线。越来越多的开发人员和内核维护人员喜欢 Rust,但内核开发社区中存在着支持 Rust 和支持 C 阵营之间的争论,这种争论在本周持续进行,双方进行了激烈的交流。

Rust 相关的动态是 FOSDEM (欧洲自由和开源开发者会议) 的一个主要讨论主题,这是一个由志愿者在布鲁塞尔自由大学 (ULB) 组织的领先开源会议。在数十个与 Rust 相关的演讲中,由 Miguel Ojeda 做的同名演讲 Rust for Linux 脱颖而出,他负责维护该项目,并且是 Linux 基金会技术咨询委员会的成员。除了讨论 Rust for Linux 项目外,他还介绍了发行工具链的状态、Rust 的稳定性,以及重要的是,你如何为内核的开发做出贡献。Rust for Linux 计划还在与 GCC 和其他组织合作,以促进在 Linux 内核中添加直接内存访问 (DMA) Rust 抽象。

Google 一直是将 Rust 添加到内核以在 Android 手机中运行 Linux 的坚定支持者。在内核中使用 Rust 被认为是避免与 C 和 C++ 代码相关的内存漏洞并为 Android 操作系统增加更多稳定性的一种方式。“Google 希望用 Rust 代码替换 C 代码,这只代表内核的一小部分,但会产生巨大的影响,因为我们谈论的是数十亿部手机,”Ojeda 在他的演讲后告诉我。

除了 Google 之外,随着 Rust 获得更多的架构支持以及“维护者对它越来越满意”,Rust 的采用和热情也在增加,Ojeda 告诉我。“维护者已经告诉我,如果可以的话,他们现在就开始编写 Rust,”Ojeda 说。“如果他们可以放弃 C,他们就会这样做。”

Ojeda 在他的演讲中没有提到的是,最近那些不愿在容器中混合 C 和 Rust 代码的维护者遭到了强烈反对。9 月,Linux 的创建者 Linus Torvalds 在他的 Open Source Summit 主题演讲中将这场争议描述为具有“几乎宗教战争的意味”。Torvalds 随后表示,虽然这场争议涉及健康的争论,但有些争论正变得非常消极。

问题在于 C 语言和 Rust 语言在跨语言边界提交更改时存在的文化冲突。代表 Rust 人员修改 C 接口可能从 Rust 的角度来看是有意义的(反之亦然),而 C 人员则寻求 Rust 贡献来插入 C。

这场争议可以追溯到三年多前,当时有人提出 Rust 具有 C 所不具备的某些安全优势,可以成为内核的一部分并有可能取代它。尽管如此,该项目并没有停滞不前。

例如,现在著名的缓冲区溢出攻击或可以使用 C 和 CPU 生成的漏洞几乎已经过时。虽然 Rust 提供了一些安全特性和缺点,但与更容易掌握的 C 相比,它也更难学习。

在最近的 Rust 和 C 阵营之间的一次交流中,软件工程师和 Linux 内核维护者 Christoph Hellwig 在 1 月初的一封电子邮件中写道:“kernel/dma 中不要有 Rust 代码。”他的信息是为了回应在 Linux 内核中为 DMA API 添加 Rust 补丁的请求。一月份,在最近的一次来回讨论中,在周三的 FOSDEM 周边会议前夕,讨论进一步升温。

(2016 年,Hellwig 在一起针对当时的 VMware 的诉讼中败诉,声称 vSphere 侵犯了一个开源许可证。汉堡的德国法院驳回了该诉讼。)

FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对上周,Hellwig 拒绝了 Red Hat 工程师和内核贡献者 Danilo Krummrich 对为 C API 添加 Rust 抽象的支持。

Krummrich 提出,DMA 一致性分配器的 Rust 抽象层应作为“单独的组件”进行维护。Hellwig 上周回复了 Krummrich 的提议:

Rust 浪潮在争议中,人们一直在大声支持 Ojeda。他的大部分讨论还涵盖了内核中 Rust 倡导者发表的声明,从内核的首席开发人员(包括 Linux 创建者 Linus Torvalds 本人)到 Red Hat、Samsung、Google、Microsoft 等公司的技术负责人。

在他的演讲中,Ojeda 重申了他之前在 2021 年给 Torvalds 的电子邮件中写的一句话,他说这句话至今仍然适用:

“通过在 Linux 内核中使用 Rust,我们希望:

由于下面提到的语言特性,用 Rust 编写的新代码可以降低内存安全错误、数据竞争和总体逻辑错误的风险。由于 Rust 的安全子集,维护人员更有信心重构和接受模块的补丁。由于基于现代语言特性且有详细文档支持的更易于推理的抽象,新的驱动程序和模块变得更容易编写。由于使用了现代语言,更多的人参与到内核的开发中。通过利用 Rust 的工具链,我们持续确保项目中已建立的文档规范得到执行。例如,我们要求对所有公共 API、安全性前置条件、unsafe 代码块和类型不变量都进行文档说明。与此同时,使用 Rust 和 C 之间的选择不一定是二选一的问题。我认为,C 将无限期地用于许多内核层和规范中。毕竟,古老的格言适用:‘如果它没有坏,那就不要修理它。’”

Ojeda 告诉我:“有些维护人员不想放弃 C。但是何时不再使用 C 取决于成熟度。这取决于底层和架构的成熟度,而架构的成熟度各不相同。”

以上就是FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/73512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月13日 22:21:51
下一篇 2025年11月13日 22:48:21

相关推荐

  • 当父元素仅设置行高时,块级和行内块级元素的行为有何区别?

    当父元素仅设置行高时,块级或行内块级子元素的行为 在 html 中,当父元素仅设置行高 line-height 时,块级或行内块级元素的行为会有所不同。 <line-height: 60px; background-color: antiquewhite; 哈哈哈 行内块级元素(display…

    2025年12月24日
    200
  • 构建模拟:从头开始的实时交易模拟器

    简介 嘿,开发社区!我很高兴分享我的业余项目 Simul8or – 一个实时日间交易模拟器,旨在为用户提供一个无风险的环境来练习交易策略。该项目 100% 构建在 ASP.NET WebForms、C#、JavaScript、CSS 和 SQL Server 技术堆栈上,没有外部库或框架。从头开始构…

    2025年12月24日
    300
  • Bear 博客上的浅色/深色模式分步指南

    我最近使用偏好颜色方案媒体功能与 light-dark() 颜色函数相结合,在我的 bear 博客上实现了亮/暗模式切换。 我是这样做的。 第 1 步:设置 css css 在过去几年中获得了一些很酷的新功能,包括 light-dark() 颜色函数。此功能可让您为任何元素指定两种颜色 &#8211…

    2025年12月24日
    100
  • 如何使用 CSS 渐变实现仅显示左右两端的多彩边框?

    使用 css 渐变实现多彩边框 在需要给元素添加边框时,我们可以通过 css 的 border-image 属性实现渐变边框效果。例如,以下代码可以设置一个左右两端显示渐变色的边框: border-image: linear-gradient(rgba(255, 255, 255, 0.00) 0%…

    2025年12月24日
    000
  • 如何在 Web 开发中检测浏览器中的操作系统暗模式?

    检测浏览器中的操作系统暗模式 在 web 开发中,用户界面适应操作系统(os)的暗模式设置变得越来越重要。本文将重点介绍检测浏览器中 os 暗模式的方法,从而使网站能够针对不同模式调整其设计。 w3c media queries level 5 最新的 web 标准引入了 prefers-color…

    2025年12月24日
    000
  • CSS 样式隔离难题:不同项目如何兼容不同版本组件库?

    CSS 样式隔离难题:不同项目如何兼容不同版本组件库? 在软件开发中,不同的项目经常会使用不同的组件库或框架版本。当这些项目需要集成在一起时,不同样式之间的冲突就成了一个难题。在这个案例中,项目 A 和 B 都使用 ant-design-vue 组件库,但版本不一致。由于部分 A 项目中的组件 CS…

    2025年12月24日
    000
  • 如何使用 CSS 检测操作系统是否处于暗模式?

    如何在浏览器中检测操作系统是否处于暗模式? 新发布的 os x 暗模式提供了在 mac 电脑上使用更具沉浸感的用户界面,但我们很多人都想知道如何在浏览器中检测这种设置。 新标准 检测操作系统暗模式的解决方案出现在 w3c media queries level 5 中的最新标准中: 立即学习“前端免…

    2025年12月24日
    000
  • 如何检测浏览器环境中的操作系统暗模式?

    浏览器环境中的操作系统暗模式检测 在如今科技的海洋中,越来越多的设备和软件支持暗模式,以减少对眼睛的刺激并营造更舒适的视觉体验。然而,在浏览器环境中检测操作系统是否处于暗模式却是一个令人好奇的问题。 检测暗模式的标准 要检测操作系统在浏览器中是否处于暗模式,web 开发人员可以使用 w3c 的媒体查…

    2025年12月24日
    200
  • 浏览器中如何检测操作系统的暗模式设置?

    浏览器中的操作系统暗模式检测 近年来,随着用户对夜间浏览体验的偏好不断提高,操作系统已开始引入暗模式功能。作为一名 web 开发人员,您可能想知道如何检测浏览器中操作系统的暗模式状态,以相应地调整您网站的设计。 新 media queries 水平 w3c 的 media queries level…

    2025年12月24日
    000
  • 如何在 VS Code 中解决折叠代码复制问题?

    解决 VS Code 折叠代码复制问题 在 VS Code 中使用折叠功能可以帮助组织长代码,但使用复制功能时,可能会遇到只复制可见部分的问题。以下是如何解决此问题: 当代码被折叠时,可以使用以下简单操作复制整个折叠代码: 按下 Ctrl + C (Windows/Linux) 或 Cmd + C …

    2025年12月24日
    000
  • 我在学习编程的第一周学到的工具

    作为一个刚刚完成中学教育的女孩和一个精通技术并热衷于解决问题的人,几周前我开始了我的编程之旅。我的名字是OKESANJO FATHIA OPEYEMI。我很高兴能分享我在编码世界中的经验和发现。拥有计算机科学背景的我一直对编程提供的无限可能性着迷。在这篇文章中,我将反思我在学习编程的第一周中获得的关…

    2025年12月24日
    000
  • 在 Sass 中使用 Mixin

    如果您正在深入研究前端开发世界,那么您很可能遇到过sass(语法很棒的样式表)。 sass 是一个强大的 css 预处理器,它通过提供变量、嵌套、函数和 mixins 等功能来增强您的 css 工作流程。在这些功能中,mixins 作为游戏规则改变者脱颖而出,允许您有效地重用代码并保持样式表的一致性…

    2025年12月24日
    200
  • 姜戈顺风

    本教程演示如何在新项目中从头开始配置 django 和 tailwindcss。 django 设置 创建一个名为 .venv 的新虚拟环境。 # windows$ python -m venv .venv$ .venvscriptsactivate.ps1(.venv) $# macos/linu…

    2025年12月24日
    000
  • 花 $o 学习这些编程语言或免费

    → Python → JavaScript → Java → C# → 红宝石 → 斯威夫特 → 科特林 → C++ → PHP → 出发 → R → 打字稿 []https://x.com/e_opore/status/1811567830594388315?t=_j4nncuiy2wfbm7ic…

    2025年12月24日
    000
  • css和c的区别是什么

    区别是:1、C语言是一门面向过程、抽象化的通用程序设计语言、计算机编程语言,广泛应用于底层开发;2、CSS是一种用来表现HTML或XML等文件样式的计算机语言,可以做到网页和内容进行分离的一种样式语言。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电…

    2025年12月24日
    000
  • 响应式HTML5按钮适配不同屏幕方法【方法】

    实现响应式HTML5按钮需五种方法:一、CSS媒体查询按max-width断点调整样式;二、用rem/vw等相对单位替代px;三、Flexbox控制容器与按钮伸缩;四、CSS变量配合requestAnimationFrame优化的JS动态适配;五、Tailwind等框架的响应式工具类。 如果您希望H…

    2025年12月23日
    000
  • 如何查看编写的html_查看自己编写的HTML文件效果【效果】

    要查看HTML文件的浏览器渲染效果,需确保文件以.html为扩展名保存、用浏览器直接打开、利用开发者工具调试、必要时启用本地HTTP服务器、或使用编辑器实时预览插件。 如果您编写了HTML代码,但无法直观看到其在浏览器中的实际渲染效果,则可能是由于文件未正确保存、未使用浏览器打开或文件扩展名设置错误…

    2025年12月23日
    400
  • html5怎么设置单选_html5用input type=”radio”加name设单选按钮组【设置】

    HTML5 使用 type=”radio” 实现单选功能,需统一 name 值构成互斥组;通过 checked 设默认项;可用 CSS 隐藏原生控件并自定义样式;推荐用 fieldset/legend 增强语义;required 可实现必填验证。 如果您希望在网页中创建一组互…

    2025年12月23日
    200
  • node.js怎么运行html_node.js运行html步骤【指南】

    答案是使用Node.js内置http模块、Express框架或第三方工具serve可快速搭建服务器预览HTML文件。首先通过http模块创建服务器并读取index.html返回响应;其次用Express初始化项目并配置静态文件服务;最后利用serve工具全局安装后一键启动服务器,三种方式均在浏览器访…

    2025年12月23日
    300
  • HTML5怎么制作广告_HTML5用动画与交互制横幅或弹窗广告吸引点击【制作】

    可利用HTML5结合CSS3动画、Canvas、Web Animations API、Intersection Observer和video标签制作互动广告:一用@keyframes实现横幅入场动画;二用Canvas绘制并响应悬停;三用Web Animations API控制弹窗时序;四用Inter…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信