Files
l-language/CHANGELOG.md
T

3.6 KiB
Raw Permalink Blame History

Changelog

0.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 mutvar, [T; N]T[N], ..to, implextend
  • 类型隐式转换: can_implicit_convert() 加宽规则 + codegen coerce_int()
  • 符号表扩展: Symbol.param_names 支持命名参数匹配
  • AST 扩展: CALL_EXPR/METHOD_CALL 增加 arg_names 字段
  • 测试: 158 单元 (41+15+74+28) + 29 集成

0.5.0 (2026-06-05)

Added

  • 类型别名: type Meters = i64;,支持 struct 别名 (sema 层解析,零 codegen)
  • 枚举: enum Color { Red, Green, Blue }Color::Green 变体访问
  • 数组: [T; N] 类型 + arr[i] 索引 + arr[i] = val 元素赋值
  • struct 方法: impl Point { fn get_x(self: Point) -> i64 { ... } }p.get_x() 调用
  • match 表达式: match expr { pat => { ... } _ => { ... } } (parser 去糖为 if-else)
  • parse_type_expr() 抽取:统一类型标注解析
  • 4 个新集成测试: 15_type_alias ~ 23_match_wildcard

Changed

  • AST_PROGRAM 扩展: 支持 aliases/enums/impls 多种顶层声明
  • TypeInfo 扩展: element_type/array_size 支持数组
  • 测试: 145 单元 (41+15+65+24) + 23 集成

0.4.0 (2026-06-05)

Added

  • 结构体: struct Point { x: i64, y: i64 }Point { x: 10, y: 20 } 初始化
  • 字段访问: p.xr.tl.x 链式访问
  • struct 作为函数参数/返回值
  • RAII 自动内存管理: str 拼接自动 free,作用域退出时释放
  • SourceLoc 抽象: 统一 line/col 参数
  • 集成测试: 12_struct ~ 14_struct_fn

0.3.0 (2026-06-05)

Added

  • for 循环 + range: for i in start..end { ... } (parser 去糖为 let mut + while + assign)
  • .. range 运算符 (TOK_DOT_DOT)
  • 浮点数 lexer 修复:.. 不与 . 冲突
  • sema/codegen 测试补全
  • 集成测试:10_for_range.l11_for_step2.l

0.2.0 (2026-06-05)

Added

  • let mut 可变变量 + 赋值语句 (x = expr;)
  • 字符串类型 str + 双引号字面量 ("Hello")
  • 字符串拼接 str + str + print_str 内置函数
  • 复合赋值运算符:+= -= *= /=

Changed

  • codegen malloc → arena 统一分配
  • LLVM 目标初始化解耦为 target.h/c 独立模块

0.1.0 (2026-06-05)

Added

  • 词法分析器:手写状态机,40 种 Token 类型,支持 ///* */ 注释
  • 语法分析器:Pratt 表达式解析(9 级优先级)+ 递归下降语句/函数解析
  • AST:14 种节点类型,工厂函数模式创建
  • 语义分析器:作用域链符号表 + 类型推断 + 类型检查
  • LLVM IR 代码生成:全 AST 节点覆盖,内建 print_i64 / print_f64 / print_bool
  • 驱动程序:命令行参数解析 + 编译流水线串联 + --emit-ir 调试模式
  • Arena bump allocator (8MB)
  • 错误报告:ANSI 红色高亮,文件名:行号:列号 格式
  • 类型系统:i64 / f64 / bool / voidlet 不可变变量,类型推断
  • 控制流:if / elsewhile 循环,return 语句
  • 函数:多参数、递归、可选返回类型标注
  • 65 个单元测试 (词法 41 + 语法 15 + 语义 9)
  • 5 个集成测试 (算术、分支、递归、斐波那契、浮点)
  • CMake 构建系统,静态库 + 可执行文件 + 测试分离