最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Rust 從入門到精通01-簡介

2022-07-28 10:46 作者:程序員_可樂  | 我要投稿

1、rust 從哪里來?

Rust語言在2006年作為 Mozilla 員工 Graydon Hoare 的私人項(xiàng)目出現(xiàn),而 Mozilla 于 2009 年開始贊助這個項(xiàng)目。第一個有版本號的 Rust 編譯器于2012 年 1 月發(fā)布。Rust 1.0 是第一個穩(wěn)定版本,于 2015年5月15日發(fā)布。

Graydon Hoare 是一個職業(yè)編程語言工程師,其日常工作就是給其他語言開發(fā)編譯器和工具集,但是不會參與語言本身的設(shè)計,由于這種工作性質(zhì),他接觸過很多編程語言,了解各種語言的優(yōu)缺點(diǎn)。

比如 c 和 c++,性能比較好,但是類型系統(tǒng)和內(nèi)存都不太安全;一些擁有 GC 的語言,比如Java、golang、kotlin等,內(nèi)存是安全的,但是性能卻比較低。于是 Graydon Hoare 萌生了自己開發(fā)一門語言的想法,這門語言就是 rust,他對 rust 的期望如下:

①、必須安全,不易崩潰;

②、不需要引入 GC,注重性能;

③、應(yīng)該擁有廣泛的特性,讓程序員寫出易于維護(hù)、調(diào)試,且更安全更高效的代碼。

2、rust logo

Rust 的 logo 承載了創(chuàng)造者對該語言的期望:

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

②、Rust Logo 的形狀與一種叫做銹菌的真菌相似,這種真菌生命力非常頑強(qiáng),在其生命周期內(nèi)可產(chǎn)生多達(dá) 5 種孢子類型,這 5 種生命形態(tài)還可以相互轉(zhuǎn)化。也就是魯棒性(健壯性)非常強(qiáng)。其 Logo 上面的 5 個小圓孔,與銹菌的 5 種生命形態(tài)相對應(yīng),也在暗示 Rust 語言超強(qiáng)的健壯性。

3、rust 是什么?

rust 是新時代的 C 語言。

①、Rust 是一門通用型語言。

②、Rust 語言的內(nèi)存方案針對的是 C 語言的不足

一、禁止對空指針和懸垂指針進(jìn)行解引用

二、讀取未初始化的內(nèi)存

三、緩沖區(qū)溢出

四、非法釋放已經(jīng)釋放或未分配的指針

注意:內(nèi)存泄露在 rust 中依然存在,也就是說內(nèi)存泄露不在rust承諾的內(nèi)存安全范圍內(nèi)。

③、安全且無縫溝通 C 語言。

④、Rust 是具有混合范式的 ”面向過程“式的編程語言。

⑤、和 C 語言類似,擔(dān)負(fù)了時代的使命。

4、rust 語言版本說明

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

4.1 語義化版本

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

簡單說下語義版本號遞增規(guī)則:

①、主版本號:當(dāng)做了不兼容的 API 修改。

②、次版本號:當(dāng)做了向下兼容的功能性新增。

③、修訂號:當(dāng)做了向下兼容的問題修正。

4.2 發(fā)行版本

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

①、master 分支:對于一個發(fā)行版本

②、beta 分支:對應(yīng) Beta 版本,也叫測試版本。

③、stable 分支:對應(yīng) Stable 發(fā)行版,也叫穩(wěn)定版。

通常穩(wěn)定版和測試版每 6 周 發(fā)布一次,一般來說,會先發(fā)布測試版,經(jīng)過一段時間測試,在進(jìn)行發(fā)行穩(wěn)定版。

4.3 Edition 版次

可以看到每個通過 cargo工具(Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,后面會詳細(xì)介紹) 創(chuàng)建的 rust項(xiàng)目的 Cargo.toml文件。

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

因?yàn)閞ust每6周發(fā)布一次新的語義化版本,版本更新迭代速度快,但是版次通常每 3 年發(fā)布一次,之所以存在版次和語義化兩種概念,我們可以看這樣一個例子:

例如添加可能與代碼中的標(biāo)識符沖突的新關(guān)鍵字,比如 ”async"和“await”,剛開始rust是沒有異步的概念,后面我們要添加這兩個關(guān)鍵詞,但是舊代碼可能會把這兩個關(guān)鍵詞當(dāng)做變量名來使用,這時候如果只有語義化的概念,我們升級rust版本號,就會造成舊代碼編譯報錯。但是增加了版次的概念就不同了,我們對于之前的代碼編譯方式選擇之前的版次,新的代碼編譯方式選擇新的版次,那么問題就解決了。

因此,如果你正在使用 Rust 2015,并且您的某個依賴項(xiàng)使用 Rust 2018,那么一切正常

開發(fā)者可以在 Rust 包管理配置文件 Cargo.toml 來配置 edition = "2018",表示依賴 2018 版次。

編譯的時候可以通過:

Rustc --edition 2015|2018|2021

5、rust 編譯過程

rust的編譯器是 rustc,它是一種多道編譯器,其編譯過程要經(jīng)過多道工序,其編譯過程如下:

①、Rust 是跨平臺語言,一次編譯,到處執(zhí)行。 ②、Rust 編譯器是一個 LLVM 編譯前端,它將代碼編譯成 LLVM IR ,然后經(jīng)過 LLVM 編譯為相應(yīng)的平臺代碼。 ③、Rust 源碼經(jīng)過分詞和解析,生成 AST (抽象語法樹)。然后把 AST 進(jìn)一步簡化為 HIR(High-level IR),目的是讓編譯器更方便的做類型檢查。HIR 會被進(jìn)一步編譯為 MIR(Middle IR),這是一種中間表示,它在 Rust 1.12 版本中被引入,主要用于以下目的: 一、縮短編譯時間:MIR 可以幫助實(shí)現(xiàn)增量編譯,當(dāng)你修改完代碼重新編譯的時候,編譯器只計算更改過后的部分,從而縮短了編譯時間。 二、縮短執(zhí)行時間:MIR 可以在 LLVM 編譯之前實(shí)現(xiàn)更細(xì)粒度的優(yōu)化,因?yàn)閱渭円蕾?LLVM 的優(yōu)化粒度太粗,而且 Rust 無法控制,引入了 MIR 就增加了更多的優(yōu)化空間。 三、更精確的類型檢查:MIR 將幫助實(shí)現(xiàn)更靈活的借用檢查,從而可以提升Rust 的使用體驗(yàn)。

最終,MIR 會被翻譯成 LLVM IR ,然后被 LLVM 的處理編譯為能在各個平臺上運(yùn)行的機(jī)器代碼。

Rust 從入門到精通01-簡介的評論 (共 條)

分享到微博請遵守國家法律
哈巴河县| 旺苍县| 从江县| 枞阳县| 张北县| 瑞金市| 温泉县| 平武县| 保康县| 泽州县| 苍溪县| 东海县| 栾川县| 临猗县| 九寨沟县| 台州市| 福建省| 深州市| 正阳县| 武陟县| 望都县| 武冈市| 大余县| 东乌珠穆沁旗| 桂东县| 南昌县| 十堰市| 礼泉县| 长顺县| 莱西市| 马尔康县| 思茅市| 宁国市| 湘阴县| 工布江达县| 仁化县| 清镇市| 阿拉善左旗| 南溪县| 壶关县| 遂平县|