Cangjie Release Notes

0. 版本介绍

本版本为Cangjie语言LTS 1.0.0版本的更新版本(LTS版本定义及维护周期详见仓颉社区版本生命周期管理规范),版本号为Cangjie 1.0.1,主要解决部分发现的Bug,以及对某些功能进行优化。版本包含了仓颉应用开发必须的能力,包括编译器,运行时,标准库,和工具链。欢迎各位开发者使用,如有任何问题,欢迎在Cangjie社区提出issue,我们会第一时间处理。以下介绍本版本相比LTS 1.0.0版本的更新。

1. 语言特性

修复部分问题,无特新更新。

2. 编译器

1)废弃 --static-libs & --dy-libs 编译选项,stdx 链接方式由用户链接选项控制,编译器仅提供 std 库链接方式控制选项。
2)新增无效导入的告警(unused import warning)。
3)支持输出profile文件的编译选项,记录编译耗时和内存,用于分析编译性能。

3. 运行时

修复部分问题。

4. 标准库

1)reflect反射库在部分场景进行了性能优化。
2)ast库支持 @!注解解析。

5. 工具链

1 IDE插件

修复部分问题,无特性新增。

2 cjpm

修复部分问题,无特性新增。

3 cjdb

hashmap变量显示规格优化

4 cjfmt

cjpm.toml文件在[profile.build]下面新增标志位performance_analysis,用于分析编译性能,记录编译过程中的时间和内存消耗。

5 cjlint

无变化。

6 cjcov

无变化。

7 cjprof

无变化。

8 cjtrace-recover

无变化。

6. 修复问题

  • issue-1987】两个joy.router.get格式化行为不一致。
  • issue-2073None is T上发生ICE。
  • issue-2151】项目中 init 函数参数列表,缺省值使用插值字符串,导致ICE。
  • issue-2157】项目cjpm test --no-run编译崩溃。
  • issue-2082】项目编译崩溃,报错Internal Compiler Error: Interrupt signal (11) received。
  • issue-2136】FuncDecl的toTokens() 异常IndexOutOfBoundsException。
  • issue-2156】MacroExpandDecl属性macroInputs macroInputDecl两个属性不一致。
  • issue-2216】宏parseDecl分析match继承的()->Unit类型调用时报异常。
  • issue-2132】编译官方示例 generic-btree.cj 导致编译器崩溃。
  • 【非社区问题】sdk路径含有空格时,执行cjpm test 或在IDE上执行UtTest run cangjie 用例时报无效路径。
  • issue-2180issue-2083issue-2070】使用过的变量错误的抛unused variable警告。
  • 【非社区问题】sdk路径配置为空或者路径值错误,打开cangjie工程,output的报错不准确,报错信息内容不能指导用户解决问题。
  • issue-1917】使用测试工程,语言服务能力失效(悬浮、跳转等功能)。
  • 【非社区问题】windows环境IDE上cjdb 命令 list[0] 表达式失败。
  • 【非社区问题】mac 环境 lambda表达式内的局部展示重复变量。

7. 遗留问题

macOS M1平台编译时间波动

【问题现象】泛型类型别名(type List<T> = MetaList<T>)叠加嵌套调用minXX(List(maxXX(List(x,y,z)))),cjpm build会报ICE。
【规避措施】将嵌套调用解开,即可规避。如下示例(var x = maxXX(List(x,y,z)); minXX(List(x)))

8. 文档变更说明

开发指南

  • 新增“部署和运行”章节;“仓颉-C互操作”章节新增使用说明。
  • cjc 编译选项新增 --export-for-test 编译选项的描述。
  • 删除废弃编译选项 --static-libs 和 --dy-libs 的文档内容。

标准库API

  • std.time:新增示例教程“获取当前时间以及时间差”。
  • std.posix:新增常量 AT_FDCWD、AT_SYMLINK_FOLLOW、SIGSYS。

工具指南

  • cjprof、cjtrace、cjfmt 新增 -v 选项,可查看命令行工具对应版本信息。
  • cjpm:新增配置项 performance_analysis 功能说明。新增约束(源码目录不建议带空格;Windows 平台,源码目录不建议带“.”;Windows平台暂不支持在中文路径下使用 cjpm)。
  • 语言服务:新增默认日志开关说明。
  • cjpm: profile.build.combined 实验特性规格变更说明(构建脚本依赖的源码模块中,若配置了 profile.build.combined,不会生效;编译产物目标平台为 macOS 时,暂不支持 profile.build.combined 选项)。
  • cjfmt: 补充多行注释的格式化行为规则。