在Rust 中实现Go规范

332 阅读2分钟

Goscript

Go规格作为一种脚本语言来实现。

目标

  • 运行最纯粹的Go代码,如果需要的话,可能会增加一些动态功能。

我如何尝试

项目 "引擎 "是入口/包装。里面有测试案例可以浏览。

  • 确保你的Rust安装是最新的。
  • 克隆这个资源库。
  • 转到goscript/engine
  • 运行cargo test -- --nocapture

使用案例

  • 像Lua一样作为一种嵌入式语言。
  • 像Python一样作为一种胶合语言。

理论依据

  • 我们需要一种对Rust友好的脚本语言。
  • Go很流行,而且很简单(即使是作为一种脚本语言)。
  • 在某些情况下,当你的项目变得很大。
    • 如果Go是一种嵌入式语言,它将比Lua更好。
    • 如果Go是一种胶水语言,从项目的可维护性来说,它将比Python更好。
  • 我发现了一个我喜欢的新锤子(Rust),并决定把它用在我喜欢的钉子(Go)上。

实施

  • 有五个项目。
    • 解析器 -- Go安装程序附带的官方实现的一个移植。
    • 类型检查器 -- Go安装程序中的官方实现的一个移植。
    • codegen -- 生成字节码。
    • vm -- 运行字节码。
    • engine -- 包装器。

进展

  • 语言:最大的缺失部分是goroutine/channel/defer,支持大部分功能,其中一些可能是第一次在脚本语言中实现:),如Pointer/Interface/Struct。

  • 标准库:刚刚开始。

  • 生产准备:远远没有。解析器和类型检查器可能还不错,因为它们被移植了,并且通过了
    原始代码中的测试案例。后台有很多粗糙的边缘,我们需要更多的测试案例。

  • 下一步:暂时没有新的功能,然后在标准库上进行打磨。

请与我们联系

  • 电子邮件:pb01005051 at Gmail.
  • wechat。oxfeeefeee

GitHub

github.com/oxfeeefeee/…