ppyne/ProtoScript2

GitHub: ppyne/ProtoScript2

ProtoScript2 是一门严格静态类型、确定性执行的基于原型的编程语言,提供规范化的 v2.0 语言标准与 Node/C 双重参考实现,强调编译期完全确定性和 100% 规范符合性。

Stars: 1 | Forks: 0

ProtoScript2 # ProtoScript V2 — 宣言 ProtoScript V2 是一种为实现一个简单承诺而设计的语言: **没有魔法,没有隐性成本,没有语义歧义**。 ProtoScript V2 可以被定义为一种具有固定布局的静态基于原型的语言,在这种语言中,委托关系、字段和方法都在编译时完全确定。 宣布该语言发布的英文文章:[ProtoScript2: A Static Prototype-Based Language](https://alexandre.vialle.ovh/Articles/Programming/protoscript2-a-static-prototype-based-language) 另一篇英文文章:[ProtoScript2: At the Boundaries of Genericity](https://alexandre.vialle.ovh/Articles/Programming/protoscript2-at-the-boundaries-of-genericity) 另一篇可作为 ProtoScript2 宣言的英文文章 [Prototype-Based Thinking — The ProtoScript2 Position](https://alexandre.vialle.ovh/Articles/Programming/prototype-based-thinking-the-protoscript2-position) 该项目现已具备独立的规范、治理和可测试性。 ![La magie cache les coûts. ProtoScript les rend visibles](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3767f12798051929.png) ## ProtoScript V2 的设计理念 - 严格静态类型 - 基于原型的模型(无类的面向对象) - 无用户 RTTI - 函数不能作为值 - 无函数泛型 - 编译时确定性解析 ## 语言契约 - 参考用户手册为 [`MANUEL_REFERENCE.md`](MANUEL_REFERENCE.md)(描述性,与规范保持一致) - 规范性来源是 [`SPECIFICATION.md`](SPECIFICATION.md)(ProtoScript Language Specification v2.0) - 实现指南 [`docs/implementation_guide.md`](docs/implementation_guide.md) - 一致性测试套件(`tests/manifest.json`)是契约的一部分 - 只有通过 100% 规范测试的实现才被视为符合标准 - 没有主要版本号变更就不会有语义变化 ## 为什么存在此仓库 此仓库提供: - 完整的规范性规格说明 - Node.js oracle 实现(`bin/protoscriptc`) - 用于执行的参考 C CLI(`c/ps`) - 用于前端验证的 C CLI 路径(`c/pscc`) - Node/C 交叉验证以避免静默分歧 Node.js 作为 **可执行规范**。 C 作为 **底层可实现性证明**。 ## 演示 得益于通过 WebAssembly(使用 emscripten 编译)在 Web 上运行的演示,您可以立即测试 ProtoScript2: 立即尝试:[ppyne.github.io/ProtoScript2/](https://ppyne.github.io/ProtoScript2/) ## 基本命令 ### 前置条件 - Node.js(用于 oracle `bin/protoscriptc`) - C 编译器(clang 或 gcc)+ make - POSIX(macOS / Linux) - `jq`(用于测试套件) - [mcpp](https://github.com/zeroc-ice/mcpp)(集成预处理器)通过 Git submodule 获取 获取 mcpp 预处理器源码(submodule): ``` git submodule update --init --recursive ``` ### 编译 编译 C 二进制文件: ``` make -C c ``` 这将生成: - `c/ps`(执行 CLI) - `c/pscc`(C 前端) 一致性验证: ``` tests/run_conformance.sh ``` Node/C 交叉验证(严格): ``` tests/run_node_c_crosscheck.sh --strict-ast --strict-static-c ``` 完整运行器(构建 + 一致性 + 交叉检查 + CLI): ``` tests/run_all.sh ``` Oracle 端(Node)的编译/控制: ``` bin/protoscriptc --check file.pts bin/protoscriptc --run file.pts bin/protoscriptc --emit-ir-json file.pts bin/protoscriptc --emit-c file.pts ``` 注意: - `bin/protoscriptc`(Node)是 **唯一** 能够生成 C(`--emit-c`)和完整 IR(`--emit-ir`)的工具。 - `c/pscc`(C)提供部分前端,并 **重定向** 到 `bin/protoscriptc` 以执行 `--emit-c` / `--emit-ir`。 标准模块注册表: - runtime/CLI 加载 JSON registry 以用于 `import Io/Math/JSON`。 - 您可以通过环境变量 `PS_MODULE_REGISTRY` 强制指定位置。 默认搜索顺序: `PS_MODULE_REGISTRY`, 二进制文件 `ps` 旁边的 `registry.json`, `./registry.json`, `/etc/ps/registry.json`, `/usr/local/etc/ps/registry.json`, `/opt/local/etc/ps/registry.json`, `./modules/registry.json`。 C CLI(执行): ``` make -C c ./c/ps --help ./c/ps run file.pts ./c/ps check file.pts ./c/ps ast file.pts ./c/ps ir file.pts ./c/ps emit-c file.pts # forward vers bin/protoscriptc ``` 有用的选项(位置自由,命令前后均可): ``` ./c/ps --trace run file.pts ./c/ps run file.pts --trace-ir ./c/ps run file.pts --time ``` C 前端(pscc): ``` ./c/pscc --check file.pts ./c/pscc --check-c file.pts ./c/pscc --check-c-static file.pts ./c/pscc --ast-c file.pts ./c/pscc --emit-ir-c-json file.pts ./c/pscc --emit-ir file.pts # forward vers bin/protoscriptc ./c/pscc --emit-c file.pts # forward vers bin/protoscriptc ``` 构建 WASM(可复现): ``` make web-clean make web ``` 文档化的 WASM pipeline(工具版本、验证一致性)位于此处: [`docs/wasm-build.md`](docs/wasm-build.md) ## 不妥协的扩展 ProtoScript V2 允许通过规范性原生 API(规范第 20 节)使用第三方模块,但需遵守严格约束: - 仅扩展环境,绝不扩展语义 - 仅限编译时解析 - 显式导入并静态类型的符号 - 无动态加载,无 RTTI,无反射 编写原生模块的官方文档: [`docs/native-modules.md`](docs/native-modules.md) ## 状态 ProtoScript V2 是一种根据其规范定义的语言。 固定的 v2.0 基线标签为:`spec-v2.0-final`。 ## 编辑器工具 仓库在 `tools/` 中包含轻量级编辑支持: - VS Code 扩展(语法高亮、代码片段、补全以及通过最小化 LSP 提供的签名帮助) - Vim 支持(文件类型检测 + 语法高亮) 有关安装说明,请参阅 `tools/vscode/protoscript2/README.md` 和 `tools/vim/README.md`。 ![Screenshot VS Code](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/fad6881017051931.png)
标签:AI工具, Bing搜索, GNU通用公共许可证, MITM代理, Node.js, ProtoScript, V2.0, 内存安全, 原型继承, 客户端加密, 嵌入式, 工具链, 布局固定, 引用实现, 性能, 无类, 无运行时开销, 无魔法, 确定性, 类型安全, 系统编程, 编程语言, 编译器, 规范, 静态类型, 面向对象, 验证