當 Rust 遇上 Fedora
Rust 是什麼?
Rust 是一種系統程式語言,它執行速度驚人,並且可以避免幾乎所有的崩潰、記憶體區塊錯誤 以及資料競爭。你也許會質疑為什麼我們還需要又一種這樣的語言,因為已經有很多同類的語言了。這篇文章將會告訴你為什麼。
安全性 vs. 控制權
你也許見過上面的圖譜。一邊是 C/C++,對執行的硬體擁有更多的控制權,因此它可以讓開發者通過對所生成的機器程式碼進行更精細的控制來優化效能。然而這不是很安全,這很容易造成記憶體區塊錯誤以及像 心血漏洞 這樣的安全漏洞。
另一邊是像 Python、Ruby 和 JavaScript 這種沒有給予開發者多少控制權但是可以建立出更安全的程式碼的語言。雖然這些程式碼可以生成相當安全並且可控的異常,但是它們不會造成記憶體區塊錯誤。
在圖譜中間的區域是 Java 和一些其它混合了這些特性的語言。它們提供對執行的硬體部分控制權,並且嘗試儘量減少漏洞的出現。
Rust 有點不太一樣,它並沒有出現在這個圖譜上。它同時提供給開發者安全性和控制權。
Rust 的特性
Rust 是一種像 C/C++ 一樣的系統程式語言,除此之外它還給予開發者對記憶體分配細粒度的控制。它不需要垃圾回收器。它的執行環境很小,執行速度接近於在裸機上的執行。它為開發者提供了程式碼效能更大的保證。此外,任何瞭解 C/C++ 的人都能讀懂以及編寫 Rust 的程式碼。
Rust 的執行速度非常快,因為它是一種編譯語言。它使用 LLVM 作為編譯器的後端,並且還可以利用一大堆優化。在許多領域,它的效能都要高於 C/C++。它像 JavaScript、Ruby 和 Python 一樣,與生俱來就是安全的,這意味著它們不會造成記憶體區塊錯誤、野指標或者空指標。
另外一個很重要的特性就是消除資料競爭。如今,大多數計算機都具有多個核心,許多執行緒併發執行。然而,開發者很難編寫好的並行程式碼,因此這個特性除去了他們的後顧之憂。Rust 使用兩個關鍵概念來消除資料競爭:
- 所有權。每一個變數都被移動到一個新的位置,並防止通過先前的位置來引用它。每一個資料塊只有一個所有者。
- 借用。被擁有的值可以借用,以允許在一段時間內使用。
在 Fedora 24 和 25 上使用 Rust
若要開始使用,只需安裝軟體包:
sudo dnf install rust
示例程式碼 helloworld.rs
:
fn main() {
println!("Hello, Rust is running on Fedora 25 Alpha!");
}
編譯並執行:
rustc helloworld.rs
./helloworld
在 Fedora 上可以執行以下命令來安裝最新的測試版本:
sudo dnf --enablerepo=updates-testing --refresh --best install rust
via: https://fedoramagazine.org/rust-meets-fedora/
作者:Sumantro Mukherjee 譯者:OneNewLife 校對:wxy
相關文章
- 當 sendBeacon 遇上 Blob
- 當class properties遇上decorator
- 當Shell遇上了NodeJSNodeJS
- 當 Go 遇上了 LuaGo
- 當元宇宙遇上梵高元宇宙
- 當 Go struct 遇上 MutexGoStructMutex
- 當區塊鏈遇上保險區塊鏈
- 當《人民日報》遇上GTA
- 當新零售遇上 ServerlessServer
- 老遊戲遇上新問題:當動森遇上詐騙遊戲
- 當動態桌面遇上 HTML5HTML
- Go死鎖——當Channel遇上Mutex時GoMutex
- 當 Swagger 遇上 Torna,瞬間高大上了!Swagger
- 當JSON.parse“遇上”非鍵值對JSON
- 當 Kotlin 遇上 Android KTX,豈止絲滑?KotlinAndroid
- 當金融行業遇上開源技術行業
- 當資料探勘遇上戰略決策
- 當「軟體研發」遇上 AI 大模型AI大模型
- 當餐飲遇上大資料,嗯真香!大資料
- 當頁面渲染遇上邊緣計算
- 當催收遇上疫情,AI能做些什麼?AI
- 當好萊塢遇上國產電影
- 當Spring Cloud遇上Kubernetes,天色都變了SpringCloud
- 當DUBBO遇上Arthas - 排查問題的實踐
- 當RPA遇上AI,會擦出怎樣的火花?AI
- 【新特性速遞】當法語遇上FineUI(Bonjour)!UI
- 當微信小程式遇上TensorFlow:Server端實現微信小程式Server
- 當「SPA」應用遇上了膨脹的專案
- 當微信小程式遇上TensorFlow:小程式實現微信小程式
- 當FPS遇上Roguelike:CF手遊的創新之路
- 當 RocketMQ 遇上 Serverless,會碰撞出怎樣的火花?MQServer
- 當char型變數遇上char*型的指標變數指標
- 好未來吳鈞澤:當 OpenResty 遇上教育行業REST行業
- 當使用者管理系統遇上python和mongodb後……PythonMongoDB
- 物聯網中的預測分析:當IoTDA遇上ModelArts
- 當IDC遇上雲端計算,如何才能落地生花
- 「跨界」碰撞!當AI大佬遇上量化對衝基金之王AI
- 實戰Forge Viewer漸進應用 - 當Xamarin遇上WebAssemblyViewWeb