Repository navigation
Releases: CNplus/CNplus-lang
Release list
v1.7.0 — 明确关键字参数合同
关键字参数合同
- 内置函数只接受位置参数,直接、别名与点调用行为一致。
- 自定义函数、方法和初始化支持全位置或全关键字调用;关键字可按名称重排,但一次调用不得混写。
- 导入的 Python 函数保留“先位置、后关键字”的兼容写法,也支持全关键字调用。
- 重复、未知、缺少和混写统一为稳定诊断;三后端对齐消息、提示、解释、完整调用跨度、求值顺序和退出状态。
- 新增 11 组共享黄金语料和注册表驱动的专项合同测试。
验证:2166 passed, 8 skipped;独立审查通过。
完整变更见 CHANGELOG.md。
v1.6.4 — 综合示例说明校正
综合示例说明校正
15-待办清单与17-通讯录不再声称覆盖 CNplus 当前全部语法,改为准确的综合示例说明。- 将旧称呼“格式串(填)”统一为当前
@格式串。 - 移除
17-通讯录清单中实际没有使用的交互输入和类型转换。 - 同步修正测试说明与一处仍推荐旧写法的失败提示。
- 新增回归门禁,禁止示例再次使用过时的全覆盖声明,并核验头部列出的输入函数和类型转换确实出现在程序体中。
语言运行时和程序行为没有变化。
验证:2063 passed, 5 skipped。
v1.6.3 — VSIX 单文件打包
VSIX 改为单文件打包
- VSCode 扩展使用 esbuild 将入口与语言客户端依赖打成单个 bundle。
- VSIX 从 325 个文件降至 9 个,不再携带
node_modules、开发源码或锁文件。 - 修正扩展锁文件中的版本和许可证,并将最低 VSCode 版本对齐到
vscode-languageclient 9.0.1实际要求的 1.82.0。 - 语言运行时和 CNplus 语义没有变化。
验证:
2045 passed, 5 skippednpm audit:0 项漏洞- VSIX 在隔离扩展目录安装成功,识别为
cnplus.cnplus@1.6.3 - wheel 与 VSIX 包内版本均为 1.6.3
v1.6.2 — 内置函数合同统一
本版本统一 36 个内置函数在树遍历、Python 转译和 JavaScript 转译后端中的行为,并为以后新增后端提供可复用的共享合同。
修复
- 内置函数参数数量不符时,直接调用、点调用和函数别名调用统一报告
CN0306。 - 容器、文字和数值内置不再泄漏 Python 或 JavaScript 的类型转换和宿主异常;非法类型统一报告
CN0303。 - 布尔值不再被
整数、小数、极值或排序当作数值;文字包含不再自动把非文字项目转换成文字。 - JavaScript 的
追加、插入、移除返回 CNplus空,不再显示宿主undefined。 - JavaScript 错误退出会保留错误前的程序输出;嵌套内置错误指向实际出错的内层调用。
询问与询问数值的输入结束、无效输入重试和CN0310行为纳入三后端共享验证。
变更
- 36 个内置函数的正常行为、错误类型、参数数量、调用形式、Unicode、边界值、返回值、求值顺序和子进程状态由声明式合同矩阵持续验证。
已知限制
- 内置函数的关键字参数目前属于未定义行为,程序不应依赖各后端现状;后续版本将单独设计统一合同。
测试:2044 个通过,5 个按环境或可选能力跳过。
CNplus v1.6.1:布尔不再冒充序列下标
CNplus v1.6.1 修复布尔值在序列下标位置的跨后端语义分叉。现有合法程序不受影响,字典布尔标签与切片规则保持不变。
修复 / Fixed
- 列表读取、文字读取、列表普通赋值和列表复合赋值不再把
真、假当作整数位置。 - treewalk、Python 转译和 JavaScript 转译现在统一报告
CN0303,并指向实际出错的下标表达式。 - 错误消息、解释和修改建议在三个后端保持一致;JavaScript 子进程不会泄漏
CN9001或宿主异常。 - 错误路径继续保证对象、下标、右值从左到右且只求值一次。
兼容性 / Compatibility
- 不增加或撤销语法,不改变已有合法程序。
- 布尔仍可作为字典标签,且
真与1是不同标签。 - 三段式切片与负下标行为不变。
验证 / Verification
- 主仓全量:
1011 passed, 5 skipped - 共享三后端正常/错误语料:
108 passed - 106 个活动黄金语料编号全部唯一
- wheel 在全新 Python 3.11 环境安装后,三个后端的正常与错误路径均实跑通过
compileall、git diff --check、U+FFFD 扫描通过
产物校验 / Artifacts
cnplus-1.6.1-py3-none-any.whl- SHA-256:
616b3c3009daff3aa904e924c37258d732af94b792f0ee62a74e1502344313bc
- SHA-256:
cnplus-1.6.1.vsix- SHA-256:
f596efabc620c834681ce42a3437c595348777a5e81de0bc9f92268a9fa4c933
- SHA-256:
署名:cnplus-agent · CNplus-lang 维护
2026-09-10
CNplus v1.6.0:倒序保持列表与文字类型
CNplus v1.6.0:倒序保持列表与文字类型
语言作者在 Issue #23 确认 倒序 的正式合同:列表和文字都可使用,并返回与输入相同类型的新值。
新行为
设 原列表 = [1, 2, 3]
打印(倒序(原列表))
打印(原列表)
打印("甲😀乙".倒序())
输出:
[3, 2, 1]
[1, 2, 3]
乙😀甲
倒序(列表)/列表.倒序()返回新列表,不修改原列表。倒序(文字)/文字.倒序()返回新文字,按 Unicode 码点处理。- 字典及其他类型稳定报告三层
CN0303。 - 三个后端不再调用未校验的宿主反转能力,避免内部字典标签、JavaScript 键值对和
CN9001泄漏。
验证
- 主仓全量:
987 passed, 5 skipped - 共享三后端正常/错误语料:
103 passed - 文档一致性:
9 passed compileall、git diff --check、U+FFFD 扫描通过- wheel 在全新 Python 3.11 环境安装后,treewalk、Python emit、JavaScript emit 正常和错误路径实跑通过
- 独立审查后补齐函数别名、全部非法值类别、三层诊断、Span、子进程退出码与
CN9001排除断言;101 个活动黄金语料编号全部唯一
产物校验
cnplus-1.6.0-py3-none-any.whl- SHA-256:
3671783b5137d13c10d2d9ad15ed182c258eb1efbbe21476049f584aea1e2842
- SHA-256:
cnplus-1.6.0.vsix- SHA-256:
07e239579fdd6d4c674e755d59645ed04de3ce01c3337116ef7a0764d5cfe986
- SHA-256:
署名:cnplus-agent · CNplus-lang 维护
2026-09-04
CNplus 1.5.1 — 发布事实纠正
发布事实纠正
v1.5.0 实际发布于 2026-09-03。其提交、annotated tag、GitHub Release 与两个安装包均原样保留;本版本按项目规则以新 patch 纠正提交内误写的 2026-09-02 日期,不移动或覆盖旧 tag。
运行行为
- 与 v1.5.0 相同:正式支持唯一方案 A
对象[起点:终点:步长]。 - 不新增方案 B、命名函数或混合写法。
- 无运行时语义变化。
验证
- 全量:
960 passed, 5 skipped - wheel METADATA:
1.5.1 - VSIX 清单:
1.5.1
附件
cnplus-1.5.1-py3-none-any.whl- SHA-256:
a582d1e1eea6317a5681af55247322d85553b0c07e8cea9e5680a4129b55cdda
- SHA-256:
cnplus-1.5.1.vsix- SHA-256:
ba47498b86dbf52e44a4dcee43f893bf05c79ef1da71f1940130f4731497565a
- SHA-256:
上一个功能版本:https://github.com/CNplus/CNplus-lang/releases/tag/v1.5.0
署名:cnplus-agent · CNplus-lang 维护
2026-09-03
CNplus 1.5.0 — 三段式切片步长
三段式切片步长正式成为语言合同
语言作者在 Issue #22 确认只采用方案 A:
设 数字列表 = [0, 1, 2, 3, 4, 5]
打印(数字列表[::2]) # [0, 2, 4]
打印(数字列表[::-1]) # [5, 4, 3, 2, 1, 0]
语义
对象[起点:终点:步长]的三段均可省略,省略步长等于1。- 正步长从前向后,负步长从后向前;端点越界自动夹紧。
- 负步长时,省略终点表示“开头之前”;它与显式写
-1不同。 - 支持列表和文字;文字按 Unicode 码点处理,emoji 不会被拆成 UTF-16 半个字符。
- 返回新值,不修改原值。
- 对象、起点、终点、步长从左到右各求值一次,错误路径也保持一致。
错误边界
- 步长必须是非零整数。
0、小数以及1.0这类整数值小数均报告CN0303。- 不支持第四段,也不增加命名函数或混合写法。
多后端与测试
- 树遍历、Python 转译、JavaScript 转译三个后端通过共享正常/错误语料对拍。
- JavaScript 后端显式归一化正负边界并循环取值,不依赖原生
slice模拟步长。 - 全量:
960 passed, 5 skipped;共享三后端对拍98 passed。 - wheel 已在全新 Python 3.11 环境安装,并用三个后端实跑 README 示例。
附件
cnplus-1.5.0-py3-none-any.whl- SHA-256:
9d89397e0897c333e83848362bc97226dd3ad0295c461b46285f76add6b059ec
- SHA-256:
cnplus-1.5.0.vsix- SHA-256:
d4001d2bcec758b986501d166b48aa41f595b58a7a97e9fcf0837cf7a12db42a
- SHA-256:
署名:cnplus-agent · CNplus-lang 维护
2026-09-02
Note
发布事实更正(2026-09-03):本 Release 实际发布于 2026-09-03;上方页脚日期来自发布前的旧本机日期。旧 tag、Release 和安装包均原样保留,纠正版本见 v1.5.1。
CNplus v1.4.4
CNplus v1.4.4
本版本同步语义规范、README 与历史发布事实,不改变 CNplus 语言或运行行为。
- 语义规范补齐列表、字典、函数、类和实例值类别,明确
类型结果;移除“字典尚未引入”的旧说法,同时保留字典遍历顺序当前未定义。 - README 同步三后端、REPL/LSP/JS 进度、18 个示例、当前 CLI 与 VSIX 安装方式,移除失效的软链安装。
- README 主示例经 treewalk、Python emit、JS emit 实跑一致;诊断示例与当前三段式文案一致。
- 规范索引把已有 00/03 标为当前合同;CHANGELOG 补记实际存在的 v0.8.2 tag/Release,不改写其他历史条目。
- 修复一处 U+FFFD,并新增长期文档一致性和编码门禁。
验证
- 文档一致性:9 passed;
- README 主示例:三后端输出一致;
- README 诊断示例:真实 CLI 输出一致;
- 本地 Markdown 链接:0 死链;
- 全量:928 passed, 5 skipped;
- wheel/VSIX 与干净 wheel 版本冒烟通过。
CNplus v1.4.3
CNplus v1.4.3
本版本补齐 JS 产品入口与浏览器宿主边界,不改变 CNplus 语法或运行语义。
- 新增
cnp 运行 --js <文件.cnp>,复用 JS 后端稳定退出状态与中文诊断。 - 真人交互时 Node stdout 直通终端,输入前可见提示;中文 stdin 整行 UTF-8 解码,支持 LF/CRLF。
- CLI help 补齐交互与 JS 入口,并从后端能力数据说明 JS 的 Node/浏览器环境和导入限制。
- 缺文件、未知选项、错位后端选项、多余参数均返回 2,不再抛异常或静默忽略。
- 生成 JS 在无 Node 全局的现代浏览器中使用
prompt/console;Node 异常钩子按宿主环境注册。 - 后端 ABC 数据化声明运行环境、导入与交互输入能力。
验证:
- 14 个适用示例经真实
cnp 运行 --js通过; - 同一批示例在无
process/Buffer/require的浏览器式沙箱通过; - 三后端对拍:90 passed;
- 全量:919 passed, 5 skipped;
- Node 语法检查、Python compileall、wheel/VSIX 元数据、干净 wheel 中文交互冒烟通过。