Rust最近有點(diǎn)忙。
前有微軟CTO公開放話:“是時(shí)候用Rust取代C/C++創(chuàng)建新項(xiàng)目了!”后有Linus Torvalds表示,如無意外,Linux 6.1將初步支持Rust。
作為一門新語言,Rust近年來可謂風(fēng)頭正盛。
據(jù)開發(fā)者調(diào)查分析公司SlashData報(bào)告,從2021年到2022年的第一季度,Rust是使用數(shù)量增長(zhǎng)最快的語言。而在StackOverflow相關(guān)調(diào)查中,Rust也多年蟬聯(lián)最受歡迎的編程語言。另外,蘋果、微軟、谷歌、亞馬遜、Meta 等科技巨頭陸續(xù)使用Rust,無疑也加速了Rust生態(tài)的成長(zhǎng)。
被很多人視作“C++后繼者”的Rust開始越來越多地進(jìn)入人們的視野。未來Rust是否會(huì)取代C++的議題也逐漸涌現(xiàn),但新舊編程語言之爭(zhēng)素來如此,只有時(shí)間才能帶來終局。當(dāng)下,不妨先來看一看Rust最近活躍的身影,從中也許能窺見其一路發(fā)展的履跡。
谷歌:兜兜轉(zhuǎn)轉(zhuǎn),尋覓C++繼任者
在外界看來,谷歌對(duì)Rust向來秉持非常開放的態(tài)度。
谷歌于近日推出的開源操作系統(tǒng)KataOS引發(fā)了一波關(guān)注。值得關(guān)注的是,出于將安全性放在首位的宗旨,KataOS專門使用Rust語言開發(fā),并基于seL4微內(nèi)核進(jìn)行了構(gòu)建。之所以選擇Rust,谷歌方面表示,“這為其安全性提供了一個(gè)強(qiáng)有力的起點(diǎn),因?yàn)镽ust消除了entire classes錯(cuò)誤,例如大小差一(off-by-one errors)和緩沖區(qū)溢出”。
除了在新系統(tǒng)開發(fā)中采用Rust編寫,谷歌在去年就宣布AOSP支持使用Rust開發(fā)Android操作系統(tǒng)。彼時(shí),谷歌工程師指出,C和C++中的內(nèi)存安全bug是長(zhǎng)期痼疾之一。盡管谷歌已經(jīng)投入了大量的精力和資源來檢測(cè)、修復(fù)、預(yù)防這類bug,內(nèi)存安全bug仍然是導(dǎo)致穩(wěn)定性問題的主因,它在Android嚴(yán)重安全漏洞中長(zhǎng)期占比約70% 。相較于C和C++在內(nèi)存管理方面的復(fù)雜性,Rust可以利用編譯時(shí)檢查(確保對(duì)象的生命周期和所有權(quán))和運(yùn)行時(shí)檢查(確保內(nèi)存訪問有效)來保證內(nèi)存安全。而且Rust在實(shí)現(xiàn)安全性的同時(shí)還提供了與C和C++相當(dāng)?shù)男阅堋?/p>
此外,在是否應(yīng)將Rust代碼引入Linux內(nèi)核的討論中,谷歌曾公開表示支持立場(chǎng)。谷歌安全博客曾發(fā)文稱:“我們認(rèn)為,Rust現(xiàn)在已經(jīng)準(zhǔn)備好加入C語言,成為實(shí)現(xiàn)內(nèi)核的實(shí)用語言。它可以幫助我們減少特權(quán)代碼中潛在的bug和安全漏洞,同時(shí)與內(nèi)核也配合得很好,可以很大程度上保留其性能特性。”
可以說,谷歌對(duì)Rust一直不吝支持。但在尋找C++繼任者的實(shí)驗(yàn)之路上,谷歌并未止步于Rust。
在今年7月舉辦的CPP North C++大會(huì)上,谷歌開源并發(fā)布了新型語言Carbon,并稱其是C++的實(shí)驗(yàn)性繼任者。
谷歌工程師Chandler Carruth介紹,Carbon旨在與現(xiàn)有的C++代碼完全互操作,目標(biāo)是盡可能輕松地從C++遷移到Carbon。與之相比,Rust固然在內(nèi)存安全性上優(yōu)勢(shì)鮮明,但其可能永遠(yuǎn)無法與C++達(dá)成足夠的互操作性,以致很難實(shí)現(xiàn)平滑遷移。
對(duì)于Carbon的出現(xiàn),C++之父Bjarne Stroustrup應(yīng)媒體之邀給出了直白的回應(yīng):“總有新的語言試圖成為C++的繼任者。我歡迎對(duì)編程語言和編程風(fēng)格進(jìn)行實(shí)驗(yàn),但我不想引發(fā)爭(zhēng)議。批評(píng)已建立的語言很容易,因?yàn)槲覀冎浪鼈兊膯栴},但通常很難在不產(chǎn)生語言規(guī)則、庫(kù)和管理方面的全新問題的情況下提供替代方案。Carbon太新了,而且規(guī)范不足,以至于我無法真正做出有意義的技術(shù)評(píng)論。”
微軟Azure:CTO力挺Rust與C++之父隔空battle
同樣是支持,相較于谷歌對(duì)Rust的態(tài)度,微軟就顯得激進(jìn)很多。
自2004年以來,微軟安全響應(yīng)中心(MSRC)已對(duì)所有報(bào)告過的微軟安全漏洞進(jìn)行了分類,發(fā)現(xiàn)其年度補(bǔ)丁中約有70%是針對(duì)內(nèi)存安全漏洞的修復(fù)程序。而造成這一結(jié)果的主要原因是Windows和大多數(shù)其他微軟產(chǎn)品主要使用C和C++這兩種memory-unsafe的語言編寫。
如果能消除這些漏洞將明顯提高軟件安全性,同時(shí)降低漏洞修復(fù)成本。于是,微軟開始探索使用諸如Rust之類的memory-safe語言作為C和C++等語言的替代方案,以此來改善應(yīng)用程序的安全狀況。除此之外,在Rust的啟發(fā)下,微軟還著手開發(fā)了自己的內(nèi)存安全編程語言Project Verona。
微軟對(duì)Rust前景的看好有目共睹。今年9月,微軟Azure CTO Mark Russinovich的公開表態(tài)又引起了熱議。
Russinovich在推特上表示:“是時(shí)候停止使用C/C++創(chuàng)建任何新項(xiàng)目了。如果你要開新項(xiàng)目,而且需要使用非GC語言的時(shí)候,建議使用Rust替代。出于安全和可靠的考慮,業(yè)界應(yīng)該宣布棄用C/C++。”不過他也強(qiáng)調(diào),并非是要用Rust完全取代C/C++寫好的東西,只是“對(duì)于新工具,我會(huì)偏向Rust”。
對(duì)這一觀點(diǎn),Bjarne Stroustrup這次給出的回應(yīng)更為“辛辣”:“人們——尤其是高管——迷戀那些承諾可以讓他們的生活更輕松的新事物,這并不少見。此外,支持新事物遠(yuǎn)比解決舊工具和知名工具的已知問題更令人興奮。不過,新語言通常需要多年時(shí)間和重大努力才能在其廣泛的應(yīng)用領(lǐng)域與成熟語言相匹配。愛好者很少看到這一點(diǎn),并且他們的評(píng)論往往是片面的。”
同時(shí),Stroustrup表示,多年來他一直致力于提高C++的安全性,現(xiàn)在已經(jīng)可以在ISO C++中實(shí)現(xiàn)有保證的完美類型和內(nèi)存安全。“要注意的是,包括Rust在內(nèi)的每一種‘安全’語言都存在允許不安全代碼的漏洞。”
Rust加入Linux之旅:千呼萬喚始出來
Rust的迅速崛起離不開頂級(jí)的項(xiàng)目引入。而Linux內(nèi)核何時(shí)能支持Rust一直備受矚目。
自Rust嶄露頭角,許多人呼吁在Linux內(nèi)核中增加Rust語言的支持,甚至還為此誕生了一個(gè)叫“Rust for Linux”的組織。
早在2020年,Linus Torvalds就回應(yīng)過相關(guān)問題,他并沒有否定這一提議。而在Linux Plumbers Conference 2020大會(huì)上,內(nèi)核開發(fā)者們普遍達(dá)成共識(shí):沒必要將已有內(nèi)核用Rust重寫,應(yīng)專注于可以用Rust編寫的新代碼。此后,Linus也一直對(duì)此持觀望和開放態(tài)度。
Rust到底有沒有可能成為L(zhǎng)inux內(nèi)核中除C之外的第二種官方語言呢?答案是肯定的。
不過本以為能在6.0版本看到Rust合并進(jìn)內(nèi)核,但最終沒有實(shí)現(xiàn)。究其原因,主要有兩個(gè),一個(gè)是非標(biāo)準(zhǔn)的Rust擴(kuò)展的處理,另一個(gè)是Rust編譯器還不穩(wěn)定。Linus表示自己更關(guān)心后面這個(gè)原因,因?yàn)镽ust編譯器的可靠性和穩(wěn)定性更重要。
而今年的LPC大會(huì)舉行了一個(gè)Rust相關(guān)的小型會(huì)議。會(huì)上,西部數(shù)據(jù)公司的工程師Andreas Hindborg的發(fā)表頗為引人注目,其主旨是圍繞基于Rust的NVMe驅(qū)動(dòng)程序。
目前Linux內(nèi)核已經(jīng)擁有出色的由C編寫的NVMe驅(qū)動(dòng)程序,不需要替換。但鑒于NVMe驅(qū)動(dòng)程序的廣泛使用度及其重要性,使用Rust編寫的NVMe驅(qū)動(dòng)程序也是一個(gè)非常有趣的嘗試;鶞(zhǔn)測(cè)試結(jié)果表明,雖然Rust NVMe驅(qū)動(dòng)程序仍處于早期階段,但其已表現(xiàn)不俗——結(jié)果表明該Rust驅(qū)動(dòng)程序能夠?qū)崿F(xiàn)與C驅(qū)動(dòng)程序相當(dāng)?shù)男阅堋?/p>
就在LPC大會(huì)之后的2022 Linux內(nèi)核維護(hù)者峰會(huì)上,Linus提議將Rust支持合并到Linux 6.1中。他表示,希望在內(nèi)核中看到Rust的一個(gè)原因是鼓勵(lì)新的開發(fā)者研究?jī)?nèi)核。不過他也提醒,目前“Rust只在核心基礎(chǔ)設(shè)施使用”。不過,這對(duì)Rust和Linux來說,都將是歷史性的第一步。
新舊語言之爭(zhēng):唯有時(shí)間是永遠(yuǎn)的莊家
在編程世界中,新舊語言之爭(zhēng)歷久彌新。不少人期待Rust對(duì)標(biāo)C++,就像TypeScript之于JavaScript,Kotlin之于Java。
不過事實(shí)上,兩者并非“你死我活”的關(guān)系。一些C++的擁躉也并非完全排斥Rust,一些鼓吹Rust的人或許也并不完全了解Rust,就像某位網(wǎng)友的反諷“They don't write a piece of code, but they're trying to rust everything”。
推陳出新固然是技術(shù)演進(jìn)的必然,但像C++、C、Java等老牌編程語言能有如今的江山,也非一日之功。況且任何要彌補(bǔ)C++缺陷的語言, 都得和C++協(xié)作, 復(fù)用C++的輪子。
而今時(shí)今日,Rust說到底仍然是一門年輕的語言,或許我們可以爭(zhēng)論Rust是否為異步編程提供了最好的模型,擺脫垃圾回收對(duì)開發(fā)人員助益如何,但要討論它是否終將取代C++,顯然為時(shí)尚早。
對(duì)于Rust,無論你是愛它還是恨它,都不能否認(rèn)其崛起的速度,但未來究竟會(huì)如何,尚需時(shí)間的檢驗(yàn)。正如微軟首席工程師Nick Cameron所說,現(xiàn)如今Rust正處于一個(gè)良好的發(fā)展局面:受歡迎程度越來越高、貢獻(xiàn)者越來越多,還在一些重要領(lǐng)域進(jìn)行了應(yīng)用。但在這個(gè)充滿變化的時(shí)代,從一個(gè)研究項(xiàng)目到一個(gè)新的、快速變化的語言再過渡到一個(gè)流行的、成熟的項(xiàng)目,是一個(gè)困難的演變過程。
就開發(fā)人員來說,Rust可能適合也可能不適合你或你的項(xiàng)目,可能是也可能不是創(chuàng)建相關(guān)程序的最優(yōu)解決方案。但至少它提供了一個(gè)新的選擇,增加了更多探索和想象的路徑。就像Peter Wayner在《喜歡/討厭Rust的七個(gè)理由》一文中總結(jié)的那樣:“作為一門語言,Rust很新穎,學(xué)習(xí)它可以使人的大腦得到延伸。作為程序員,它讓我們有理由重新思考我們的挑戰(zhàn),重新制定我們的目標(biāo),并著手尋找編寫現(xiàn)代軟件的最佳方式。還有什么能比這更好呢?”
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會(huì)上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來都要半個(gè)月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性價(jià)比很高,簡(jiǎn)直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會(huì)——工業(yè)互聯(lián)網(wǎng)標(biāo)識(shí)解析專題論壇在沈陽成功舉辦。