5a0bf60698
- CHANGELOG: 新增 v0.4.0 (struct+RAII) 和 v0.5.0 (alias+enum+array+impl+match) - README: 版本0.5.0, 测试145, 完整功能列表+运算符表 - CLAUDE: v0.5 已知限制更新
67 lines
2.7 KiB
Markdown
67 lines
2.7 KiB
Markdown
# Changelog
|
||
|
||
## 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 构建系统,静态库 + 可执行文件 + 测试分离
|