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