TermiNexus
|
81ad712475
|
fix(Handles): 多继承字段展平按继承源去重,消除菱形重复
Generator 同时继承 ClassGenMixin/ClassGenEnum/ClassGenGeneric/ClassGenVTable/ClassGenDef/ClassGenBase,而前 5 个都继承 ClassGenBase → ClassGenBase 41 字段被重复展平 6 次(struct 707 元素),class_members 索引与 struct 布局错位 → 跨 Mixin 方法 this_adjust 失效 → is_exception_name 读错位内存 strcmp 越界(ASAN heap-buffer-overflow)。
修复:HandlesClassDef 与 DeclarationGenerator 的多继承展平改为递归按继承源去重(每类只展平一次,只取自有字段;同名字段如 TempDir 跨非继承 Mixin 仍各自保留,避免 2026-08-10 历史去重缺陷回归)。
|
2026-08-18 13:13:25 +08:00 |
|
TermiNexus
|
401429ccdf
|
fix(generic): 特化 T 替换判据修正——t 模块内建类型(裸名或 t. 前缀)仍用 type_name
上一提交对类类型参数改用 mangled type_arg 替换 T,但 type_name 为
't.CInt'(带 t. 前缀、不在 _BUILTIN_TYPE_NAMES 裸名集合)时被误判为
类类型,改用 type_arg='i32' 替换 → list[t.CInt] 特化方法体出现
'i32.__sizeof__'(源码无此名)→ [FATAL][__sizeof__] 类型 'i32' 无法
解析 + self 类型错乱(list[i32] 中找不到 CifEvalOk,StmtGenCifMixin
编译崩溃)。判据改为取裸名(去掉 t. 前缀)判断内建,内建仍用 type_name,
只有真正的类类型参数(AST/ast.AST 等)才用 mangled type_arg。
|
2026-08-17 21:44:40 +08:00 |
|
TermiNexus
|
fa2cfef205
|
fix(generic): 特化 T 替换用 mangled 名 + operator fallback 选有 define 的特化
1. _specialize_generic_class 的 type_map 对类类型参数改用 mangled type_arg
(如 f467978339422f32.ASTptr)替换 T,而非裸短名 type_name:模板内部嵌套
注解(list[T].__iter__ 返回 list[T])不再被替换成裸 list[AST] 后重新特化出
只有 declare、无方法体的错误特化 → 消除 ld.lld undefined symbol:
7cadfe07e983fd90.list[AST].__len__/list[ClassDef].__len__。
2. _try_operator_overLoad 特化 fallback 改为优先选已编译方法体(define)的特化,
全部只有 declare 时按需补发;dict 插入序不再导致 len() 选中错误特化。
|
2026-08-17 21:19:43 +08:00 |
|
TermiNexus
|
6fc9e19e24
|
feat(vast): 新增自研 Viper/Python 语法解析器取代标准库 ast
TPC 侧取缔对 Python 标准库 ast 模块的依赖,改用 lib/vast 包:
- Nodes: 与 CPython 3.12 ast 完全同构的 131 个节点类(含抽象基类继承)
- Tokenizer: 词法分析(缩进/字符串/f-string/数字/运算符/软关键字)
- ExprParser: 表达式递归下降解析(优先级/lambda/推导式/f-string/切片)
- Parser: 语句解析(def/class/if/for/try/with/match/import/注解)
- Utils/Unparser: walk/dump/unparse/copy_location/literal_eval 等辅助
- 软关键字 fn/fun/func/function 并入解析器, 废除 ExpandSoftKeywords 预处理
- lib/_bootstrap 将 lib 目录加入 sys.path, import vast as ast 零修改替换
- 52 个文件 import ast 替换为 import vast as ast; 94 文件差分测试 0 失败
|
2026-08-17 09:36:38 +08:00 |
|
TermiNexus
|
8ccf5d2c18
|
fix(TPC/includes): 泛型特化 linkonce_odr + None 全局 common + includes 前缀
- TPC HandlesFunctions/HandlesClassDef: 泛型特化类方法(类名含 '[')设
linkonce_odr,消除 GSList[NameEntry].__before_init__ 等 duplicate symbol
- TPC HandlesAssign: None 初值模块级全局用 common linkage,合并 _g_gen 等
跨模块同名全局重复定义
- includes: binascii/hashlib 裸调用加 stdlib./string. 前缀(malloc/free/memset/memcpy)
- llvmlite: FunctionPrint 泛型特化方法输出 define linkonce_odr;__module 调整
- 删除 wiki/01-overview.md
|
2026-08-12 18:18:22 +08:00 |
|
TermiNexus
|
d687216772
|
fix(TPC): 继承链 vtable 状态追溯 + 默认参数检查信息缺失保护
- _resolve_class_flags 沿 class_parent 链追溯 vtable 状态:Stmt/ExprNode 空中间基类(@t.CVTable 无方法)跨模块未注册 class_vtable,子类 IsCVTable 误判为 False → __before_init__ base=0 不写 vtable → 实例 vtable=null → 虚调用段错误。改为沿链查找任一祖先有 vtable 即继承。
- 函数调用严格参数检查:默认参数信息缺失(跨模块 stub 加载/并行编译时序未同步)时跳过检查,避免 fatal_error 误报缺少必需参数。
|
2026-08-10 23:01:43 +08:00 |
|
TermiNexus
|
2129430446
|
fix(TPC): 跨模块多继承布局统一 - 字段整体前置/方法表合并/父类防重复
1. 定义模块多继承字段展平 prepend(反序) 改 append(正序),与 DeclarationGenerator stub 一致,修复 ASan 定位的 Generator 字段运行时错位(0xbe)。2. 跨模块加载 class_members 已含子类自身字段,父类字段必须整体前置(prepend),否则 Value.Next 命中 FloatVal(double) 导致 store 类型错乱。3. 跨模块补充与定义模块一致的方法合并(父类槽位前置、子类覆盖放父类位置),修复 vtable 槽错位(MemBuddy.alloc→_fl_find_and_remove)。4. 父类前置按字段名过滤已存在字段,防 _EmitExternalClassDeclLlvm 多加载路径重复调用导致 class_members 重复(BasicBlock:[Next,Next,...])。
|
2026-08-10 18:08:58 +08:00 |
|
TermiNexus
|
87b9dec1ef
|
feat(core): TPC 多继承同步 M5 - MRO 查找/字段展平/vtable合并/this调整
BaseGen: 新增 class_parents + _get_mro_chain(与 TPV 语义一致: 深度优先
+声明顺序+去重) 与 _get_parent_classes 兼容旧单链
HandlesClassDef: 停用 is_base_of_any 自动 vtable; 多父字段展平去重;
方法合并用定义类名; vtable 槽沿 MRO 取定义类
HandlesExprCall: 方法调用沿 MRO 回退 + stub(无函数体)判定修复
undefined reference; 继承方法 this 调整(GEP+bitcast 成父类指针)
HandlesExprUtils/HandlesImports/HandlesWith/StructGen: MRO 查找同步
|
2026-08-10 00:29:05 +08:00 |
|
TermiNexus
|
a39b5da0f8
|
基本稳定
|
2026-08-05 20:11:38 +08:00 |
|
TermiNexus
|
fcd4d8a438
|
修复了关于 snprintf 的错误(不支持长度推导)
|
2026-07-31 04:06:57 +08:00 |
|
TermiNexus
|
1837339f69
|
修正了一些错误
|
2026-07-26 20:32:26 +08:00 |
|
TermiNexus
|
135aa05485
|
尝试进行 Qt 测试,增加了 AI 人机调试工具 _console,以及 TransPyV 进行修正
|
2026-07-21 14:41:22 +08:00 |
|
TermiNexus
|
a277ded8d4
|
修正了 TPC 的一些错误,包括 Test 维护后 TPV 无法重新编译或重编译后越界的部分问题
|
2026-07-20 11:12:30 +08:00 |
|
TermiNexus
|
4e66207ba1
|
重置上传,新增了多个标准库,开始 TransPyV 自举实验
|
2026-07-19 11:38:15 +08:00 |
|
t
|
796222a300
|
snapshot before regression test
|
2026-07-18 19:25:40 +08:00 |
|