-
L Language v0.8.0 Stable
released this
2026-06-07 18:29:59 +08:00 | 1 commits to main since this releaseL Language v0.8.0 — 闭包与引用参数
新功能
in/out 参数 — 引用传递语义
fn swap(out x: i64, out y: i64) -> void { ... } fn increment(out x: i64) -> void { x = x + 1; }闭包/lambda — 匿名函数表达式
let double = fn(x: i64) -> i64 { return x * 2; }; let r = double(21); // 42变量捕获 — 闭包自动捕获外层变量
let base = 100; let adder = fn(x: i64) -> i64 { return x + base; }; adder(50); // 150Bug 修复
- for 循环同名变量作用域隔离
- 列表推导任意元素数量 (修复 element_type/size=0 crash)
测试
- 209 单元测试 (41 lexer + 54 parser + 86 sema + 28 codegen)
- 44 集成测试程序
安装
下载
l_lang.exe放到 PATH 中即可使用。
需要 LLVM 22.x 运行时库。Downloads
-
L Language v0.6.0 Stable
released this
2026-06-05 22:12:12 +08:00 | 40 commits to main since this release0.6.0 (2026-06-05)
Added
- 新类型:
i32(32位有符号整数),u64(64位无符号整数),char(单字符) + 字符字面量'A' - guard 语句:
guard x >= 0 else { return -1; }(parser 去糖为 if-else) - 命名参数:
draw_rect(width: 10, height: 20)任意顺序传参,sema 重排序 - 管道
|>:10 |> double() |> add(5)→add(double(10), 5)(F#/Elixir 风格) - 字符串插值:
"Hello, \(name)!"→"Hello, " + name + "!"(Swift 风格) - 4 个新集成测试: 25_new_types ~ 29_interp
Changed
- 语法差异化:
let mut→var,[T; N]→T[N],..→to,impl→extend - 类型隐式转换:
can_implicit_convert()加宽规则 + codegencoerce_int() - 符号表扩展:
Symbol.param_names支持命名参数匹配 - AST 扩展:
CALL_EXPR/METHOD_CALL增加arg_names字段 - 测试: 158 单元 (41+15+74+28) + 29 集成
Downloads
- 新类型: