parser / compiler
把 `.zs` 源码解析成 AST,再进行符号解析、类型推断和 IR 生成。
Runtime
Zust workspace 把语言前端、动态值模型、JIT VM、对象树、GPU 后端和编辑器工具放在一起,方便把脚本嵌入真实 Rust 系统。
cargo check --workspace
cargo run -p vm --example minimal_vm
cargo run -p zusts
把 `.zs` 源码解析成 AST,再进行符号解析、类型推断和 IR 生成。
提供 Cranelift JIT、动态边界模型和可寻址对象树。
把 Zust 的计算子集推向 SPIR-V、Metal 和 Vulkan dispatch。
parser 使用手写词法分析和递归下降解析器,compiler 负责 AST 到 IR、符号表、类型推断和函数编译准备。这样语言可以保持小而透明,方便继续扩展语法。
`dynamic` crate 提供统一的运行时值模型,覆盖 list、map、struct、bytes、typed vector、JSON 和 MessagePack。普通脚本语法如 `list[idx]`、`map.key` 和 `value.len()` 会降到这些运行时辅助方法上。
let user = {name: "Ada", points: 10};
user.points += 5;
let events = [];
events.push({kind: "login", user: user.name});
`zust-vm` 可以导入源码并编译函数。宿主 Rust 代码拿到函数指针后,可以把稳定脚本路径作为本地函数调用。
let compiled = vm.get_fn("demo::add", &[Type::I64, Type::I64])?;
assert_eq!(compiled.ret_ty(), &Type::I64);
`root` 是可寻址对象树。脚本可以通过路径添加、读取、维护 list/map,也可以接入 Redis 或本地存储抽象,用于智能体状态和运行时对象管理。
root::add("local/user/1", {name: "Zust", points: 10});
let user = root::get("local/user/1");
root::add_list("local/events");
root::push("local/events", {kind: "login"});
`gpu` 模块提供 SPIR-V 编译/检查、Metal 编译/检查、Vulkan 运行和 Metal 运行入口。编译 shader 不一定需要真实 GPU dispatch;运行时才需要对应平台 feature 和驱动。
gpu::spirv_compile(options);
gpu::spirv_check(options);
gpu::metal_compile(options);
gpu::vulkan_run(options);
仓库包含 `zust-lsp` 和 Zed 扩展。tree-sitter grammar 覆盖函数、结构体、impl、闭包、list/map、路径调用、range 和类型标注等常见语法。