TermiNexus
|
ba3f22702e
|
refactor(gen): P5 对象化迁移完成 - FuncGenMixin/ClassGenMixin 全量迁移+委托层; 泛型模板表迁入 gen 字段; stub 方法 ParamCount 不含 self(修复跨模块方法调用默认参数填充错位); 默认参数快照失败 fail-fast(防悬空 AST UAF); HandlesMatch 改委托 gen._lookup_renum_variant
|
2026-08-10 06:24:50 +08:00 |
|
TermiNexus
|
0e4f00baf4
|
refactor(gen): P4 CallGenMixin - HandlesExprCall 86 函数迁移 + 委托层
HandlesExprCall(7043 行, 本仓库最大文件)全部模块级函数迁移为
CallGenMixin 方法(含 translate_call 1408 行整体迁移),全局表
(cexport/LLVMIR 序号/temp_dir/闭包/funcptr/全局函数表/默认参数表)
迁入 gen 字段;旧函数保留为 _g_gen 单例委托,4 类保留。Generator
多继承追加 CallGenMixin(现为 5 Mixin 组合)。
修复 P4 迁移引入的两处缺陷:
1. HandlesTranslator 引用已删除的 HandlesExprCall._g_temp_dir → None
导致跨模块 .vpi 注入全局失效(json 翻译崩溃),改用
HandlesType.get_temp_dir()
2. Generator 50 字段突破 FIELD_MAX=48 硬上限导致字段截断丢失,
字段槽位上限提升至 64(HandlesStruct/StructGenMixin/HandlesClassDef)
|
2026-08-10 03:31:10 +08:00 |
|
TermiNexus
|
b3170ba823
|
feat(handles): Viper 多继承支持 M1-M4 - 父类数组+MRO/字段展平/vtable合并/this调整
HandlesStruct: StructEntry 增加 ParentNames/ParentCount + get_mro_chain
(深度优先+声明顺序+去重, 含自身, mro[0]=自身)
HandlesClassDef: 多父字段展平去重 + vtable 合并(方法短名去重+探测实际定义类)
+ 继承链统一 vtable 判定 + 无字段类(接口/标记类)支持 + 空 struct 跳过 zeroinitializer
HandlesExprCall: 方法调用沿 MRO 回退 + 继承方法 this 调整(GEP 定位+bitcast 成父类指针)
HandlesExprOps: 运算符重载 MRO 链查找
|
2026-08-10 00:28:58 +08:00 |
|
TermiNexus
|
f63dcd7fed
|
fix(handles): 对象化前的最后稳定版本
- 修复 t.CVoid(x, CPtr) 裸名 CPtr 识别失败导致方法体 ret null(scale/move/__new__/take_damage 链式调用对 NULL 解引用崩溃)
- c.Addr(self) 返回对象指针(load 一层 Ptr(Struct)), 与 c.Addr(self.field) 语义一致
- return 语句指针→指针元素类型不匹配(i8* → 类指针)自动 bitcast, 避免 llc 类型不匹配
- 多层继承 vtable 槽沿父类链用 find_func_global 定位实际定义类(修复 ElectricCar.is_running=null)
- 新增一元运算符重载(__neg__/__pos__/__invert__)
- 新增表达式接收者方法调用 (expr).method(args)
- map_t_type 补 CFloat8/16/32/64/128T 精确宽度浮点映射
|
2026-08-09 22:19:21 +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
|
24d3de4b72
|
fix(TPV): 统一浮点 CDefine 注册路径 + 1a 预扫描签名防 UAF - handle_module_level_var/PreScan 统一走 _register_cdefine_from_value(浮点/整数自动识别); 新增 register_cdefine_double/lookup_cdefine_double(%.17g 存值); translate_name_value 浮点 CDefine 返回 ConstFloat(修复 llc ret i32 0); 1a 预扫描函数签名提前泛型特化到 mark1 前(防 UAF); 移除 ASSIGN-DBG; 临时定位插桩 CDEF-DBG
|
2026-08-08 18:18:44 +08:00 |
|
TermiNexus
|
16d0302b08
|
fix(compiler): stub 注入泛型类跳过方法 declare,修复 ndarray[T] 错误特化
Phase2 翻译 App 文件注入 numpy stub 时,_inject_method_declare 解析
class ndarray[T] 的模板签名(ndarray[T] | t.CPtr),T 无上下文可替换
→ _specialize_generic_class("ndarray", ["T"]) 递归崩溃。泛型类
(type_params 非空)跳过方法 declare 注入,具体特化方法 define 已由
Phase1 生成,返回类型仍走 vpi 返回注解缓存泛型归一化。
(含 4 处 TC-DBG 定位插桩,验证后移除)
|
2026-08-08 16:33:04 +08:00 |
|
TermiNexus
|
ee8f532dc5
|
fix(compiler): 泛型注解收集类型实参时替换泛型参数 T + 属性访问 fail-fast traceback
- _get_type_name_from_annotation Name 分支应用 resolve_generic_type_name,
修复 ndarray[T] 二次递归特化崩溃(SimdTest numpy)
- _specialize_generic_class 入口防御性替换残留类型参数名
- translate_attribute/get_attribute_ptr 非指针属性访问改 fatal_error(Python traceback 风格)
- c.Deref(ptr).attr 属性访问 base 取指针本身不做 load
- list[str] 容器 elem_size 4→8 修复(str 是指针 8 字节)
- 泛型函数显式类型参数 xxx[T](x) 回退普通函数调用;T(v) 转换走 resolve_annotation_type
|
2026-08-08 15:23:48 +08:00 |
|
TermiNexus
|
e0303c46f6
|
fix(compiler): 裸类形参按引用传参 + 同名类优先本模块 + 裸名泛型构造/类型参数转换
- 裸类形参(方法+函数)解析为 Ptr(struct),修复 GSList[T].append 按值传参悬垂(G5 Test4 head.Value 读到垃圾)
- resolve_annotation_type 裸类名优先 find_struct_by_module 命中本模块,避免跨模块同名类(main.vp G5Node vs g5container.vp)类型混用
- translate_call 新增裸名泛型类模板构造:Box(42)→从实参推断→特化→构造(GenericTest Test4/5/10、GenericTest2 Stack/Range 等)
- 类型转换路径先 resolve_generic_type_name:类特化/泛型函数中的 T(x) 解析为 int/str/bool/double 转换
- 泛型函数翻译时设泛型上下文 T→int(TPV 泛型函数按普通 i32 函数编译,退出作用域前清除)
|
2026-08-08 11:54:32 +08:00 |
|
TermiNexus
|
9322ac469f
|
fix(core): 泛型特化翻译并入模板模块 imports,消除跨模块误报
|
2026-08-07 22:36:22 +08:00 |
|
TermiNexus
|
89cc30c757
|
基本稳定
|
2026-08-07 19:32:46 +08:00 |
|
TermiNexus
|
f8436c74d2
|
提交新的建议忽略
|
2026-08-06 18:08:09 +08:00 |
|
TermiNexus
|
8ad500c4da
|
基本稳定可以编译 Test
|
2026-08-05 20:12:08 +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 |
|