Linux上的C++,这个话题时隔6年又复活了

Linux C++

再次提出在Linux中使用C++

看起来 引入 Rust 作为第二语言 程式设计 Linux 内核中最重要的变化之一 Linux 已经拥有了这些特性,但它标志着一个非常重要的起点,Linus Torvalds 和开发团队朝着 Linux 现代化迈出了重要的一步。

值得注意的是,最近以来, Linux 内核邮件列表 讨论又恢复了 这是六年前开始的,开玩笑地提出了1年2018月XNUMX日。

而且又被放回了桌子上。 “在Linux内核中采用现代C++代码的可行性”问题,超越了传统使用汇编片段的C语言和Rust语言的推广。

最初的提案于 2018 年推出, 由红帽工程师 作为一个笑话 众所周知的愚人节庆祝活动,许多人借此机会在社区上搞恶作剧,当时的情况就是这样,因为据说它发布了一组 45 个补丁,其中包括使用模板、类继承和C++ 函数的重载。

在我看来,C++14 是“最小”版本,具有合理的元编程支持,并且大部分没有以前版本中的类型(C++11 有大部分,但 C++14 填补了一些关键的缺失部分)。然而,在我看来,C++20 确实是最大的游戏规则改变者;尽管以前的版本可以执行许多 SFINAE 黑客攻击,但它们也给出了绝对无用的错误消息。

我们在 Linux 内核中进行了大量的元编程,这些元编程通常使用非常糟糕的宏技巧来实现。这些实际上也是不可能调试的。让我们以 uaccess.h 类型 hack 为例,其中一些是我设计和编写的。在 C++ 中,不同的强制转换和 case 语句可以分为单独的模板实例,并且只需一点​​点独创性,用户空间指针与内核用户空间指针之类的事情也可以严格执行,以及已经标记的用户空间指针与那些没有标记的用户空间指针,更不用说在 32 位内核中轻松处理 64 位用户空间类型的情况以及字节序转换的应用。

现在 差不多六年后,汉斯·彼得·安文 (Hans Peter Anvin) 重要的英特尔内核开发人员和 syslinux、klibc 和 LANANA 等项目的创建者, 已主动继续讨论。 Anvin表示,自1999年以来,C和C++语言的发展取得了显着的进步,并且C++语言被证明比C更适合操作系统内核开发。

安万 提到以前需要特定扩展的功能 来自海湾合作委员会, 现在可以轻松地用标准 C++ 实现, 在许多情况下,使用 C++ 将改进基础设施,而无需完全更改代码。

除此之外 建议至少使用C++ 14规范, 其中包括元编程工具,并鼓励使用 C++ 20 规范,该规范引入了对可以减少错误发生率的概念的支持。

有人认为 C++ 比 Rust 更可取由于后者在语法上与 C 语言有显着差异,因此对于当前的内核开发人员来说并不常见,并且不允许逐步重写代码。就C++语言而言,可以逐渐翻译部分C语言代码,类似于C代码如何编译为C++。

虽然 Linux 内核主要是 C 代码,各个部分都是用汇编语言编写的,并且围绕 Linux 内核中的 Rust 支持不断开展工作,但目前还不清楚是否有足够的权重来实现这一点,即看到 Linux 内核 C 代码的可能性将来转换为C++。

最后,如果你是 有兴趣了解更多,您可以在中查看详细信息 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。