雲端服務供應商Fastly釋出Lucet開源專案,這是原生的WebAssembly編譯器和Runtime,目的是要將WebAssembly帶出瀏覽器,在開發者的應用程式中,安全地執行不受信任的WebAssembly程式。

WebAssembly是新一代網頁格式,為C、C++以及Rust等高階程式語言的編譯,提供可移植性的優點,開發者可以選擇將WebAssembly網頁應用程式,部署在客戶端或是伺服器端,而且由於WebAssembly是為堆疊機器設計的二元格式,能夠在廣泛的平臺中,以原生速度執行程式碼。

看上WebAssembly省資源且高執行效率的優點,Fastly現在擴充其雲端平臺,支援執行WebAssembly程式的能力,讓使用者不再受限使用Fastly VCL(Varnish Configuration Language)腳本語言,而是能以更多元的程式語言,像是Rust、TypeScript、C和C++等程式語言開發程式。為此Fastly即將推出WebAssembly邊緣運算平臺Terrarium,而Lucet則是其背後的引擎。

Lucet使用Mozilla的Cranelift程式碼產生器建構而成,Cranelift專案被用於Firefox的WebAssembly和JavaScript的JIT引擎中,而Lucet還支援最新的WebAssembly模組化標準系統介面WASI,WASI則是個新的標準,能將核心功能,像是檔案系統、網路或是其他系統裝置安全地開放給WebAssembly程式。Mozilla要以WASI擴展WebAssembly的可移植性,使其不靠瀏覽器也能在多個平臺執行,Fastly提到,在Lucet支援WASI可以讓使用者在任何平臺執行WebAssembly程式,包括雲端、邊緣、瀏覽器、電腦或是智慧型手機。

Lucet可以讓邊緣雲端以同一個程序,在不會影響安全性的情況下,執行數以萬計的WebAssembly程式。Lucet有兩個元件編譯器以及Runtime,編譯器可以將WebAssembly模組編譯成為原生程式碼,而Runtime則可以管理資源並捕捉Runtime錯誤,編譯器與Runtime協同合作能夠確保每個WebAssembly程式僅能存取自己的資源。

Lucet可以在50微秒內,使用KB大小的記憶體實例化WebAssembly模組,Chromium的V8引擎則需要花費約5毫秒和MB大小的記憶體,才能建置JavaScript或WebAssembly程式實例。Fastly提到,Lucet是專為將WebAssembly轉為原生執行機器碼設計的AOT(Ahead-Of-Time)編譯,比起為瀏覽器引擎設計的JIT(Just-In-Time)編譯,在Runtime設計上更簡單,執行起來也更省資源。


Advertisement

更多 iThome相關內容