异步与协程
奇语用 未来<T> 类型 + 等待 表达式做异步,底层是 Go 式 M:N 协程调度器(work-stealing)。
函数 异步计算(值: 整数) : 未来<整数> {
返回 值 * 2; // 自动包装成 Future
}
函数 入口() {
变量 结果值: 整数 = 等待 异步计算(21);
IO.打印行(整数转字符串(结果值)); // 42
}支持的 Future 类型
未来<整数>/未来<浮点数>/未来<布尔>/未来<字符串>
协程与通道
函数 发送者(信道: 通道<整数>) {
信道 <- 42;
}
函数 入口() {
变量 信道 = 通道<整数>();
启动 发送者(信道);
变量 值 = <- 信道; // 阻塞直到有值
IO.打印行(整数转字符串(值));
}Select 多路复用
变量 通道甲 = 通道<整数>();
选择 {
情况 值 := <-通道甲:
IO.打印行("收到: " + 整数转字符串(值));
情况 超时(500):
IO.打印行("超时分支");
默认:
IO.打印行("默认分支");
}选择自 2026.07.03 起可用:非阻塞轮询多通道,支持默认分支(无就绪立即走)与超时(毫秒)分支;两者皆无则阻塞至有通道就绪。分支写情况 变量 := <-通道:(Go 风格冒号),分支体是裸语句列表,不带花括号。
通道目前只支持 通道<整数>——字符串/浮点通道会编译失败。传复杂数据用 JSON / 哈希表句柄(句柄是整数)中转。完整 async/await 状态机 codegen 约覆盖 70%;复杂控制流内嵌 await 会退化到同步包装,行为正确但非真协程切换。