当前位置: 首页 > 科技观察

Goscript:Rust对Go语言规范的实现

时间:2023-03-18 21:46:11 科技观察

Anaconda开发人员最近发布了PyScript,这是一个允许开发人员在HTML中混合Python代码的框架,有人称之为“JSPforPython”。事实上,PyScript在底层使用WebAssembly,因为它建立在Pyodide之上,Pyodide由编译成WebAssembly的CPython3.8解释器组成,允许Python在Web浏览器中运行。无独有偶,开发者用同样的思路让Go在浏览器上流畅运行。https://goscript.dev网站支持直接在浏览器端运行Go代码。这是围棋游乐场。底层使用Goscript,通过WASM实现。Goscript是Go语言规范的非官方实现,用于Rust项目的嵌入或封装,提供更简单的封装和调用底层Rust代码的方式。就像Lua之于Redis/WoW,或者Python之于NumPy。Goscript由六个项目组成:parser将源码转为AST,移植自Go官方代码。类型检查器基于AST进行类型推导和类型检查,也是从Go官方代码移植过来的。codegen根据AST和类型信息生成字节码。虚拟机运行字节码。std官方库,移植自Go官方库。引擎包含官方库的原生部分,加上一个简单的包装器。Goscript几乎实现了Go的所有特性(pre1.18,所以不包括泛型),并移植了一些官方库。已通过的相关测试用例参见https://github.com/oxfeeefeee/goscript/tree/master/engine/tests。Goscript项目代码:https://github.com/oxfeeefeee/goscript本文转自OSCHINA文章标题:Goscript:Rust实现的Go语言规范本文地址:https://www.oschina.net/news/194738/goscript-wasm