Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: fmt test examples package-metadata package clippy api-doc docs doc-check check bench qbench
.PHONY: fmt test examples package-metadata package qbench-check clippy api-doc docs doc-check check bench qbench

fmt:
cargo fmt --check
Expand Down Expand Up @@ -35,10 +35,13 @@ docs: doc-check
cargo run --locked --quiet --bin qdocco -- manuals/manual.latin.qc -o docs/manual.latin.html
cargo run --locked --quiet --bin qdocco -- manuals/manual.devanagari-sa.qc -o docs/manual.devanagari-sa.html

check: fmt test examples package-metadata package clippy api-doc doc-check
check: fmt test examples package-metadata package qbench-check clippy api-doc doc-check

bench:
cargo bench --locked --bench core

qbench:
cargo run --locked --release --bin qbench -- --json

qbench-check:
cargo run --locked --quiet --release --bin qbench -- --json --iterations 1 --repeat 3 >/dev/null
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

QuickCoffee 是一台以 Rust 编写、受 CoffeeScript 启发的字节码脚本引擎。它保留紧凑、可读的表达式语法,却不兼容 JavaScript:没有原型链、`this`、`eval` 或嵌入 JavaScript。

当前实现遵循 [RFCs/0000-project-scope.md](RFCs/0000-project-scope.md) 至 [RFCs/0106-package-verification-gate.md](RFCs/0106-package-verification-gate.md)。
当前实现遵循 [RFCs/0000-project-scope.md](RFCs/0000-project-scope.md) 至 [RFCs/0107-qbench-release-gate.md](RFCs/0107-qbench-release-gate.md)。

```coffee
square = (x) -> x * x
Expand All @@ -27,6 +27,7 @@ cargo run -- --dump-bytecode example.qc
cargo run -- --fingerprint example.qc
cargo run --release --bin qbench -- --json --iterations 100
cargo run --release --bin qbench -- --json --iterations 100 --repeat 3
cargo run --locked --quiet --release --bin qbench -- --json --iterations 1 --repeat 3
cargo run --example embed
cargo run --bin qdocco -- example.qc -o example.html
cargo run --bin qdocco -- --markdown example.qc -o example.md
Expand Down
2 changes: 1 addition & 1 deletion RFCs/0000-project-scope.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ QuickCoffee 是一个 Rust 实现的、受 CoffeeScript 2016 启发的脚本引

本仓库中的测试即 0.1 的语义基线。对语法或运行时的新增特性必须先以 RFC 补充定义,并至少添加:成功测试、错误测试及字节码验证测试。

当前已实现的后续语义与工具 RFC 延伸至 RFC 0106;其中 RFC 0077 定义 JSON 输出、RFC 0079 定义 TAP 输出、RFC 0080 定义 CLI 字节码指纹、RFC 0081 定义可机器读取的基准输出、RFC 0082 规范化指纹编码、RFC 0083 定义 Markdown 文学编程产物、RFC 0084 定义嵌入上下文 fuel 控制、RFC 0085 定义可执行 Rust 嵌入示例、RFC 0086 定义 crate 发布元数据、RFC 0094 定义 qdocco 最终值门禁、RFC 0095 定义字符串步进迭代、RFC 0096 定义其性能基准、RFC 0097 定义 `do` 参数转发、RFC 0098 定义 RFC 索引门禁、RFC 0099 定义 `!` 否定别名、RFC 0100 定义有符号 `by` 步长、RFC 0101 定义 qdocco 原子输出、RFC 0102 定义 qtest 规范文件去重、RFC 0103 定义 qbench schema 版本、RFC 0104 定义 qdocco 块注释代码保留、RFC 0105 定义 qbench 重复采样中位数、RFC 0106 定义 crate 发布包验收门禁,均不改变脚本语言值模型的原型无关约束。
当前已实现的后续语义与工具 RFC 延伸至 RFC 0107;其中 RFC 0077 定义 JSON 输出、RFC 0079 定义 TAP 输出、RFC 0080 定义 CLI 字节码指纹、RFC 0081 定义可机器读取的基准输出、RFC 0082 规范化指纹编码、RFC 0083 定义 Markdown 文学编程产物、RFC 0084 定义嵌入上下文 fuel 控制、RFC 0085 定义可执行 Rust 嵌入示例、RFC 0086 定义 crate 发布元数据、RFC 0094 定义 qdocco 最终值门禁、RFC 0095 定义字符串步进迭代、RFC 0096 定义其性能基准、RFC 0097 定义 `do` 参数转发、RFC 0098 定义 RFC 索引门禁、RFC 0099 定义 `!` 否定别名、RFC 0100 定义有符号 `by` 步长、RFC 0101 定义 qdocco 原子输出、RFC 0102 定义 qtest 规范文件去重、RFC 0103 定义 qbench schema 版本、RFC 0104 定义 qdocco 块注释代码保留、RFC 0105 定义 qbench 重复采样中位数、RFC 0106 定义 crate 发布包验收门禁、RFC 0107 定义 release qbench 持续门禁,均不改变脚本语言值模型的原型无关约束。
8 changes: 8 additions & 0 deletions RFCs/0107-qbench-release-gate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# RFC 0107:release qbench 持续门禁

- 状态:已采纳
- 依赖:RFC 0045、RFC 0081、RFC 0096、RFC 0105

`make check` 除编译和测试外,必须以 release profile 执行 `qbench --json --iterations 1 --repeat 3`。该命令运行全部内建负载、每轮检查最终值语义护栏,并要求 qbench 进程成功退出;输出重定向到标准输出外的空设备,避免把耗时噪声混入 CI 日志。

该门禁不是跨机器性能比较,也不对纳秒阈值作断言;它确保优化构建、字节码验证缓存、VM 执行路径和可重复采样接口持续可运行。详细性能数据仍由 `cargo bench --bench core` 与 `PERFORMANCE.md` 记录。