Rust慶祝成立10周年
在 Rust 慶祝成立 10周年之際,Nick Flaherty 與 Adacore 的 Tony Aiello 和 Stephen Hedrick 討論了嵌入式和任務(wù)關(guān)鍵型系統語(yǔ)言的演變
本文引用地址:http://dyxdggzs.com/article/202505/470552.htmRust 避免了 C 和 C++ 出現的內存問(wèn)題,確??梢詾榘踩P(guān)鍵型應用程序開(kāi)發(fā)代碼。但有幾種看法阻礙了它,即沒(méi)有足夠的具有該語(yǔ)言經(jīng)驗的熟練工程師,而且工具還沒(méi)有準備好。
Rust 語(yǔ)言和 Ada 形式語(yǔ)言的發(fā)展之間存在相似之處。Adacore 為安全關(guān)鍵系統開(kāi)發(fā)工具,并于 2023 年推出了適用于 Rust 的 Gnat Pro 工具版本。
“我們的觀(guān)點(diǎn)與廣泛的主流觀(guān)點(diǎn)不同。我們的重點(diǎn)是為高完整性應用開(kāi)發(fā)工具,通常是在嵌入式領(lǐng)域,包括航空航天和國防、一些新太空、汽車(chē)、醫療,“Adacore 產(chǎn)品和創(chuàng )新主管兼負責推出 Rust 工具的產(chǎn)品經(jīng)理 Aeillo 說(shuō)。
“我們看到的是 Rust 的勢頭。對 Rust 的興趣主要是由普通工程師推動(dòng)的,他們希望找到一種前衛的方法,將其用于業(yè)余項目,并在他們的團隊中鼓動(dòng) Rust 被采用。
“如果經(jīng)理們猶豫不決,那不是工程師的問(wèn)題,因為這還沒(méi)有在我們的領(lǐng)域得到證實(shí),而且對生態(tài)系統的完整性、安全標準的資格存在疑問(wèn),這些都是需要解決的問(wèn)題,”他說(shuō)
“這仍然是一門(mén)年輕的語(yǔ)言,很多東西會(huì )隨著(zhù)時(shí)間的推移而成熟。事實(shí)上,仍然存在著(zhù)嗡嗡聲,而且這種嗡嗡聲正在增加并開(kāi)始滲透到工業(yè)中,重要的是要注意,任何主流語(yǔ)言都有這些障礙需要克服,“現任 Rust 產(chǎn)品經(jīng)理 Hedrick 說(shuō)
反對使用 Rust 的一個(gè)問(wèn)題是,開(kāi)發(fā)人員可以正確地將 C 語(yǔ)言用于安全關(guān)鍵代碼。
“我不相信正確地做 C。我認為 C 語(yǔ)言不適合用于安全關(guān)鍵應用程序句號,“Aiello 說(shuō)?!癗vidia 選擇了 Spark,并使用了完整的形式化方法來(lái)進(jìn)行安全關(guān)鍵型開(kāi)發(fā),并且有一個(gè)案例研究。如果你要編寫(xiě)新代碼,你不應該使用 C。
“當我們第一次開(kāi)始談?wù)?Rust 產(chǎn)品時(shí),我們很驚訝地發(fā)現并沒(méi)有我們預期的興趣激增。有很多對話(huà),客戶(hù)想了解 Rust,“Aiello 說(shuō)?!翱爝M(jìn)到今天,我們還有更多潛在客戶(hù)似乎非常接近認真對待 Rust,但人們在不想成為第一時(shí)猶豫不決。根據我們從安全關(guān)鍵聯(lián)盟聽(tīng)到的情況,我持謹慎樂(lè )觀(guān)的態(tài)度。
“有些事情看起來(lái)與 Ada 相似。它是一種類(lèi)型安全的語(yǔ)言,這會(huì )減慢人們的速度,所以它有點(diǎn)相似,但我覺(jué)得差異多于相似之處。
其中一個(gè)因素是美國國防部于 1987 年發(fā)布的 Ada 授權,旨在標準化軟件開(kāi)發(fā) DoD 并解決不同編程語(yǔ)言和方言的激增問(wèn)題。
“授權出來(lái)時(shí),Ada 還不到 10 歲,感覺(jué)編譯人員還沒(méi)有準備好,”Aiello 說(shuō)?!癛ust 的編譯器已經(jīng)準備好了,所以 Rust C 的速度和穩定性都相當快。發(fā)出的代碼是高效的,但可能最重要的區別是,雖然在工作中,Rust 工程師比 C 少,但 Rust 背后有一個(gè)巨大的社區。社區的力量很難被低估。
Rust 生態(tài)系統
但他確實(shí)承認生態(tài)系統中的差距,尤其是修改條件/決策覆蓋率 (MC/DC)。這是一個(gè)代碼覆蓋率標準,用于確保關(guān)鍵軟件系統的可靠性和健壯性,它超越了基本覆蓋率,以驗證決策中的每個(gè)條件是否獨立影響該決策的結果
“存在空白,我們正在填補它們。我們有一個(gè) Rust 的覆蓋工具,將在秋天推出。缺少 MC/DC 覆蓋,這是絕對必要的。另一個(gè)差距是安全關(guān)鍵標準中的銹蝕編碼標準。Rust 基金會(huì )正在構建一個(gè)編碼標準,一旦完成,工具就會(huì )隨之而來(lái)。與此同時(shí),這是臨時(shí)的,但目前它是一個(gè)更微妙的解決方案。
運行時(shí)庫的認證,例如用于安全關(guān)鍵標準(如汽車(chē)ISO26262和工業(yè)IEC61508)的標準庫,也是一個(gè)潛在的問(wèn)題。
“Ada 具有豐富的運行時(shí),而 Rust 具有豐富的運行時(shí),”Aiello 說(shuō)?!澳憧梢圆挥?libstd,但 libcore 被視為該語(yǔ)言的基礎。這是一個(gè)包含 36,000 行代碼的大型庫,它進(jìn)入最終應用程序,需要經(jīng)過(guò)認證。這將非常耗時(shí)且成本高昂,我們會(huì )與潛在客戶(hù)討論這個(gè)問(wèn)題。然而,一旦完成了其中一些,它就會(huì )使整個(gè)社區處于更好的境地。
“將來(lái)可能會(huì )有反對重新編譯庫的壓力。如果你想發(fā)布一個(gè) Rust 庫,你必須發(fā)布開(kāi)源的,這可能會(huì )有專(zhuān)有代碼的問(wèn)題。這也不是該項目不知道的事情,“Aeillo 說(shuō)?!瓣P(guān)于何時(shí)以及如何解決專(zhuān)有代碼的 API 問(wèn)題,正在討論?!?/p>
安全關(guān)鍵聯(lián)盟包括 Rust Foundation、ARM、Ferrous Systems、OxidOS、Synopsys、HighTec EDV-Systeme、TrustInSoft、Veecle 和 Woven by Toyota,以支持該語(yǔ)言的使用,并通過(guò)現有的安全關(guān)鍵項目和標準(包括 SAE JA1020)擴展生態(tài)系統。
“由于安全關(guān)鍵聯(lián)盟的積極工作,取得了很大進(jìn)展,因此隨著(zhù)事情的進(jìn)展,人們會(huì )認為這是一個(gè)更可行的選擇,”Hedrick 說(shuō)?!拔覀冋故緦?shí)際應用的行業(yè)采用案例越多,這就是我們要追求的目標。還有很多事情要做,而且有很大的潛力,這就是很棒的事情。
Aiello 預計 Rust 的授權不會(huì )有同樣的壓力。
“我不指望 Rust 會(huì )強制要求。我認為國防部對 ADA 的打擊如此嚴重,我認為他們不會(huì )再這樣做了。有力推動(dòng)的地方是推動(dòng)內存安全授權和推動(dòng)像 CHERI 這樣的內存安全硬件,“他說(shuō)?!凹词乖诮裉?,我仍然聽(tīng)說(shuō)他們的客戶(hù)存在壓力,要求他們轉向內存安全?!?/p>
AI 副駕駛還可以幫助使用 Rust 進(jìn)行編碼。
“我認為這是一個(gè)好主意,尤其是在學(xué)習它時(shí),”Hedrick 說(shuō)?!叭缓竽憧梢噪S心所欲地變得復雜。隨著(zhù)潮水的上漲,隨著(zhù)越來(lái)越多的業(yè)余愛(ài)好者和社區機器人項目在 Raspberry Pi 和其他平臺上出現,這些項目可以擴展到公司的研究。
評論