Commit Graph
19 Commits
Author SHA1 Message Date
TermiNexus 593332636f 全部整理上传 2026-08-17 04:27:29 +08:00
TermiNexus a0edc3d961 fix(gen): 泛型 type_params 生命周期与无注解赋值 annot 推断
- ClassGenMixin: list[str](pool, 8) elem_size 修正(原 4 致 Pair[T1,T2]
  重叠写),新增 GenericClassTpParams stdlib 深拷贝表,特化统一取深拷贝
- Generator: 初始化 GenericClassTpParams 防 0xBEBEBEBEBEBEBEBE
- TypeGenMixin: 泛型上下文栈式管理,支持嵌套特化
- CallGenMixin: sz_builtin 补 double/float/char,修复 T.__sizeof__ NameError
- StubMerger: _CommentOutGlobalInBuf 循环注释同名全局,修复 @_mbuddy 重复定义
- HandlesAssign: 无注解赋值按 RHS 推断 AnnotClassName(类实例化/源变量/
  运算符重载/字段注解/方法返回注解 vpi),修复联合类型 Ptr(i8) 属性访问失败
2026-08-13 17:31:54 +08:00
TermiNexus 9bb6dd7612 fix(reachable): App 源文件容器依赖注入,修复 dict/list 未编译致方法返回类型误杀
_BuildReachableSha1Set 扫描 App 源文件仅解析 import,未检测 list/dict 容器
使用,main.vp 用 dict 但 _dict 未纳入可达集合→不编译→dict.set_int 等无
返回类型信息→_fail_method_ret_ty 误杀(DictTest 重现)。修复:translate
后调用 _inject_auto_container_visibility 注入 _list/_dict 依赖。
2026-08-13 08:11:41 +08:00
TermiNexus 7cc501cdef fix(phaseb+): includes 按依赖拓扑序编译,修复跨模块 vtable 误杀
astaux.vp 继承 base.vp 的 AST 类时,vtable 槽位需 AST.accept 的
TypeStr 已注册到全局表(完整翻译产物)。Phase B+ 原先按 store 扫描
顺序编译,astaux 先于 base 编译 → 继承方法找不到实现被 fail-fast 误杀。
新增 StubMerger.BuildTopoSortedIndices(Kahn 逆拓扑,被依赖者先),
Phase B+ 循环按拓扑序编译可达 includes。
2026-08-13 03:50:59 +08:00
TermiNexus ad2b97a140 perf(reachable): 移除 _list/_dict/json 无条件预加入,按需编译
_BuildReachableSha1Set 原本无条件把 _list/_dict/json 塞进可达集,
导致未使用的 App 也整链编译(json/__init__ → __parser/__writer)。
_list/_dict 已由 Phase A _inject_auto_container_visibility 按需注入,
现补充 []/{} 字面量检测防漏;json 由 _dict 真实 import 链带入。
builtins 保留始终纳入(设计意图)。
2026-08-13 03:27:31 +08:00
TermiNexus b4c01808bf fix(phasec): 可达模块 .obj 缺失误杀恢复,纯声明模块跳过
Phase B+ 对纯声明模块(text.ll 无 define 行,如 stdio.vp 全 pass)
按设计不生成 .obj,但 Phase C 遍历可达模块时无条件要求 .obj 存在,
导致误杀。新增 StubMerger.IsDeclOnlyModule 判断(与 Phase B+ 内联
逻辑一致),.obj 缺失时声明文件静默跳过,实现文件缺失仍 fail-fast。
2026-08-13 03:11:13 +08:00
TermiNexus c9de06e76d fix(stubmerger): 依赖 stub/text 为空误杀恢复静默跳过
stdio.vp 等纯声明模块(全 pass)text.ll 为空是合法形态,stub.ll
为空同理(纯常量/纯导入模块)。fail-fast 改造对"文件存在但为空"
加了错误上报导致误杀,恢复静默跳过;文件缺失分支保留 fail-fast。
2026-08-13 03:05:41 +08:00
TermiNexus 9d3483e97e refactor: 全面 fail-fast 化(去兜底)+ 泛型补译/解引用宽度修复
- 全量降级点改 fail-fast:23 文件约 140+ 处静默 i32/i8*/void/continue 兜底改为 HandlesType.fatal_error(python traceback 风格)或 VLogger.error 终止,暴露上游根因;保留语言语义默认(无注解 i32/infer 链/CIf/star 回退)
- 泛型特化 Phase B 补译 reemit 强制发射方法体(修复 list[...] define 缺失)
- c.Deref 读取宽度仅按赋值直接 RHS 推断(修复 CurAssignAnnot 残留误判 i32)
- 类型别名清理:t.CChar|t.CPtr→str、t.CInt→int 等
2026-08-13 02:11:49 +08:00
TermiNexus ea5b17f5fd refactor: 深度 if 守卫化重构(guard continue + 短路合并)
- HandlesAssign/Return/Match、StubMerger、Phase2、Gen/*Mixin、StubGen/* 手写 None 检查链改守卫/短路,全局最深 14→12、>=10 层 26→19
- StubMerger define→declare 剥 linkonce_odr 等 linkage(修复 VectorGenericTest invalid linkage)
- CallGenMixin len() 数组常量长度分支(对齐 TPC _HandleLenLlvm)
- print 参数翻译失败 (null) 兜底改 fail-fast
- 临时诊断日志与死代码(sub_vk)清理
2026-08-12 21:13:25 +08:00
TermiNexus e5a99abb63 fix(handles): 本轮修复集 - StructTest/TypeCastTest/StringIterTest/va_list
- t.Struct 纳入标记基类: 消除幻影父类虚假 vtable + Phase A-pre 延迟注册, 修复 point_sum 参数退化为 i32(签名与函数体 Ptr 不一致, llc 报错)
- 指针算术改 GEP 元素缩放(对齐 TPC): ptrtoint+add 字节语义致 i32*/struct* 偏移错误(StringIterTest Test4/8)
- 右移按操作数符号性选 lshr/ashr + t.XXX 注解 AnnotClassName 提取 attr + _node_type_unsigned Name 分支查变量无符号性(TypeCastTest)
- 显式类型转换按符号性 sext/zext; _call_method_on_ptr 传 node 修复 line 0 报错; __getitem__/__setitem__ stub 守卫 + 结构体字段 bitcast 条件化
- va_list 24 字节对齐 + build_alloca_aligned; CIf 运行时回退(CIf 真值/CIfdef 恒真); parse traceback; builtins 关联
2026-08-09 03:39:26 +08:00
TermiNexus 60493d6ae5 fix(compiler): 支持多 includes 目录,修复 G4 g4node 未注册 SHA1
- Config.vp 解析 includes 数组全部元素为空格分隔 IncludesDirs(首元素仍存 IncludesDir 兼容单目录)

- IncludesScanner 逐目录递归扫描合并,FileEntry.IncDir 记录所属 includes 根目录

- StubMerger 存储新增 IncDir 并行数组(MAX_INC_DIR_LEN=512),容量 256→1024

- Phase2 预注册/3.5 按需编译改用逐条目 IncDir 拼接源路径(空串回退 includes_dir)

- HandlesImports import 未注册错误显示行内内容 + App 兄弟模块文件豁免

- 新增 TransPyV 自身 project.vpj
2026-08-08 10:31:44 +08:00
TermiNexus 95a52bb9f6 fix: vpi 注入错误上下文帧携带触发 import 的真实行号与行内容 2026-08-08 00:38:06 +08:00
TermiNexus 6dbcbe247e fix: vpi stub 注入期间修正错误归因,多级堆栈显示编译上下文与被读 stub 真实位置 2026-08-08 00:33:29 +08:00
TermiNexus 0665ee1164 refactor: StubMerger 复用公共工具(LookupSha1ByModName 委托、_sliced_path 复用 slice_subdir、_PathToModuleName 下沉) 2026-08-08 00:02:39 +08:00
TermiNexus e2bdfc1c4e chore: 移除 DDEBUG/MATCHDBG 调试日志残留 2026-08-07 23:29:39 +08:00
TermiNexus a3b9bdc409 修正了逻辑,使 TPV 可以编译 Test,但自举还有一段距离 2026-08-03 02:01:20 +08:00
TermiNexus 9dcf34599d 升级了仿 Python 错误堆栈提示,修复了 bool 不存在的问题,将 bool 改为 i1 而非 i8,实现了 bool 的归一化 2026-07-31 04:12:12 +08:00
TermiNexus bfb55d68f4 取消了 i8* == i8* 实际使用 strcmp 的规则,修复了诸多 Bug 2026-07-30 21:56:19 +08:00
TermiNexus d227bee139 将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名 2026-07-30 16:34:50 +08:00