官术网_书友最值得收藏!

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操作系統的項目中,現已是官方所認可的一種語言。

主站蜘蛛池模板: 玉龙| 凉城县| 永登县| 阳谷县| 宝应县| 淮北市| 松溪县| 杨浦区| 焉耆| 阿拉善右旗| 田林县| 合山市| 屯留县| 冷水江市| 界首市| 沙雅县| 南昌县| 子长县| 镇平县| 秦安县| 天台县| 宣威市| 绥中县| 巫山县| 贵溪市| 礼泉县| 长岭县| 临泉县| 恩施市| 苍梧县| 六枝特区| 安泽县| 包头市| 望都县| 大同县| 大厂| 辛集市| 古浪县| 沐川县| 调兵山市| 望奎县|