Skip to content

Releases: CNplus/CNplus-lang

v1.7.0 — 明确关键字参数合同

Choose a tag to compare

@cnplus-agent cnplus-agent released this 19 Sep 04:04

关键字参数合同

  • 内置函数只接受位置参数,直接、别名与点调用行为一致。
  • 自定义函数、方法和初始化支持全位置或全关键字调用;关键字可按名称重排,但一次调用不得混写。
  • 导入的 Python 函数保留“先位置、后关键字”的兼容写法,也支持全关键字调用。
  • 重复、未知、缺少和混写统一为稳定诊断;三后端对齐消息、提示、解释、完整调用跨度、求值顺序和退出状态。
  • 新增 11 组共享黄金语料和注册表驱动的专项合同测试。

验证:2166 passed, 8 skipped;独立审查通过。

完整变更见 CHANGELOG.md。

v1.6.4 — 综合示例说明校正

Choose a tag to compare

@cnplus-agent cnplus-agent released this 18 Sep 13:30

综合示例说明校正

  • 15-待办清单 与 17-通讯录 不再声称覆盖 CNplus 当前全部语法,改为准确的综合示例说明。
  • 将旧称呼“格式串(填)”统一为当前 @ 格式串。
  • 移除 17-通讯录 清单中实际没有使用的交互输入和类型转换。
  • 同步修正测试说明与一处仍推荐旧写法的失败提示。
  • 新增回归门禁,禁止示例再次使用过时的全覆盖声明,并核验头部列出的输入函数和类型转换确实出现在程序体中。

语言运行时和程序行为没有变化。

验证:2063 passed, 5 skipped。

v1.6.3 — VSIX 单文件打包

Choose a tag to compare

@cnplus-agent cnplus-agent released this 18 Sep 12:05

VSIX 改为单文件打包

  • VSCode 扩展使用 esbuild 将入口与语言客户端依赖打成单个 bundle。
  • VSIX 从 325 个文件降至 9 个,不再携带 node_modules、开发源码或锁文件。
  • 修正扩展锁文件中的版本和许可证,并将最低 VSCode 版本对齐到 vscode-languageclient 9.0.1 实际要求的 1.82.0。
  • 语言运行时和 CNplus 语义没有变化。

验证:

  • 2045 passed, 5 skipped
  • npm audit:0 项漏洞
  • VSIX 在隔离扩展目录安装成功,识别为 cnplus.cnplus@1.6.3
  • wheel 与 VSIX 包内版本均为 1.6.3

v1.6.2 — 内置函数合同统一

Choose a tag to compare

@cnplus-agent cnplus-agent released this 13 Sep 13:29

本版本统一 36 个内置函数在树遍历、Python 转译和 JavaScript 转译后端中的行为,并为以后新增后端提供可复用的共享合同。

修复

  • 内置函数参数数量不符时,直接调用、点调用和函数别名调用统一报告 CN0306。
  • 容器、文字和数值内置不再泄漏 Python 或 JavaScript 的类型转换和宿主异常;非法类型统一报告 CN0303。
  • 布尔值不再被 整数、小数、极值或排序当作数值;文字 包含 不再自动把非文字项目转换成文字。
  • JavaScript 的 追加、插入、移除 返回 CNplus 空,不再显示宿主 undefined。
  • JavaScript 错误退出会保留错误前的程序输出;嵌套内置错误指向实际出错的内层调用。
  • 询问 与 询问数值 的输入结束、无效输入重试和 CN0310 行为纳入三后端共享验证。

变更

  • 36 个内置函数的正常行为、错误类型、参数数量、调用形式、Unicode、边界值、返回值、求值顺序和子进程状态由声明式合同矩阵持续验证。

已知限制

  • 内置函数的关键字参数目前属于未定义行为,程序不应依赖各后端现状;后续版本将单独设计统一合同。

测试:2044 个通过,5 个按环境或可选能力跳过。

CNplus v1.6.1:布尔不再冒充序列下标

Choose a tag to compare

@cnplus-agent cnplus-agent released this 10 Sep 13:30

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
  • cnplus-1.6.1.vsix
    • SHA-256:f596efabc620c834681ce42a3437c595348777a5e81de0bc9f92268a9fa4c933

署名:cnplus-agent · CNplus-lang 维护
2026-09-10

CNplus v1.6.0:倒序保持列表与文字类型

Choose a tag to compare

@cnplus-agent cnplus-agent released this 04 Sep 11:34

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
  • cnplus-1.6.0.vsix
    • SHA-256:07e239579fdd6d4c674e755d59645ed04de3ce01c3337116ef7a0764d5cfe986

署名:cnplus-agent · CNplus-lang 维护
2026-09-04

CNplus 1.5.1 — 发布事实纠正

Choose a tag to compare

@cnplus-agent cnplus-agent released this 03 Sep 11:27

发布事实纠正

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
  • cnplus-1.5.1.vsix
    • SHA-256:ba47498b86dbf52e44a4dcee43f893bf05c79ef1da71f1940130f4731497565a

上一个功能版本:https://github.com/CNplus/CNplus-lang/releases/tag/v1.5.0

署名:cnplus-agent · CNplus-lang 维护
2026-09-03

CNplus 1.5.0 — 三段式切片步长

Choose a tag to compare

@cnplus-agent cnplus-agent released this 03 Sep 11:24

三段式切片步长正式成为语言合同

语言作者在 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
  • cnplus-1.5.0.vsix
    • SHA-256:d4001d2bcec758b986501d166b48aa41f595b58a7a97e9fcf0837cf7a12db42a

署名:cnplus-agent · CNplus-lang 维护
2026-09-02

Note

发布事实更正(2026-09-03):本 Release 实际发布于 2026-09-03;上方页脚日期来自发布前的旧本机日期。旧 tag、Release 和安装包均原样保留,纠正版本见 v1.5.1。

CNplus v1.4.4

Choose a tag to compare

@AS13379 AS13379 released this 30 Aug 07:43

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

Choose a tag to compare

@AS13379 AS13379 released this 30 Aug 03:47

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 中文交互冒烟通过。