3.6 KiB
3.6 KiB
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 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 集成
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.x,r.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.l、11_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/void,let不可变变量,类型推断 - 控制流:
if/else,while循环,return语句 - 函数:多参数、递归、可选返回类型标注
- 65 个单元测试 (词法 41 + 语法 15 + 语义 9)
- 5 个集成测试 (算术、分支、递归、斐波那契、浮点)
- CMake 构建系统,静态库 + 可执行文件 + 测试分离