主要观点:经过三个月,C3 的 0.6.0 版本发布,介绍了自 0.5.5 以来的诸多变化,包括枚举语法更新、any/接口更改、保证跳转表、RGBA 混洗等,同时有命令行参数、@if
评估等方面的严格化改变,以及标准库的各种修复和调整,且 0.6 有功能稳定性保证。
关键信息:
- 0.6.0 发布原因:主要分支有可发布的 0.5.6 但未发布,最终决定发布 0.6.0,且 0.6.0 已足够稳定,0.5.x 分支回溯较少。
主要变化:
- 枚举语法:更像 C 枚举,可省略枚举大小(有关联值时),还尝试过其他想法但效果不佳。
- any/接口:撤回
any*
处理,移除接口的@default
实现。 - 保证跳转表:使用
@jump
属性可得到保证计算的 goto 跳转表。 - RGBA 混洗:除
xyzw
外还可用rgba
。 - 更多不同类型:可从
void
、typeid
、anyfault
和故障类型创建不同类型。 defer catch
:可在defer catch
语句中获取抛出的错误。if try
:更严格的语义,禁止if (try foo() + 1)
等。- 命令行参数:添加
--output-dir
、--print-input
,移除--system-linker
。 @if
评估:顶层@if
评估受排序问题影响,0.6 不允许依赖于自身依赖@if
的条件定义。assert(false)
:禁止编译时评估为 false 的断言。- 函数定义:更允许递归函数定义(可为指针类型)。
- 宏错误:更好的内联宏错误信息,提供宏首次内联的回溯。
- 调试信息:调试信息全面 overhaul,宏的调试信息改进。
- 标准库:各种修复,如列表使用
push
、pop
返回 Optional 等。
重要细节:
- 各变化的具体示例和代码展示,如枚举语法更新的新旧代码对比等。
- 各种修复的具体问题描述,如安全模式下枚举转换问题等。
- 0.6 功能稳定性保证,0.6.0 代码可在 0.6.x 中使用。
- 提供关于 C3 的文档和下载链接:https://c3-lang.org、https://github.com/c3lang/c3c。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。