waiton-script-runtime

module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2026 License: MulanPSL-2.0

README

waiton-script-runtime

waiton-script(waiton 语言的可执行脚本子集)的运行时原型,用 Go 实现。

定位

waiton 主语言(cnb.cool/viscropst/waiton)是系统级编程语言,编译到机器码。其中有一个子集——waiton-script——可作为脚本被一个独立的运行时解释/执行(而非走完整编译器)。

本仓库是这个子集运行时的原型实现

  • 先用 Go 写原型,验证 waiton-script 的解析与执行模型(见 spec/)。
  • 待原型成熟、设计稳定后,用 waiton 自身重写(自举),作为 waiton 主语言的正式插件/脚本引擎。

与主仓路线图的关系

本仓库(原型)与 waiton 主仓 implementation-roadmap.md 的 Phase E 登记是两条完全独立的线。

  • 主仓 Phase E 登记的是「将来在 waiton 主仓用 waiton 语言实现正式引擎(E-1)」的规划;E-0 原型小节只是背景说明,不代表主仓路线图的进度
  • 本仓库只是提前验证子集语义与执行模型,实现进展不回填、也不需要回填主仓路线图——本仓库自己的 git log 就是进度记录。
  • 只有原型成熟、开始在主仓用 waiton 实现正式引擎时,才会对照 Phase E 的 E-1 勾选清单推进——那时才真正用到主仓的登记。

为什么独立仓库 + Go 原型

  • 原型期需要快速迭代解析器与执行模型,Go 的编译速度、工具链易部署、生态契合这一目标(详见 spec/ 中的语言选型讨论)。
  • 独立仓库避免污染 waiton 主编译器代码;原型稳定后再合并/自举。

范围(原型期)

  • ✅ waiton-script 子集的词法 + 语法解析(详见 spec/waiton-script.md
  • ✅ 子集专属执行模型(.wos 文件 / engine.exec 内联,见 spec/plugin-engine-draft.md
  • ❌ 完整 waiton 编译器(AOT/LLVM 后端)——那是 waiton 主仓库的事
  • ❌ 标准库全集——原型只覆盖脚本侧 use host / use engine 命名空间

目录结构

waiton-script-runtime/
├── README.md
├── go.mod
├── cmd/wos/            # 命令行入口(解析并运行 .wos / 内联脚本)
├── examples/           # 可运行样例脚本(hello / world_a / control / expr / full / stdlib_* / variadic_* / annotation_*)
├── stdlib/             # 内置标准库脚本(经 Go embed 投影到 host.* 命名空间)
│   ├── console.wos
│   ├── string.wos
│   └── math.wos
├── pkg/                    # 公共 API(外部 go get 可导入)
│   ├── engine/         # 引擎主入口(Load/注册宿主函数/调度)
│   ├── interp/         # 解释器 + 宿主桥接类型(HostSig/Value/WithDataLevel)
│   └── ast/            # AST 节点 + 数据级别常量
├── internal/               # 实现细节(仅项目内可导入)
│   ├── lexer/          # 词法分析
│   ├── parser/         # 语法分析 → AST
│   ├── check/          # 静态检查
│   ├── vm/             # 字节码 VM(三级执行)
│   └── registry/       # actor 注册表
└── spec/               # 需求基线(从 waiton 主仓库快照)
    ├── README.md               # 基线索引 + 原型实现状态对照表
    ├── waiton-script.md        # 子集语言规范(主仓快照)
    ├── plugin-engine-draft.md  # 插件引擎设计(主仓快照)
    ├── usage.md                # 使用样例(本仓新增)
    ├── data-permission-design.md  # 数据重要性分层设计(本仓新增)
    ├── ui-engine-plan.md       # UI 引擎整合计划(本仓新增)
    └── executor-accel-plan.md  # 执行器加速调研(本仓新增)

构建与运行

# 需要 Go 工具链(本机经 corntron 引入:D:/Portable/hermes-agent/windows-amd64/runtimes/go)
go build -o wos.exe ./cmd/wos
./wos.exe exec examples/hello.wos

自举路线

  1. Phase 0(当前):Go 原型 —— 解析器 + 最小执行器,跑通 spec/ 里的示例。
  2. Phase 1:覆盖 spec/waiton-script.md 全部子集语法 + spec/plugin-engine-draft.md 的执行模型。
  3. Phase 2:用 waiton 重写核心(自举),替换 Go 原型,接入 waiton 主语言工具链。

License

MulanPSL-2.0(木兰宽松许可证,第2版)——与 waiton 主语言项目一致。完整文本见 LICENSE

Directories

Path Synopsis
cmd
wos command
Command wos 是 waiton-script 运行时原型的命令行入口。
Command wos 是 waiton-script 运行时原型的命令行入口。
internal
check
Package check 提供 waiton-script 子集的静态校验(语义分析,§2.3 检查时机)。
Package check 提供 waiton-script 子集的静态校验(语义分析,§2.3 检查时机)。
lexer
Package lexer 将 waiton-script 源码切分为 token 流。
Package lexer 将 waiton-script 源码切分为 token 流。
parser
Package parser 提供 waiton-script 子集的递归下降解析。
Package parser 提供 waiton-script 子集的递归下降解析。
registry
Package registry 实现 waiton 引擎的「分层注册表」——树形分层键值仓库, 供 config 配置树 / host 命名空间 / 脚本状态三类落点共用同一套访问 API。
Package registry 实现 waiton 引擎的「分层注册表」——树形分层键值仓库, 供 config 配置树 / host 命名空间 / 脚本状态三类落点共用同一套访问 API。
vm
Package vm 是 waiton-script 子集的字节码虚拟机(§4.6 三级执行统一枢纽)。
Package vm 是 waiton-script 子集的字节码虚拟机(§4.6 三级执行统一枢纽)。
pkg
ast
Package ast 定义 waiton-script 子集的抽象语法树节点。
Package ast 定义 waiton-script 子集的抽象语法树节点。
engine
Package engine 是 waiton-script 运行时的引擎层(Supervisor Actor + 内嵌调度器)。
Package engine 是 waiton-script 运行时的引擎层(Supervisor Actor + 内嵌调度器)。
interp
host 命名空间宿主注入支(§3.3.2)——非 waiton 宿主(C / Rust / Go 等)注册函数进 引擎 host 命名空间的手工映射 API(等价 waiton 宿主的 inject)。
host 命名空间宿主注入支(§3.3.2)——非 waiton 宿主(C / Rust / Go 等)注册函数进 引擎 host 命名空间的手工映射 API(等价 waiton 宿主的 inject)。
Package stdlib 持有内置标准库的 waiton 源代码(host 命名空间的脚本库部分)。
Package stdlib 持有内置标准库的 waiton 源代码(host 命名空间的脚本库部分)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL