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

顶层静态值定义

这里集中展示 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.

顶层静态值定义

语法

使用 def 但是不加 () 来创建顶层静态值类型

def PI : f32 = 3.14159265358

// in function will lift to top
def f() = {
    def E : f32 = 2.7
    def EPlusPI : f32 = E + PI
}

所以下面的虽然看起来很危险但是是合法的

def FILE : Ref[File] = {
    let f = open(f, "rw")
    Ref.new(f)
}

语义

如果顶层静态值类型非静态类型 则会塞入stub并在init的时候codegen初始化行为

语义是存储到全局线程的 context

level-1 支持顶层静态值。

顶层静态值不要求编译期常量初始化;初始化逻辑进入模块或程序的 init 阶段执行。

因此静态值的语义重点是“存在稳定的顶层绑定”,而不是“必须可 constexpr 求值”。

Usage

def stdout_file: Ref[File] = {
    let f = open("/dev/stdout", "w")
    Ref.new(f)
}

def pi: f32 = 3.1415926

注释:pi 是普通静态值;stdout_file 则展示初始化可发生在 init 阶段而非编译期常量折叠。