Chiba Logo CHIBA v0.6.13
CHIBA blog RSS feed
CHIBA / DOCS / LEVEL-1 SPEC

Chiba Level 1 Spec Outline

这里集中展示 CHIBA level-1 specification,覆盖 core language、control flow、memory、patterns、IR lowering 与 package system 等实现边界。

The docs surface keeps CHIBA level-1 specification pages browsable inside the site, with direct paths into language, control flow, memory, pattern, and lowering rules.

Chiba Level 1 Spec Outline

THIS SPEC IS ONLY DRAFT, AND WRITTEN IN CHINESE YOU MIGHT NEED TRANSLATOR IF ENGLISH IS YOUR MAJOR LANGUAGE.

AFTER THE FIRST RELEASE THE SPEC WILL BE IN ENGLISH.

0. 使用约定

  • [x]:当前实现里已经有 parser / lowering / typecheck / test 证据。
  • [-]:当前实现和 CHIBA-SPEC / 旧设计有偏差,需要单独写清楚。
  • [ ]:在 TODO / 设计里明确出现,但当前实现尚不完整。

1. 核心语言总目录

  • 源文件编码、空白、换行、注释
  • 关键字集合
  • 标识符与 namespace path
  • 数字字面量
    • 十进制
    • 十六进制
    • 八进制
    • 二进制
  • 布尔字面量
  • 字符串字面量
  • c"..." 字面量
  • atom / symbol literal(:tag
  • 标点与分隔符
  • 运算符集合与词法歧义
    • : vs :atom
    • * 的多重含义
    • ( tuple / grouped expr / lambda 的歧义入口
  • 表达式优先级与结合性
  • file attrs
    • #![Metal]
    • #![CBI]
  • namespace
    • 文件头 namespace x.y.z
    • inline namespace x.y.z { ... }
  • use
    • 单项导入
    • multi import
    • glob import
  • item attrs
    • #[entry]
    • 参数化形式属于同一套 item attrs
    • 统一覆盖函数、stmt/expr、field、data variant、variant tuple type、namespace、block/unsafe block、lambda、trailing closure
  • def
    • 普通函数定义
    • extern 形式
  • 顶层静态值定义
  • method-style def Type.method(...)
  • type
  • data
  • union
  • private
  • public/private 的精确定义与跨 namespace 可见性
  • block 是表达式
  • block tail expression
  • 表达式语句
  • let
    • let x = expr
    • let x: T = expr
  • let destruct
    • tuple destruct
    • record destruct
  • [-] let 支持的 pattern 子集
    • 哪些 pattern 可 parse
    • 哪些 pattern 可 lower
    • level-1 let 支持 tuple / record destruct 的 DFT pattern,嵌套深度任意
    • 合法 let 不发生运行期匹配失败,类型检查先拒绝不合法 destruct
  • [-] constructor / literal pattern 不进入 let
  • record destruct in let
  • [-] nested destruct pattern
    • let 支持 tuple / record destruct 的 DFT pattern,嵌套深度任意
    • if let 支持 DFT pattern,嵌套深度任意
  • return
    • return 不能省略值,unit 也写 return ()
  • ; 在 block / statement 序列里的地位
    • ; 是显式分隔符
    • (ws|nl)* 也可作为分隔符
    • 不把 ; 当作额外语义节点

2. 控制流

  • if { } else { }
  • if else if
  • if else if let
  • if let
    • level-1 if let 支持 DFT pattern,嵌套深度任意
    • 承担 constructor / literal pattern 的 refutable 匹配
  • [-] else 是否总是必需
    • if let 必须带 else
  • match
    • level-1 match 支持 DFT pattern,嵌套深度任意
    • 承担 constructor / literal pattern 的主要匹配职责
  • exhaustiveness 规则
  • pattern guard
  • for { ... }
    • 允许 for :tag { ... }
  • for cond { ... }
    • 允许 for :tag cond { ... }
  • break
    • 允许 break :tag
  • continue
    • 允许 continue :tag
  • for 的 desugar / lowering 语义
  • reset
  • shift
  • reset / shift 的 answer type checking
  • continuation 捕获与恢复时的 answer type 一致性
  • delimited continuation 的正式语义

3 内存管理与生命周期

  • level-1 managed object model
  • 普通值默认是 managed value
  • 普通 data / tuple / record / closure env 的默认存储语义
  • Ptr[T]
  • Ref[T]
  • UnsafeRef[T]
  • level-1 区分值类型与引用类型
  • uniqueness 作为编译器内部事实,而不是用户必写注解
  • Ptr[T] / Ref[T] / UnsafeRef[T] 的关系
  • Ptr[T] 与 FFI / Metal / ABI 边界
  • Ref[T] 的读写与受控可变性
  • Ref[T]send
  • #[sync]
    • 不进入 level-1 首发
  • send 标注
  • world 边界上的对象传递
  • reset 作为 arena 边界
  • 普通函数调用蕴含隐式 reset
  • closure 调用蕴含隐式 reset
  • 值跨出当前 reset 的 escape 语义
    • return
    • closure capture
    • 存入更长生命周期对象
    • send
  • callee reset / caller reset / heap 之间的提升规则
  • continuation / answer type 与 arena 边界的关系
  • arena / escape / RC / uniqueness / FBIP 在 level-1 的最小承诺
  • level-1 内存管理与 chiba2.md 长期路线图的关系

4. 模式(Pattern)

  • wildcard pattern
    • _ 是 wildcard,不是 variable
  • var pattern
  • tuple pattern
  • literal pattern
    • int
    • bool
  • constructor pattern
  • at pattern name@pattern
  • [-] pattern 在不同位置的支持矩阵
    • match
    • if let
    • let
    • function parameter
    • match / let / if let 支持 DFT pattern
    • function parameter 另行收紧
  • record pattern
  • [-] nested pattern
    • match / let / if let 支持任意深度
    • parameter 另行收紧

5. 表达式

  • 变量引用
  • block expression
  • tuple literal
  • 1-tuple literal (a,)
  • grouped expr (a)
  • slice literal
  • record literal
  • record update
    • 复用现有 {base | field: value} 语法
  • function call
  • field access
  • indexing
  • postfix deref .*
  • cast as
  • lambda
  • trailing closure
  • unsafe { ... }
    • level-1 首发明确是 unsafe block
  • inline asm
  • [-] asm 输入/输出 tuple 语义
  • pipe |>
    • 支持单个 _ 作为孔位
    • 倒数第三弱优先级
  • method call surface syntax
  • named arguments
    • 不进入,且不作为后续方向
  • interpolation / format string

6. 运算符

  • 算术运算
    • + - * / %
  • 比较运算
    • == != < <= > >=
  • 逻辑运算
    • && || !
  • 位运算
    • & | ^ << >>
  • 一元运算
    • -
    • !
    • * deref
  • [-] & address-of / ref story
    • level-1 去掉 & 作为 ref 开口
  • := 与 Ref 相关语义
    • 返回右侧值,可 chain
    • 倒数第二弱优先级
  • [-] = 绑定/定义语法
    • 最弱,但不作为普通 operator
  • operator overload protocol
    • infix
    • prefix
    • postfix
    • .*
  • [-] 各运算符在 parser / typecheck / lowering 中的统一定义

7. 函数、闭包与调用约定

  • 普通函数
  • 普通函数体的隐式 reset
  • lambda / closure
  • closure body 的隐式 reset
  • closure capture 语义
  • return 作为 escape 点
  • closure env 的分配与提升
  • 返回值不能引用 callee 局部 arena 的规则
  • method call
  • method receiver 规则
  • def Type.method(...)
  • method resolution
  • operator overload 与 method 的关系
  • extern "c"
  • extern "cbx"
  • extern "syscall" 的现状
    • 已删除
  • #[entry]
  • 局部 def
    • 不支持,使用 lambda
  • namespace block 内的 item 定义

8. 字面量与数据表示

  • int literal 的 base 与后缀处理
  • bool literal
  • unit literal
  • string literal
  • cstr literal
  • symbol literal
  • tuple value representation
  • string literal protocol
  • string literal handler
    • #[string_literal("x")]
  • literal_prefix(#*)"..."(#*)
  • raw string
  • multiline string
  • string interpolation
  • [-] bool / unit / tuple / ADT 的 runtime 表示
  • float literal
  • array literal 的正式语义

9. 字符串、strcstrString

  • str / cstr / String 的语法面
  • c"..." 与 ABI 边界
  • String -> cstr
  • c"" 外的字符串字面量 desugar 为函数调用
  • prefix string handler resolution
  • raw / non-raw 与 interpolation 的组合规则
  • 标准字符串允许多行
  • 去掉 mk_str(...) / mk_cstr_view(...) / strlen(...) 的用户语言地位
  • 字符串相关 API 改为 method surface
  • [-] str / cstr / String 的所有权与借用边界
  • [-] mk_str(...) / mk_cstr_view(...) / strlen(...) 的规范地位
  • 字符串 escape / raw string / multiline string 的正式定义
  • UTF-8 语义与 codepoint 级规则

10. IR 与 Lowering

  • CIR 的角色与 CPS 地位
  • AST → CIR lowering 总述
  • BIR 的角色与抽象机地位
  • CIR → BIR lowering contract
  • LIR 的定位与 BIR → LIR contract
  • pass placement 与层边界细化

chibalex 语言大纲

  • .chibalex 文件结构
  • header / footer block
  • charclass 定义
  • macro 定义
  • token rule
  • action 原文透传
  • built-in character classes
  • regex 依赖面
  • [-] UTF-8 / codepoint 语义与 regex engine 的对应关系
  • 作为 project phase 自动接入

chibacc 语言大纲

  • .chibacc 文件结构
  • header / footer block
  • start
  • 普通 rule
  • Alt / Seq / Quantifier / Group
  • label binding
  • => action
  • ?predicate(...)
  • Pratt block
    • prefix
    • infix
    • postfix
  • runtime fallback / generated runner
  • recovery
    • item-level
    • nested rule
    • list separator / closing token / stmt-level 样例
  • prediction / optimization(M5)

Level 2 预留

  • interface
  • Go-like interface method set
  • namespace 作为 implementation bundle
  • via ns.path 作为显式实现来源选择
  • interface method 的 local HM 翻译
  • dyn Interface 与动态分发对象