docs: CHANGELOG v0.4/v0.5 + README/CLAUDE 版本刷新

- CHANGELOG: 新增 v0.4.0 (struct+RAII) 和 v0.5.0 (alias+enum+array+impl+match)
- README: 版本0.5.0, 测试145, 完整功能列表+运算符表
- CLAUDE: v0.5 已知限制更新
This commit is contained in:
2026-06-05 18:42:24 +08:00
parent a15cd9d56e
commit 5a0bf60698
5 changed files with 675 additions and 40 deletions
+28 -15
View File
@@ -1,38 +1,51 @@
# 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 测试补全let mut assign, immutable assign error, str type, str concat (9→21 tests)
- codegen 测试补全:while 循环 LLVMVerifyModule (7→9 tests)
- sema/codegen 测试补全
- 集成测试:`10_for_range.l``11_for_step2.l`
### Known Issues
- LLVM 22 C API 不支持 mem2reg pass(需用 opt 工具优化 alloca
- str+str 运行时拼接使用 malloc(编译后程序存在泄漏,非编译器本身)
## 0.2.0 (2026-06-05)
### Added
- `let mut` 可变变量 + 赋值语句 (`x = expr;`)
- 可变性检查:对不可变变量赋值报编译错误
- 字符串类型 `str` + 双引号字面量 (`"Hello"`)
- 字符串拼接 `str + str` (malloc + strlen + memcpy 运行时实现)
- `print_str` 内置函数 (委托 printf)
- 字符串拼接 `str + str` + `print_str` 内置函数
- 复合赋值运算符:`+=` `-=` `*=` `/=`
- 集成测试:`06_mut_while.l` (while 循环修改变量)、`07_hello_str.l` (字符串输出)、`08_str_concat.l` (字符串拼接)
### Changed
- codegen malloc → arena 统一分配
- LLVM 目标初始化解耦为 `target.h/c` 独立模块
- 新增 `.codegraphignore`
### Fixed
- codegen.c 内存管理不一致 (malloc 混用 arena)
- str+str 运行时拼接返回左操作数的 bug
## 0.1.0 (2026-06-05)