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