Rust 從入門到精通01-簡介

2022-07-28 12:00:18

1、rust 從哪裡來

Rust語言在2006年作為 Mozilla 員工 Graydon Hoare 的私人專案出現,而 Mozilla 於 2009 年開始贊助這個專案。第一個有版本號的 Rust 編譯器於2012 年 1 月釋出。Rust 1.0 是第一個穩定版本,於 2015年5月15日釋出。

Graydon Hoare 是一個職業程式語言工程師,其日常工作就是給其他語言開發編譯器和工具集,但是不會參與語言本身的設計,由於這種工作性質,他接觸過很多程式語言,瞭解各種語言的優缺點。比如 c 和 c++,效能比較好,但是型別系統和記憶體都不太安全;一些擁有 GC 的語言,比如Java、golang、kotlin等,記憶體是安全的,但是效能卻比較低。

於是 Graydon Hoare 萌生了自己開發一門語言的想法,這門語言就是 rust。

Rust 的 logo 承載了創造者對該語言的期望:

①、Rust 這個單詞是由 TrustRobust 組合而成,暗示了信任(Trust)和魯棒性(或健壯性、Robust)。

②、Rust Logo 的形狀與一種叫做鏽菌的真菌相似,這種真菌生命力非常頑強,在其生命週期內可產生多達 5 種孢子型別,這 5 種生命形態還可以相互轉化。也就是魯棒性(健壯性)非常強。其 Logo 上面的 5 個小圓孔,與鏽菌的 5 種生命形態相對應,也在暗示 Rust 語言超強的健壯性。

3、rust 是什麼

在 rust 官網:https://www.rust-lang.org/ ,有這樣一句醒目的話:

Rust 是一門賦予每個人構建可靠且高效軟體能力的語言。

Rust 是一門系統級程式語言,有三大特點:

①、執行快

②、防止段錯誤

③、保證執行緒安全

4、rust 語言版本說明

rust 語言版本從三個不同的維度來講,包括三個概念。

4.1 語意化版本

其格式為:主版本號.次版本號.修訂號,依次用 句點 隔開。

簡單說下語意版本號遞增規則:

①、主版本號:當做了不相容的 API 修改。

②、次版本號:當做了向下相容的功能性新增。

③、修訂號:當做了向下相容的問題修正。

4.2 發行版本

https://github.com/rust-lang/rust/branches/all

①、master 分支:對於一個發行版本

②、beta 分支:對應 Beta 版本,也叫測試版本。

③、stable 分支:對應 Stable 發行版,也叫穩定版。

通常穩定版和測試版每 6 周 釋出一次,一般來說,會先發布測試版,經過一段時間測試,在進行發行穩定版。

4.3 Edition 版次

可以看到每個通過 cargo工具(Cargo 是 Rust 的構建系統和包管理器,後面會詳細介紹) 建立的 rust專案的 Cargo.toml檔案。

版次的意義和語意化是正交的概念,方便rust自身的進化。目前rust有兩個版次,分別是 rust2015 和 rust2018。

因為rust每6周釋出一次新的語意化版本,版本更新迭代速度快,但是版次通常每 3 年釋出一次,之所以存在版次和語意化兩種概念,我們可以看這樣一個例子:

例如新增可能與程式碼中的識別符號衝突的新關鍵字,比如 」async"和「await」,剛開始rust是沒有非同步的概念,後面我們要新增這兩個關鍵詞,但是舊程式碼可能會把這兩個關鍵詞當做變數名來使用,這時候如果只有語意化的概念,我們升級rust版本號,就會造成舊程式碼編譯報錯。但是增加了版次的概念就不同了,我們對於之前的程式碼編譯方式選擇之前的版次,新的程式碼編譯方式選擇新的版次,那麼問題就解決了。

因此,如果你正在使用 Rust 2015,並且您的某個依賴項使用 Rust 2018,那麼一切正常

開發者可以在 Rust 包管理組態檔 Cargo.toml 來設定 edition = "2018",表示依賴 2018 版次。

編譯的時候可以通過:

Rustc --edition 2015|2018|2021

5、rust 能幹什麼

截止 2021 年,主流的網際網路公司都把 Rust 納入主力語言,比如開發作業系統 Redox/Fuchsia、高效能網路 Tokio、應用的高並行後端 TiKV,甚至使用者端軟體本身(飛書)。

Rust 除了在其傳統的系統開發領域,如作業系統、裝置驅動、嵌入式等方向高歌猛進之外,還在伺服器端高效能、高並行場景遍地開花。

圖片擷取《極客時間-陳天-rust程式設計第一課》