Linux核心加入了Rust語言支援
Rust作為第二語言的支援的補丁系列已經加入到 Linux 核心。
Linux創始人Linus一直非常挑剔,甚至對C以外的系統程式語言不屑一顧。但是對於 Rust,他則不同,這可能是一個很好的跡象,表明 Rust 正在做一些非常值得尊敬的事情。無論如何,Rust語言似乎有潛力在幾年內成為一種新的主流系統程式語言。
Rust相對於 C++可專門解決Linux的幾個特點:
- Rust 特性使對通用程式碼的推理比 C++ 模板更容易。在 C++ 中,您只需編寫模板,然後在例項化站點解析模板。如果它不是一個有效的型別,那麼編譯器會告訴你你使用了錯誤的模板,但找出原因仍然是你的責任。然而,在 Rust 中,泛型型別必須受到 trait 的約束;其中列出了泛型型別需要什麼。因此,如果您濫用泛型型別,編譯器只會說“好吧,您需要在此處新增引數 T 來呼叫它”,並且錯誤將始終出現在您使用的型別上,而不是某個依賴的泛型型別上。
- Rust 的核心目標之一是“零成本抽象”。它做得很好,但它也有一些非零成本的抽象。這些歸類為“透明且可預測的成本抽象”。例如: Rust 以其借用檢查器而聞名,它提供記憶體安全的編譯時驗證。然而,這些可能不是最靈活的記憶體管理解決方案。因此它還透過引用計數提供共享所有權。這確實有相關的成本,但很容易推理和明確說明。他們甚至提供了原子和非原子引用計數選項,因為後者的相關成本更低。
- C++ 使用圍繞堆疊展開構建的異常處理模型,這要求所有程式碼維護一個有效的堆疊,C++ 執行時可以始終展開該堆疊。這可能會給核心帶來問題,核心幾乎肯定會對編譯器無法完全理解的堆疊做一些奇怪的事情。雖然 Rust 有異常(Panicking)並支援C++ 風格的展開,但它還允許您將異常處理模型更改為僅終止程式,這與 Linux 核心處理異常的方式更好地匹配。
- - Rust 還非常不鼓勵使用與 C++ 相關的異常。Panicking主要用於實際異常(即意外)的錯誤條件,而預期的錯誤條件可以使用返回型別(如 Option 和 Result)發出訊號。甚至還有特殊的語言語法(稱為 Try 或 ? 運算子),如果值發出錯誤訊號,它將自動返回。
相關文章
- Rust for Linux 新補丁:為 Linux 核心增加對 Rust 作為第二語言的支援RustLinux
- Linux核心net模組引入了Rust程式碼 - PhoronixLinuxRust
- 2022年Rust將成為Linux核心第二語言RustLinux
- Rust語言的核心開發團隊有毒 - HackMDRust
- Linux核心C語言將升級LinuxC語言
- Linux核心筆記003 - Linux核心程式碼裡面的C語言和組合語言Linux筆記C語言組合語言
- C語言加強C語言
- Rust語言4歲了 | rust-langRust
- Rust 語言學習之旅Rust
- 實戰逆向RUST語言程式Rust
- Rust 語言學習之旅(6)Rust
- Rust 語言學習之旅(3)Rust
- Rust 語言學習之旅(2)Rust
- Rust 語言學習之旅(7)Rust
- Rust語言快速安裝指南Rust
- Qt 多語言支援QT
- ModStart多語言支援
- Rust語言與Go語言各自特點概要比較 –thenewstackRustGo
- Linux 核心準備升級到 Rust 1.77LinuxRust
- Rust語言記憶體管理之妙Rust記憶體
- Rust語言炒作過分了嗎? - thenewwazooRust
- actix/actix:Rust語言的Actor框架Rust框架
- Go語言將支援AndroidGoAndroid
- JVM 還支援哪些語言JVM
- C 語言程式碼風格之 Linux 核心程式碼風格Linux
- 獲取系統語言/當前 App支援語言APP
- Meta將Rust語言納入其伺服器端程式語言Rust伺服器
- e/易語言 加執行緒執行緒
- “星綻”作業系統核心開源:採用Rust語言,兼顧效能與安全作業系統Rust
- 2019年Rust語言調查報告Rust
- Rust入門系列之語言特性 - 1Rust
- 2021年Rust語言調查結果Rust
- Linux 核心網路包路徑追蹤利器 skbtracer,Go 語言版本LinuxGo
- ModStart系統多語言支援
- Go和Rust都是系統語言和通用語言 - RedditGoRust
- Linux-C語言LinuxC語言
- Linus Torvalds:Rust For Linux 或將被合併到 Linux 5.20 核心中RustLinux
- 使用 Rust 語言編寫 Java JNI 實現RustJava