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