20240627仓颉更新说明-Cangjie 0.51.4
0. 版本介绍
该版本点分式版本号为 Cangjie 0.51.4
。该版本sealed 修饰符使用规则变更,--diagnostic-format
选项新增 json 输出格式。调试器支持基础类型表达式计算,包管理器cjpm支持可视化展示包依赖关系,run命令支持添加运行时环境变量等,静态检查工具cjlint五条数据流规则适配了CHIR 2优化,API文档生成工具cjdoc支持windows平台。修复若干已知问题,感谢各位开发者反馈。
1. 语言特性
Feature
- sealed 修饰符使用规则变更
sealed 修饰符只能修饰抽象类和接口,表示被修饰的 class 定义只能在本定义所在的包内被继承或实现和扩展。 sealed 已经蕴含了 public open 的语义,因此定义 sealed 抽象类或接口时若提供 public open 修饰符,编译器将会告警。详细用法和示例见class 的继承
及接口的定义
章节。
Bugfix
- NA
Remove
- NA
3. CJNative后端
Feature
- NA
Bugfix
- NA
Remove
- NA
5. 工具链
1 IDE插件
Feature
- 调试支持自动配置动态库依赖路径
Bugfix
- NA
Remove
- NA
2 cjdb
Feature
- cjdb提供支持表达式计算能力的基础框架
- cjdb适配仓颉线程查看命令
- cjdb表达式计算支持仓颉字面量
- cjdb表达式计算支持基础数据类型变量名
Bugfix
问题描述 |
---|
启动调试后,在debug console窗口输入查看变量的命令(如:-exec p main_str3),变量值错误 |
Remove
- NA
3 cjpm
Feature
- cjpm交叉编译时支持控制指定宏包编译目标平台产物
- cjpm支持可视化展示包依赖关系
- 优化dev-dependencies字段,支持开发阶段依赖
- cjpm run 命令支持添加运行时环境变量配置(目前仅支持Linux平台)
Bugfix
问题描述 |
---|
【cjpm】手动删除main后增量编译不符合预期 |
cjpm build 循环依赖检查时卡死 |
Remove
- NA
4 cjlint
Feature
- G.FIO.01 临时文件使用完毕必须及时删除 适配CHIR2.0
- G.SER.03 保证序列化和反序列化的变量类型一致 适配CHIR2.0
- G.OTH.01 禁止在日志中保存口令、密钥和其他敏感数据 适配CHIR2.0
- P.02 避免数据竞争(data race) 适配CHIR2.0
- G.CHK.01 跨信任边界传递的不可信数据使用前必须进行校验 适配CHIR2.0
Bugfix
- NA
Remove
- NA
5 cjfmt
Feature
- NA
Bugfix
- NA
Remove
- NA
6 cjcov
Feature
- NA
Bugfix
- NA
Remove
- NA
7 cjprof
- NA
Feature
- NA
Bugfix
- NA
Remove
- NA
8 cjdoc
Feature
- cjdoc支持Windows平台
Bugfix
- NA
Remove
- NA
8. CangjieStudio
Feature
- 支持debug中复杂变量的值的查看
- 全局变量与静态变量分开展示
Bugfix
描述 |
---|
同一个文件vscode打开并debug中,cangjiestudio进行编辑保存报错提示不准确 |
启动了lsp之后,切换中文输入法,输入字符之后按下tab键,多次操作之后IDE崩溃 |
生成多行代码时,在生成代码的下面有效行打断点,会把没有行号的也打上断点 |
Remove
- NA
9. 已知问题
部分const + tuple场景会编译失败,比如此类写法,
const t = (c1, c2, c3, c4)
,会在下个版本修复。部分match类型场景可能会编译失败,编译成功的代码不会受此问题影响,参考如下用例,预计下个版本修复。
class CA {}
struct A {
var ca = CA()
}
struct B {
var x = 3
}
func foo() : Int64 {
var x : A = A()
match (x) {
case b : B => b.x // 此处处理存在异常
case _ => 0
}
}
main() { foo() }受中间IR影响,部分cjlint 规则的检查受到影响,可能在某些(部分)场景行为不符合预期,受到影响的规则有:
- G.FIO.01 临时文件使用完毕必须及时删除
- P.02 避免数据竞争(data race)
- G.SER.03 保证序列化和反序列化的变量类型一致
- G.CHK.01 跨信任边界传递的不可信数据使用前必须进行校验
- G.OTH.01 禁止在日志中保存口令、密钥和其他敏感数据