微軟開源基於Rust的新軟件可在Kubernetes上運行WebAssembly
來自微軟的DeisLabs團隊最近開源了一款完全基於Rust的新軟件Krustlet,該軟件可以用來在Kubernetes上運行WebAssembly模塊。Kubernetes是來自谷歌的開源容器集群管理系統,主要用Go語言編寫。而微軟此次選用Rust來編寫這款Kubernetes相關項目,背後有著怎樣的原因?
Azure DeisLabs的高級軟件工程師Taylor Thomas 解釋,主要動機之一是Rust與WebAssembly(縮寫為WASM)的兼容性。WASM是便攜式的抽象語法樹,能夠讓開發者運用自己熟悉的編程語言進行編譯,再藉由虛擬機引擎在瀏覽器內運行。經過編譯的WASM二進製文件(或稱模塊)可以在任何系統上運行,而Rust是為這些二進製文件提供本機構建支持的少數語言之一。
除了兼容性之外,DeisLabs 團隊選擇Rust 的另一大原因是其“強大的安全保障”。Thomas 表示,儘管Rust 的借用檢查器(borrow checker)在項目初期帶來一些麻煩,可一旦學習並熟練使用後,用Rust 編寫的效率就非常高了。該團隊大約用了一周時間來學習運作方式,兩週後效率就提升了50%,到一個月時,所有人都能夠輕鬆編寫代碼,並達到最高效率。
最重要的是,由於Rust 編譯器的嚴格規則,它能夠從源頭遏制一些錯誤的產生。與後期再費心維護和調試相比,Rust 能夠節省不少時間,提高生產效率。
針對新開發的項目Krustlet 來講,Kubernetes 中存在大量自定義數據,並且云計算具有分佈式特性。該團隊認為,Rust 的採用“在編譯器級別擁有這些保護和安全保證,使我們對正在編寫的代碼充滿信心”。
Krustlet 這個項目被標記為“高度實驗性”,目前還不建議在生產環境中使用。Thomas 也指出了Rust 的異步運行時問題和學習曲線問題。“在學習曲線趨於平穩之前,需要花費數週的努力學習如何在Rust 中正確編碼。但是,由於上述的安全功能,這種前期的努力可以帶來豐厚的回報。一旦開發人員超越了這一初始曲線,他們就可以像使用任何其他語言一樣輕鬆地為代碼做出貢獻。”
上週發布的Rust語言年度調查報告中,“學習曲線”也被認為是阻礙開發者採用Rust的一大因素。Rust目前備受關注,但由於種種阻礙,仍不流行。儘管如此,微軟 DeisLabs團隊在博客文章中表示,他們看到了Rust在雲軟件中的光明前景,並將繼續嘗試在各種合適的項目中採用Rust。