Linux 6.2 中 Rust 的下一次迭代重新點燃了關於將 C 換成 Rust 的爭論

鐵鏽Linux

Rust 在 Linux 中的集成得到了社區和開發者的高度認可

之一的 Kernel開發中出現的主要問題 長期使用 Linux, 換編程語言的想法是找一個完美的人選 “C”代表一個更現代的,直到最近隨著 Rust 的到來,這個想法一直被擺在桌面上。

隨著 Rust 的第一個預覽版 在 Linux 6.1 上, 我重振了大部分開發人員的精神 內核和 Jonathan Corbet 指出“內核中仍然沒有足夠的 Rust 來做任何有趣的事情”,包含這種語言重新點燃了關於是否需要放棄 C 語言以支持 Rust 的爭論的系統編程。 這個問題分裂了開發者社區。

朝日林亞 承擔了使用 Rust 為 Mac M1 開發圖形處理單元 (GPU) 驅動程序的任務。

關於 Rust 和 C 語言的比較 提到:

“如果你用 C 編寫這個,你絕對不可能不必處理並發訪問管理、發布後訪問內存區域的嘗試以及各種其他問題。所有並發問題都隨著 Rust 消失了! 需要時釋放內存! 一旦你學會瞭如何讓 Rust 為你工作,我認為它會指導你寫出體面的代碼,甚至超越語言的安全承諾。 真的很神奇! »

“關於 Rust 在內核中是否有用存在很多爭論……根據我的經驗,它比我想像的要有用得多!” “,她補充道。

你的評論有點重複 從可能的技術原因的彙編 證明放棄 C 語言以支持 Rust 是合理的。 事實上,在 15,9 年影響 Linux 內核的 2288 個漏洞中,有 20%(來自 Common Vulnerabilities and Exposure (CVE) 詞典的數字)與 C 語言中的缺陷有關,與內存管理相關的問題:緩衝區溢出,未釋放的分配,訪問無效或釋放的內存區域等。

另外,Linux內核的主要維護者都熟悉C語言,其年齡已經算得上是3代了。 XNUMX多歲的新一代維護者正在崛起,如果Linux內核繼續用C語言發展,尋找維護者的難度很可能會增加。Linus Torvalds打開內核之門的原因在 Rust 中開發。

關於放棄C語言的可能性問題, C 語言的創造者列出了一些計劃可能失敗的原因 朝這個方向發展:

VS 語言工具鏈

C語言不僅是語言本身,還包括為這種語言開發的所有開發工具。

您想對源代碼進行靜態分析嗎? – 有很多人在為 C 做這方面的工作。檢測內存洩漏、數據競爭和其他錯誤的工具? 有很多,即使你的語言更好。

如果你想瞄準一個鮮為人知的平台,你可能正在使用 C。C 作為當今計算的通用語言的地位使得它值得編寫工具,並且編寫了許多工具。

如果有人有可用的工具鏈:

為什麼要冒險改變語言? “更好的 C”應該會產生大量額外的生產力,以激勵人們花時間建立一個新的工具鏈。 這是否可能還有待觀察。

新語言的不確定性

在一種語言達到成熟之前,它很可能是錯誤的。 並進行了重大修改以解決語言的語義問題。 語言是否與廣告一致? 它可以提供諸如“出色的編譯時間”或“比 C 更快”之類的東西,但是當語言添加了

維護者呢? 當然,你可以派生出一種開源語言,但我懷疑許多公司是否會對使用一種他們以後可能被迫保留的語言感興趣。 押註一門新語言是一個很大的風險。

事實上,語言可能不夠好

該語言是否解決了 C 的實際痛點?

事實證明 人們並不總是同意 C 的弱點是什麼。 內存分配、數組和字符串處理通常很棘手,但使用正確的庫和良好的內存策略,可以將它們最小化。

該語言是否解決了高級用戶並不真正關心的問題? 如果是這樣,它的實際價值可能遠低於預期。

更糟糕的是,如果該語言省略了 C 中存在的關鍵特性怎麼辦? 高級 C 程序員所依賴的特性? 如果語言設計者沒有使用太多 C,而是來自 C++、Java 等,這種風險會增加。

新語言缺乏經驗豐富的開發人員

一種新語言自然會擁有更少的有經驗的開發人員。 對於任何大中型公司來說,這都是一個大問題。 公司可用的開發人員越多,情況就越好。

此外,如果公司有招聘 C 開發人員的經驗,他們不知道如何為這種新語言招聘。

最後,如果您有興趣了解更多,可以諮詢 以下鏈接中提供了詳細信息。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。