C3 达到 0.6 里程碑!

主要观点:经过三个月,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
    • 更多不同类型:可从voidtypeidanyfault和故障类型创建不同类型。
    • 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,宏的调试信息改进。
    • 标准库:各种修复,如列表使用pushpop返回 Optional 等。

    重要细节:

  • 各变化的具体示例和代码展示,如枚举语法更新的新旧代码对比等。
  • 各种修复的具体问题描述,如安全模式下枚举转换问题等。
  • 0.6 功能稳定性保证,0.6.0 代码可在 0.6.x 中使用。
  • 提供关于 C3 的文档和下载链接:https://c3-lang.orghttps://github.com/c3lang/c3c
阅读 16
0 条评论