取消了 i8* == i8* 实际使用 strcmp 的规则

This commit is contained in:
2026-07-30 21:56:41 +08:00
parent cfc30d735c
commit 377b60fd67
54 changed files with 129 additions and 3730 deletions

View File

@@ -57,19 +57,19 @@
| 模块 | LOC | 说明 |
|------|-----|------|
| `includes/numpy/__init__.py` | 1,016 | ndarray n 维数组 |
| `includes/numpy/__init__.vp` | 1,016 | ndarray n 维数组 |
| `includes/zlib/` | ~1,900 | 完整 deflate/inflate/huffman/checksum |
| `includes/ast/` | 4,176 | **自研 Python 解析器(自举组件)** |
| `includes/llvmlite/` | ~1,500 | **自研 LLVM IR 生成库(自举组件)** |
| `includes/linkedlist.py` | ~400 | 泛型链表(@t.NoVTable + PEP 695 |
| `includes/vipermath.py` | 450 | 数学库 |
| `includes/linkedlist.vp` | ~400 | 泛型链表(@t.NoVTable + PEP 695 |
| `includes/vipermath.vp` | 450 | 数学库 |
| ...30+ 文件) | ... | mpool/mbuddy/string/stdio/json/w32 等 |
| **includes 总计** | **~12,000** | |
### 2.4 全项目总计
```
全项目 .py 总计:~48,000 LOC
全项目总计:~48,000 LOC
```
**自举相关核心数字:**
@@ -87,10 +87,10 @@
| 文件 | LOC | 功能 |
|------|-----|------|
| `__tokens.py` | ~600 | TokenType/Keyword/TokOp 枚举 + 查找表 |
| `__nodes.py` | ~1,400 | AST 胖节点 + ASTVType/ASTCtx/OpKind CEnum |
| `__lexer.py` | ~800 | 词法分析器 |
| `__parser.py` | 4,176含表格 | 递归下降语法分析器 |
| `__tokens.vp` | ~600 | TokenType/Keyword/TokOp 枚举 + 查找表 |
| `__nodes.vp` | ~1,400 | AST 胖节点 + ASTVType/ASTCtx/OpKind CEnum |
| `__lexer.vp` | ~800 | 词法分析器 |
| `__parser.vp` | 4,176含表格 | 递归下降语法分析器 |
**覆盖语法**装饰器、async/await、match含复杂模式 `[x,*rest]`/`{'type':t,**rest}`/`Point(x,y)`/`0|1|2`、try/except/finally/raise from、with、lambda、列表/集合/字典/生成器推导式、f-string`!r`/`!s` 转换和 `:>{width}` 格式说明、链式比较、walrus、yield from、global/nonlocal、切片、嵌套三元。
@@ -105,11 +105,11 @@
| 文件 | 功能 |
|------|------|
| `__types.py` | `LLVMType` REnum + 类型构造/打印 |
| `__values.py` | Value/Constant/SSA 值表示 |
| `__function.py` | Function + BasicBlock + 参数管理 |
| `__module.py` | Module 容器 + 目标三元组 + 输出 .ll |
| `__builder.py` | IRBuilder指令发射 + SSA 命名) |
| `__types.vp` | `LLVMType` REnum + 类型构造/打印 |
| `__values.vp` | Value/Constant/SSA 值表示 |
| `__function.vp` | Function + BasicBlock + 参数管理 |
| `__module.vp` | Module 容器 + 目标三元组 + 输出 .ll |
| `__builder.vp` | IRBuilder指令发射 + SSA 命名) |
**设计要点**
- `LLVMType``t.REnum`tagged union—— 少变体、无通用字段、match 分派的理想场景
@@ -117,7 +117,7 @@
- IR 文本生成用 `viperlib.snprintf` 格式化,避免手写逐字符拼接
- 对象分配用普通类 + `mpool`,不持有全局 `mbuddy`
**验证**[TransPyV/App/main.py](../TransPyV/App/main.py) 10 个测试覆盖类型打印、值打印、build_add、if-else、模块打印、lli 实际执行。TransPyV 程序运行时自己生成合法 IR`lli` 成功执行。
**验证**[TransPyV/App/main.vp](../TransPyV/App/main.vp) 10 个测试覆盖类型打印、值打印、build_add、if-else、模块打印、lli 实际执行。TransPyV 程序运行时自己生成合法 IR`lli` 成功执行。
### 3.3 ✅ 基础设施库
@@ -125,9 +125,9 @@
| 库 | 自举中的作用 |
|----|-------------|
| `linkedlist.py` | AST 节点树、符号表链、IR 指令链的容器(`@t.NoVTable` + PEP 695 递归泛型继承) |
| `mpool.py` / `mbuddy.py` | 编译器内存管理(替代 Python GC |
| `string.py` / `viperlib.py` | 字符串处理 + snprintf替代 Python 字符串方法) |
| `linkedlist.vp` | AST 节点树、符号表链、IR 指令链的容器(`@t.NoVTable` + PEP 695 递归泛型继承) |
| `mpool.vp` / `mbuddy.vp` | 编译器内存管理(替代 Python GC |
| `string.vp` / `viperlib.vp` | 字符串处理 + snprintf替代 Python 字符串方法) |
| `w32/` | FFI 声明,自举后编译器调用 llc/clang/linker 的基础 |
| `json/` | 符号表序列化(替代 pickle |
@@ -164,7 +164,7 @@
| `copy.deepcopy` / `pickle` | ~10 | ✅ 是 | 已解决(`__getstate__/__setstate__` |
| `hasattr` 防御性检查 | ~1500 | ⚠️ 多数可消除 | 显式字段声明 + None 检查 |
**真实反射障碍约 200-500 处**,集中体现在 `CTypeInfo` 门面模式FIELD_ROUTES 动态路由到 `_ts`/`_sm`)。重构方案:用 REnum + match 替换 `__getattr__` 路由,已在 `includes/llvmlite/__types.py` 验证此范式可行。
**真实反射障碍约 200-500 处**,集中体现在 `CTypeInfo` 门面模式FIELD_ROUTES 动态路由到 `_ts`/`_sm`)。重构方案:用 REnum + match 替换 `__getattr__` 路由,已在 `includes/llvmlite/__types.vp` 验证此范式可行。
### 4.4 Python 标准库依赖(原:严重)→ ⚠️ 部分已解决
@@ -204,9 +204,9 @@
以下能力已在 includes/ 库中验证,证明 TransPyC 能承载编译器复杂度:
- **复杂泛型容器**`linkedlist.py` 的递归泛型继承 `class GNode(GSListNode[GNode])`C/C++/Rust 均无法如此简洁表达)
- **复杂泛型容器**`linkedlist.vp` 的递归泛型继承 `class GNode(GSListNode[GNode])`C/C++/Rust 均无法如此简洁表达)
- **复杂算法**`zlib/` 的完整 deflate/inflate/huffman~1,900 LOC 生产级压缩)
- **n 维数组**`numpy/__init__.py` 的 ndarray + 运算符重载 + `__new__` 堆分配
- **n 维数组**`numpy/__init__.vp` 的 ndarray + 运算符重载 + `__new__` 堆分配
- **平台 FFI**`w32/` 的 Win32 API 绑定file/memory/process/sync/console
- **LLVM IR 生成**`llvmlite/` 的 REnum 类型系统 + IRBuilder + ModulePrint