6个版本

0.1.5 2023年9月12日
0.1.4 2023年9月8日
0.1.3 2023年7月4日
0.1.1 2023年5月27日
0.1.0 2023年4月4日

#914 in 编程语言


golana-cli 中使用

BSD-2-Clause

1.5MB
32K SLoC

此crate是Goscript项目的一部分。请访问 https://goscript.dev 获取更多信息。

它是Goscript项目的所有部分的包装器。它还实现了标准库,标准库部分仍在开发中,只有少数部分已实现。

示例

use std::path::{Path, PathBuf};
use go_engine::{Config, ErrorList, SourceReader, run};

fn run_file(path: &str, trace: bool) -> Result<(), ErrorList> {
   let mut cfg = Config::default();
   cfg.trace_parser = trace;
   cfg.trace_checker = trace;
   let sr = SourceReader::local_fs(PathBuf::from("../std/"), PathBuf::from("./"));
   let result = run(cfg, &sr, Path::new(path), None);
   if let Err(el) = &result {
       el.sort();
       eprint!("{}", el);
   }
   result
}

特性

该项目旨在嵌入,因此具有许多功能标志以开启/关闭不同部分。

  • read_fs: 从本地文件系统读取源代码
  • read_zip: 从zip文件读取源代码
  • async: 支持通道和goroutine
  • go_std: 启用Go标准库
  • btree_map: 使其使用BTreeMap而不是HashMap
  • codegen: 启用代码生成
  • instruction_pos: 为字节码添加指令位置以进行调试
  • serde_borsh: 使用Borsh为字节码提供Serde支持
  • wasm: 启用wasm支持

依赖项

~2–4.5MB
~90K SLoC