鲁斯特(Rust)不能免受莱纳斯·托瓦尔兹(Linus Torvalds)的批评

几个星期前 关于的新闻 在中进行的一些实现 linux-next分支,其中包括一组初始组件 开发设备驱动程序 用Rust语言。

该文档是关于在Linux内核中使用Rust以及使用Rust语言的带有字符设备驱动程序的内核模块示例单独发布的。 该代码由分支机构的维护者Stephen Rothwell添加。

之后,Linus Torvalds进行了实施审核 在Linux内核中设置Rust语言驱动程序的可能性补丁 并提出了一些批评。

最大的投诉是由 逃脱潜力 错误情况下的“运行时故障恐慌”, 例如,在内存不足的情况下,包括内核的动态内存分配操作可能会失败。

托瓦尔兹 指出,对内核的这种关注从根本上是不可接受的, 而且,如果您不了解这一点,则可以完全拒绝尝试使用这种方法的任何代码。 另一方面,补丁程序的开发者同意该问题,并认为可以解决。

另一个问题是尝试使用浮点数或128位类型, 对于像Linux内核这样的环境无效。

您可能不了解何时可能发生的后果,所以也许
比我想象的要少的问题,但从根本上讲
我认为如果任何Rust映射都可能引起恐慌,这很简单
_从根本上来说-不可接受。

非核心控制器或代码中的映射失败,即
定义,所有新的Rust代码,永远都不会导致
有效地恐慌。 «哦,在某些情况下,我没有尝试使用
128位整数或浮点数'。

因此,如果Rust编译器导致无法执行的隐藏分配
检测并作为错误返回,那么我深信所有这一切
方法应该完全不适用,并且Rust基础架构,
无论是在编译器级别还是在内核包装器中,您都需要更多
工作。

原来这是一个更严重的问题。,因为此刻 Rust的中央图书馆是不可分割的,代表着巨大的污点; 无法仅请求某些功能,从而避免使用一个或另一个有问题的功能。

解决该问题的方法可能需要更改rust编译器和库,尽管该团队尚未制定有关如何为语言库实现模块化的策略。

另外, Torvalds指出所提供的示例控制器是无用的 并建议以解决实际问题之一的驱动程序为例。

在这之前 Google宣布参与一项旨在促进Linux内核中Rust支持的计划 y 提供技术方面 实现Rust来解决由于使用内存错误而引起的问题的可行性。

Google认为Rust已准备好加入C作为开发语言 Linux内核组件。 本文还提供了在Android平台上使用Rust语言来开发内核驱动程序的示例(Rust被公认为是Android开发的官方支持语言)。

应该指出的是 Google准备了用Rust编写的控制器的初始原型 Binder的进程间通信机制,这将允许在C和Rust中对Binder实现进行详细的性能和安全性比较。

以目前的形式,该工作尚未完成,但是对于Binder工作所需的内核功能的几乎所有基本抽象,已经准备好在Rust代码中使用这些抽象的层。

最后,如果您想了解更多信息,可以查看详细信息 在下面的链接中。


发表您的评论

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

*

*

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

  1.   米格尔·罗德里格斯(Miguel Rodriguez)

    考虑到Rust是一种与C语言不同的范例,Rust是一种新的语言,因此他们的所有批评都是正确的,对于库或编译器本身中的任何细节所引起的担忧是可以理解的,尽管代码是有效的,但它会导致内核也要破解,如何实现和构建。 这就是为什么诸如能够对库进行模块化以仅调用程序必需的那些功能(或在此情况下为任何控制器)保持活动状态之类的建议可以正常工作的原因。 您所要求的也不是没有道理的,它们为您带来了一个真正的原型控制器,该控制器可以很好地解决当前问题(或者至少可以完成与内核中现有任务相同的工作,并且不会出现恐慌)。

  2.   塞特

    我时不时地重读作者的文章 Linux Adictos 但当我看到尽管内容非常好,但最终结果却被可怕的拼写破坏时,我很快就感到绝望。
    拼写和语法会这么难吗?
    丢人现眼!
    振作起来!