【CSDN 編者按】所謂溫故而知新,適當的梳理回溯歷史發展,有利于對未來做出更加準確的判斷和更加可靠的計劃,本文,讓我們一起來回顧 Wasm 2020 年的發展……
作者 | 夏歌 責編 | 張紅月
出品 | CSDN(ID:CSDNnews)
WebAssembly(WASM)最初由 W3C 的Mozilla、谷歌、微軟、蘋果等公司合作研發,是瀏覽器內應用程式的高性能執行引擎,目前已經在主流瀏覽器中如 Chrome、Firefox、Edge、Safari 中得到了廣泛的支持,
但是隨著 WASM 在開發者社區中越來越流行,WASM 也正在成為服務端以及云計算平臺上的新銳,
2019 年 12 月,Bytecode Alliance 位元組碼聯盟宣布正式成立,這個聯盟成立的主要目標就是通過協作實施標準和提出新標準,以完善 WebAssembly 在瀏覽器之外的生態,服務端的 WebAssembly 正式被人所熟知,
回到 2020 年,WebAssembly 的 2020 年是以年初在 Google 總部舉辦的 WebAssembly summit 開始的,這是 WASM 社區第一次大型線下會議,對 WebAssembly 感興趣的開發者從世界各地出發,匯聚 Mountain View,雖然這次會議只有一天,但是涵蓋了眾多議題包括 Wasm 在瀏覽器與服務端的發展,這也是疫情前最后的國際技術大會之一,
要把 WebAssembly 用于服務端,我們必須將它與瀏覽器之外的計算環境進行適配,語言、庫與工具鏈是關鍵,
語言、庫與工具鏈
相比 2019 年, WebAssembly 在2020年支持的語言新增了這些!下面這些語言都可以被編譯成 Wasm 位元組碼在瀏覽器或者 Wasm 虛擬機上運行,
Swift
Kotlin
Java
COBOL
.NET
Go
借助工具鏈 LLVM ,我們可以把多種語言寫的庫編譯成 WebAssembly,進而在瀏覽器中運行:
TensorFlow.js:TensorFlow 官方團隊實作了在 WebAssembly 中使用 SIMD 和多執行緒來增強 TensorFlow.js
FFMPEG:這是一個著名的處理音視頻的庫,在開發者 Jerome Wu 的努力下,將用 C 寫的 FFmpeg 匯出了 WebAssembly 格式,從而使 FFMPEG 可以在瀏覽器中運行,
上面只是列舉了兩個著名的庫,在2020年,我們經常看到經典游戲借助 WebAssembly 可以直接在瀏覽器中運行,
借助這些高性能的 C 語言的庫,我們看到一些公司的 Web 應用在瀏覽器中使用 wasm,主要集中在音視頻領域
Zoom
Google Meet
Bilibili
Mozilla 之變
時間來到 8 月份,Mozilla 宣布裁員 250 人,這其中比較受影響的團隊之一就是 WebAssembly 團隊,包括 Cranelift 與 WASI 的開發者,而 WASI 正是服務端 WebAssembly 的最重要規范,一時間,與這個世界一樣,WebAssembly 的未來產生了很多不確定性,
Bytecode Alliance 位元組碼聯盟
位元組碼聯盟經過1年的發展,聯盟成員沒有任何變化,無新增,也無刪減,但是在 WebAssembly 規范上有了不少的進展,其成員公司 Fastly 雇傭了 Mozilla 裁掉的 WebAssembly 團隊,為整個生態的穩定發展做出了重要貢獻,
Bytecode Alliance 主要圍繞 nanoprocess 進行創新:將 WebAssembly 從一種應用程式的“編譯目標”,發展成為一種可以用來組織應用程式的“模塊化生態系統”,
首先便是 WASI ,這是針對 WebAssembly 平臺的系統介面,在 2020 年,我們看到更多的 Wasm 實施支持了 WASI,支持 WASI 似乎已經成為必須要做的事情,
Deno 支持 WASI
V8/Node.js 支持 WASI
用于網路連接的 wasi-socket 已經有了原型
用于機器學習的 wasi-nn 正在開發中
位元組碼聯盟之外的 SSVM 貢獻了 wasi-tensorflow ,使 TensorFlow 可以在 WebAssembly 程式中以 native speed 運行,
其次是 Module Linking(模塊連接),可以被視為是兩個 Wasm 模塊直接相互通信的一種方式,
然后是 Interface Types,可以使 Wasm 與一系列豐富的值型別“溝通,
為了實作這一系列目標,位元組碼聯盟也將開發一系列 Wasm-tools,
wasmparser,這是一個 Wasm 檔案決議器,它非常節省記憶體資源,因為不會進行任何額外的資源分配,并且可以通過“流加載”的方式進行決議;
wasmprinter,這個工具可以將一個以 .wasm 結尾的 Wasm 二進制格式檔案轉換為對應的 .wat 文本格式,這對于除錯和測驗將會很有幫助;
Wat & wast,這兩個工具可以將以 .wat 和 .wast 結尾的 Wasm 文本格式代碼轉換為對應的二進制格式位元組碼,這對于運行測驗用例非常有用(因為在文本格式下,維護測驗用例將會更加方便);
wasm-smith,這是一個測驗用例生成器,可以生成“偽隨機”的 Wasm 模塊,并且保證這些 Wasm 模塊是合法有效的,可以將其用于模糊測驗,
電商平臺 Shopify 基于 WebAssembly 搭建了一個函式服務,讓使用 Shopify 搭建電商網站的商戶可以根據自己的業務需求在 Shopify 平臺上傳自己的函式代碼,Shopify 團隊選擇 WebAssembly 是因為 WebAssembly 是安全的,不會寫入外部的惡意代碼;同時也是高性能的,能夠滿足電商對運行速度的要求,同樣的模式,在其他 SaaS 平臺上也有嘗試,比如圖片處理服務商 Cloudinary、流資料處理商 YoMo,
超越位元組碼聯盟
同時,不在 Bytecode Alliance 的 Wasm 虛擬機團隊也在以自己的方式為社區做貢獻,
Wamser 在2020年底發布 1.0.0 版本,這是 Wasm 虛擬機中第一發布 1.0.0 版本的虛擬機,Wasmer 支持將多種語言編譯成 wasm 位元組碼,并且能夠在 Mac、Linux、Windows 上運行,Wasmer 同時也支持多種編譯器,Cranelift、LLVM 以及編譯成智能合約的 Singlepass,
SSVM 對 WebAssembly 的貢獻在于類 WASI 的擴展,WASI 規范為開發者提供了一種機制,可以有效、安全地擴展 WebAssembly 虛擬機,根據實際場景的需求,SSVM 做了 Tensorflow、存盤、命令界面、以太坊、Substrate 等擴展,
除了通用的云計算與邊緣計算,WebAssembly 虛擬機在區塊鏈領域有了顯著的采用,目前市面上比較大的公鏈專案都采用 WebAssembly 虛擬機作為智能合約的執行引擎,如 Polkadot 的 wasmi 虛擬機、Cosmos 的 cosmos-wasm、EOS、Ethereum、Oasis Labs、Solana、Near、ParaState 等公鏈,
社區活動
2020年,除了第一屆 Wasm Summit ,我們還看到了許多其他的 WebAssembly meetup,例如 WebAssembly Live,
2021 年初,Linux Foundation 要舉辦 Cloud Native Wasm Day,這或許可以被視為服務端 WebAssembly 將也被更廣泛的開發者社區認可的信號,與此同時,第二屆 WebAssembly Summit 也已經確定了舉辦日期,2021 年,中國的 Wasm 大會也在籌備中,
雖然 WebAssembly 的 2020 年充滿波折,但 WebAssembly 的 2021 年依然充滿希望,
參考資料:
Bytecode Alliance: One year update:https://bytecodealliance.org/articles/1-year-update
WebAssembly Landscape:https://webassemblytoday.substack.com/p/webassembly-landscape
WebAssembly Summit 2020:https://medium.com/wasm/webassembly-summit-2020-881510ccb0c2
How Shopify Uses WebAssembly Outside of the Browser:https://shopify.engineering/shopify-webassembly
Wasmer 1.0:https://medium.com/wasmer/wasmer-1-0-3f86ca18c043
The SSVM 0.7 release brings WebAssembly to the public cloud:https://blog.secondstate.io/post/20210202-ssvm-release/
Cloudinary:https://cloudinary.com/documentation/custom_functions#webassembly_functions
YoMo:https://github.com/yomorun/yomo-flow-ssvm-example
?X86 "將死"?RISC-V 正當立 ?程式員拒帶電腦回家被開除獲賠 19.4 萬;庫克稱,很多功能來自中國消費者反饋;谷歌開源1.6萬億引數語言模型 | 極客頭條
?新的一年,這7個“菜鳥坑”千萬別再踩了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/261788.html
標籤:區塊鏈
