- Rust實戰
- (新西蘭)蒂姆·麥克納馬拉
- 1017字
- 2022-12-01 19:12:20
1.2 在工作中提倡使用Rust
在工作中提倡使用Rust的效果如何?克服了最初的障礙,之后的發展往往就會很順利。下面轉載的2017年的討論提供了一個很好的軼事。谷歌Chrome OS團隊的一名成員討論了將該語言引入項目中的情況:[11]
2017年9月27日,因迪
Rust是谷歌官方認可的語言嗎?
2017年9月27日,薩克斯塞倫
回復作者:Rust在谷歌并沒有得到官方認可,但有一些人在使用它。想要在這個組件里使用Rust的技巧就是,讓我的同事們相信沒有其他語言更適合這項工作,在這個例子中,我相信情況就是如此。
也就是說,要使Rust在Chrome OS的構建環境中發揮出色作用,還有大量工作需要做。不過,使用Rust的同事們為我解答了很多問題,幫了我很大的忙。
2017年9月27日,埃基德
“在這個組件中使用Rust的技巧就是,讓我的同事們相信沒有其他語言更適合這項工作,在這個例子中,我相信情況就是如此。”
我在自己的一個項目中遇到了類似的情況——一個vobsub字幕解碼器,它用于解析復雜的二進制數據,而且有一天我希望將其作為Web服務運行。所以,我當然想確保我的代碼里沒有漏洞。
我用Rust編寫了代碼,然后使用“cargo fuzz”模糊測試來嘗試發現漏洞。運行了10億次模糊測試迭代后,我發現了5個錯誤。
令人高興的是,實際上,這些錯誤中沒有一個可以真的升級為漏洞。在每種錯誤的情況下,Rust的各種運行時檢查都成功地發現了問題并將其轉變為可控的恐慌。(實際上,這將導致徹底重啟Web服務器。)
因此,我的主要收獲是,每當我想要一種沒有GC的語言,同時還想要該語言在安全性至關重要的上下文環境中是可以信任的,這時Rust就是絕佳選擇了。此外,實際操作時,我可以靜態鏈接Linux二進制文件(與Go語言類似),這是一個很好的加分項。
2017年9月27日,馬尼舍爾思
“令人高興的是,實際上,這些錯誤沒有一個會真的升級為漏洞。在每種錯誤的情況下,Rust的各種運行時檢查都成功地發現了問題并將其轉變為可控的恐慌。”
這或多或少也是我們在瀏覽器中給Rust代碼做模糊測試的經驗,僅供參考。模糊測試發現了很多恐慌(以及調試斷言/“安全”溢出斷言)。在其中的一個測試用例中,它實際上發現了一個在類似Gecko的代碼中被忽視了大約10年的錯誤。
從上面的討論內容中,我們可以看到,尋求克服技術挑戰的工程師們已經“自下而上”地在一些相對較小的項目中采用了Rust語言。從這些成功中獲得的經驗隨后會被用作證據,證明完全可以用于開展更加宏大的工作。
從2017年年底以來,Rust不斷成熟和壯大,已成為谷歌技術領域認可的一部分,并且在安卓項目以及Fuchsia操作系統的項目中,現已是官方所認可的一種語言。
- Web程序設計及應用
- .NET之美:.NET關鍵技術深入解析
- 大學計算機基礎(第三版)
- Spring技術內幕:深入解析Spring架構與設計
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- C語言程序設計(第2版)
- Raspberry Pi 2 Server Essentials
- 軟件項目管理實用教程
- 領域驅動設計:軟件核心復雜性應對之道(修訂版)
- Emgu CV Essentials
- OpenCV 3 Blueprints
- Python Machine Learning Blueprints:Intuitive data projects you can relate to
- Web開發的平民英雄:PHP+MySQL
- Beginning C# 7 Hands-On:The Core Language
- 程序員面試金典(第6版)