Files
l-language/CHANGELOG.md
T
Serendipity 5a0bf60698 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 已知限制更新
2026-06-05 18:42:24 +08:00

67 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 构建系统,静态库 + 可执行文件 + 测试分离