1. 安装与第一个程序

需要 JDK 21(native 编译另需 GraalVM)。bin/dawn 会自己拉起工具链:首次运行时它下载 scripts/seed-release.txt 钉住的那个 release 的 dawn-selfhost.jar种子,按 scripts/seed-checksums.txt 校验 SHA-256),再用种子把 selfhost/ 编译成当前的编译器。 没有 Gradle——Kotlin 实现已随 kotlin-final tag 归档,./gradlew :compiler:fatJar 在 main 上不存在。

./bin/dawn --version              # 首次会自动取种子并重建工具链
./bin/dawn run  hello.dawn        # 编译并运行(JVM 内)
./bin/dawn test hello.dawn        # 运行文件里的 test 块
./bin/dawn build hello.dawn --native -o hello   # 产出独立二进制

第一个程序。函数默认是纯的;碰 IO(这里是打印)必须在签名标 !io

pub fn main() -> Unit !io =
  println("你好,Dawn")
在 Playground 打开
你好,Dawn

字符串插值由 $ 引导:$name 插简单变量,${expr} 插任意表达式(插入的值必须可打印)。 花括号本身是普通字符——不写 $ 就不是插值:

pub fn main() -> Unit !io = {
  let name = "Dawn"
  let year = 2026
  println("$name 诞生于 $year")
}
在 Playground 打开
Dawn 诞生于 2026