繼Python之后,Go也順利在瀏覽器上運(yùn)行
發(fā)布日期:2022/5/16 9:39:30 瀏覽量:
文 | 局長(zhǎng)
出品 | OSC開源社區(qū)(ID:oschina2013)
Anaconda 開發(fā)商最近發(fā)布了 ,這是一個(gè)可以讓開發(fā)者在 HTML 中混寫 Python 代碼的框架,有人將其稱為 “Python 版 JSP”。事實(shí)上,PyScript 底層采用了 WebAssembly, 因?yàn)樗?Pyodide 構(gòu)建,Pyodide 由編譯成 WebAssembly 的 CPython 3.8 解釋器組成,允許在網(wǎng)頁(yè)瀏覽器中運(yùn)行 Python。
無(wú)獨(dú)有偶,開發(fā)者采用相同的思路讓 Go 也順利在瀏覽器上運(yùn)行。https://goscript.dev 網(wǎng)站支持在瀏覽器端直接運(yùn)行 Go 代碼,這是一個(gè) Go playground,底層采用 Goscript,通過 WASM 實(shí)現(xiàn)。
Goscript 是 Go 語(yǔ)言規(guī)范的非官方實(shí)現(xiàn),用于 Rust 項(xiàng)目的內(nèi)嵌或封裝,提供了更簡(jiǎn)單的方式封裝和調(diào)用底層的 Rust 代碼。就像 Lua 之于 Redis/WoW,或者 Python 之于 NumPy。
Goscript 包含六個(gè)項(xiàng)目:
-
parser把源代碼變成 AST,移植自 Go 官方代碼。
-
type checker基于 AST 做類型推導(dǎo)和類型檢查,也移植自 Go 官方代碼。
-
codegen基于 AST 和類型信息生成字節(jié)碼。
-
vm運(yùn)行字節(jié)碼。
-
std官方庫(kù),移植自 Go 官方庫(kù)。
-
engine包含官方庫(kù)的 native 部分,再加上簡(jiǎn)單封裝。
Goscript 實(shí)現(xiàn)了 Go 的幾乎所有特性(pre 1.18,因此不包括泛型),并移植了部分官方庫(kù),已通過的相關(guān)測(cè)試用例查看 https://github.com/oxfeeefeee/goscript/tree/master/engine/tests。
Goscript 項(xiàng)目代碼:https://github.com/oxfeeefeee/goscript
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生