在去年Mozilla、Fastly、英特爾和紅帽共同組成Bytecode Alliance,要推動WebAssembly在瀏覽器之外的發展。現在聯盟約成立一周年,但由於2020年受武漢肺炎疫情影響,Mozilla又進行了大裁員,因此Bytecode Alliance整體發展放慢。

而現在他們已經適應了新的常態,工作開始上軌道,因此官方也說明了目前各專案的進度。另外,Fastly則收編了整個開發JIT Runtime的Wasmtime團隊,預計將促進了開源原生WebAssembly編譯器專案Lucet和Wasmtime的發展。

Bytecode Alliance的重點專案WebAssembly奈米程序(Nanoprocesses)解決方案,目前仍持續積極發展中。奈米程序能夠將目前WebAssembly單體式應用程式,轉變成可由模組組合而成的應用程式,而這能從程式底層架構,改進WebAssembly應用程式的安全性,讓開發者可以更安全地使用他人編寫的相依項目。

WebAssembly奈米程序有三個核心部分,WASI(WebAssembly System Interface)、模組連接(Module Linking)以及介面類型(Interface Type),WASI還有模組連接兩種方式,都可以讓使用不同程式語言編寫的程式互通,而不同語言代表著不同數值表示法,以及不同的資源處理方式,因此就像是不同語言需要外語字典翻譯,而介面類型便是用來幫助溝通的翻譯角色。

在WASI的部份,官方推進了在低階系統介面層級跨平臺實作的工作,像是釋出wasi-socket API,提供安全處理Socket的方式,另外,也為關鍵安全操作釋出專用跨平臺函式庫cap-std,其以性能導向提供許多Rust標準函式庫的功能,可讓不同平臺的應用程式建立在安全的基礎上。

而為了支援機器學習工作負載,開發團隊也正在發展神經網路標準介面wasi-nn,官方提到,由於機器學習模型通常部署在不同基礎架構和作業系統的裝置上,只要使用wasi-nn,.wasm檔案就可以簡單地,以無關架構與作業系統的方式移植模型。

模組連接是可讓程式碼重用的方式,現在開發者可以使用主機API,將不同的模組連接在一起,但官方提到,這種方式太笨拙不夠快速,因此他們提出了新的模組連接提案,將連接改成宣告式的方法,使得模組更易使用,且在編譯時,引擎就能掌握模組連接的所有資訊。

介面類型目前能夠支援許多數值的互通,但是還不能處理資源的控制程式碼(Handle)和緩衝區,但這對WASI和其他API來說是重要的功能,因此除了目前已經支援的類型,包括字串、數字、參照、列舉、布林和物件等,接下來還要支援控制程式碼(Handle)與緩衝區,並在明年讓語言工具鏈支援介面類型。

Bytecode Alliance不只說明了專案進度,也提到了相關的人員異動,Wasmtime團隊從Mozilla移動到了Fastly中。Fastly是Bytecode Alliance中的重要成員,並且在去年開源了Lucet專案,官方提到,他們本來的計畫就是要將Lucet與Wasmtime合併,而人員的整併則會加速這個進展。

Mozilla將繼續有一個開發團隊,發展Firefox中的WebAssembly應用,而這部分會針對網頁開發者的需求,並且同時繼續開發被用在Firefox、Lucet和Wasmtime等許多專案中的程式碼產生器Cranelift。

熱門新聞

Advertisement