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
+36 -17
View File
@@ -4,11 +4,11 @@
</p>
<p align="center">
<img src="https://img.shields.io/badge/version-0.1.0-blue" alt="version">
<img src="https://img.shields.io/badge/version-0.5.0-blue" alt="version">
<img src="https://img.shields.io/badge/C-17-555555" alt="C">
<img src="https://img.shields.io/badge/LLVM-22.1.7-4B8BBE" alt="LLVM">
<img src="https://img.shields.io/badge/GCC-15.x-darkgreen" alt="GCC">
<img src="https://img.shields.io/badge/tests-70%20passed-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/tests-145%20passed-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/license-MIT-green" alt="license">
</p>
@@ -73,31 +73,49 @@ graph TB
| `codegen/` | `AstNode*` | `LLVMModuleRef` | `CgCtx` {module, builder, var_table} |
| `driver/` | 命令行参数 | exit code | 流水线串联 + 错误报告 |
## 功能 (v0.1)
## 功能 (v0.5)
### 类型系统
| 类型 | 关键字 | 说明 |
|------|--------|------|
| 类型 | 语法 | 示例 |
|------|------|------|
| 64 位有符号整数 | `i64` | `42`, `-7` |
| 64 位浮点数 | `f64` | `3.14`, `-0.5` |
| 64 位浮点数 | `f64` | `3.14` |
| 布尔值 | `bool` | `true`, `false` |
| 无返回值 | `void` | 函数不返回值时使用 |
| 字符串 | `str` | `"hello"` |
| 结构体 | `struct` | `Point { x: i64, y: i64 }` |
| 枚举 | `enum` | `Color { Red, Green, Blue }` |
| 数组 | `[T; N]` | `[i64; 10]` |
| 无返回值 | `void` | 函数默认 |
| 类型别名 | `type` | `type Meters = i64;` |
- `let` 不可变变量,支持可选类型标注和类型推断
- 类型在编译时完全确定,无隐式转换(除 `i64``f64` 自动提升
- `let` 不可变 + `let mut` 可变,类型推断
- `i64``f64` 自动提升
### 控制流
- `if` / `else` 条件分支(支持 `else if` 链)
- `if` / `else` / `else if`
- `while` 循环
- `return` 提前返回(可选带表达式)
- `for i in 0..10` (去糖为 while)
- `match expr { pat => { ... } _ => { ... } }` (去糖为 if-else)
- `return`
### 函数
### 函数 & 方法
- 多参数,显式返回类型(可省略,默认 `void`
- 递归调用
- 内建函数:`print_i64`, `print_f64`, `print_bool`
- 多参数、递归、struct 参数/返回值
- 返回类型校验
- `impl StructName { fn method(self: Type) -> Ret { ... } }`
- `instance.method(args)` 调用
- 内建函数:`print_i64`, `print_f64`, `print_bool`, `print_str`
### 运算符
`+ - * / %` `== != < > <= >=` `&& || !` `+= -= *= /=` `str + str`
### 内存管理
- str 拼接 malloc → 作用域退出自动 free (RAII)
- struct/array 栈上值类型
## 安装
@@ -136,10 +154,11 @@ mingw32-make -j4
# 构建
cd build && mingw32-make -j4
# 运行全部测试 (65 单元 + 5 集成)
# 运行全部测试 (145 单元 + 23 集成)
./l_lang_lexer_test.exe # 词法分析 (41 tests)
./l_lang_test.exe # 语法分析 (15 tests)
./l_lang_sema_test.exe # 语义分析 (9 tests)
./l_lang_sema_test.exe # 语义分析 (65 tests)
./l_lang_codegen_test.exe # 代码生成 (24 tests)
# 集成测试
for f in ../test/programs/*.l; do