第 55 期 Go&WebAssembly 簡介

mai_yang發表於2020-02-13

文章來自於:https://reading.developerlearning.cn/reading/55-2019-08-15-go-webassembly-guide/

分享者: 柴大

觀看視訊

Go 夜讀第 55 期 Go&WebAssembly 簡介

WebAssembly 簡介 WebAssembly 是一種新興的網頁虛擬機器標準,它的設計目標包括:高可移植性、高安全性、高效率(包括載入效率和執行效率)、儘可能小的程式體積。

根據 Ending 定律:⼀切可被編譯為 WebAssembly 的,終將被編譯為 WebAssembly。

本次分享 Go&WebAssembly 相關的用法。

分享時間

2019-08-15 21:00:00

分享平臺

zoom 線上直播 - https://zoom.us/j/6923842137

更多討論

FelixSeptem:補充一下 go 官方給的 wiki https://github.com/golang/go/wiki/WebAssembly 以及 WebAssembly 官網 https://webassembly.org/ 個人比較傾向於對於 https://github.com/gopherjs/gopherjs 來比較理解,相對於 go->js (包括 react 等等) 的方案,WebAssembly 帶來的異同是什麼?

chai2010 :@FelixSeptem wasm 和 gopherjs 最大的差異:wasm 是官方支援,同時 wasm 是國際標準是其它語言認可的中間格式。

以前雖然很多工具輸出 js,那是因為沒有 wasm 可以選擇。 現在有了 wasm,大家肯定只支援 wasm 而逐漸弱化 js 的支援。 畢竟 wasm 虛擬機器實現比 v8 簡單多了,效能又可以秒殺 js。

wasm 最大的潛力是在瀏覽器之外,甚至可以想象成一個輕量化的 Docker 環境。 我覺得這個才是 wasm 真正有意思的地方,wasm 對於 js 完全屬於降維打擊。

changkun:還沒有在生產環境使用過 wasm。從給的馬里奧的例子來看,go wasm 本質上是分發由 Go 編譯好 .wasm,而 Go 端的本質就是提供了一些能夠解釋為 wasm 的 utils。不太清楚會不會在分享中提及這一本質。

長遠來看,這個 .wasm 檔案在特性支援的情況下最終會包含完整的 Go 執行時, 但 go wasm 並沒有明確在 web 場景下為什麼一定需要它,當然不可否認它的確為相容並移植 Go 程式碼來發展 web 應用帶來了便捷,但前提是我們必須有足夠多基礎設施是基於 Go 的,但遊戲並沒有,非常希望看到一些能夠說服用 Go 寫 wasm 而不是其他語言(C/C++ 有著豐富的圖形資產,而 Go 在這方面的積累為 0,甚至連馬里奧的例子都是依賴一個 cgo 對 c sdl2 renderer 的封裝)編譯 wasm 的論點。

參考資料

更多原創文章乾貨分享,請關注公眾號

更多原創文章乾貨分享,請關注公眾號
  • 第 55 期 Go&WebAssembly 簡介
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章