魯斯特(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 但當我看到儘管內容非常好,但最終結果卻被可怕的拼字破壞時,我很快就感到絕望。
    拼寫和語法會這麼難嗎?
    丟人現眼!
    振作起來!