Commit Graph
28 Commits
Author SHA1 Message Date
TermiNexus 73e5eea3f0 fix(llvmlite): create_block 块名与参数名冲突去重
LLVM 中块标签 entry 即值 percent-entry,与参数 percent-entry 重名导致 llc
unable to create block named entry(CallGenCall._field_byte_offset 的 entry
参数根因)。create_block 创建块时扫描函数参数值名(剥离百分号前缀),
冲突则追加 .1/.2 后缀,覆盖全部 7 处入口块创建点。
2026-08-19 05:54:11 +08:00
TermiNexus 4f95867209 fix(llvmlite): PrintModule param_scan 改用访问器绕开 stub 字段访问陷阱
printf.fmt Param 创建后 next=0(正常)、dump_ir 诊断访问器读 next=0,
但 PrintModule 直接访问 param_scan.Next 遍历超限死循环——同一指针两次
读取结果不同,指向跨模块 stub 字段访问生成错误 GEP/静默跳过
(param_scan 永不更新 → 死循环)。param_scan 遍历改用 param_get_next/
param_get_ty(__function.vp 完整类型内读取),并打印首节点 param/next
供对比验证。
2026-08-18 08:26:38 +08:00
TermiNexus 37e6dd1863 feat(llvmlite): 加 module_get_func_head 跨模块访问器,供 dump 诊断遍历函数链 2026-08-18 08:17:51 +08:00
TermiNexus 1805790336 fix(tpv): vpi 参数数上限哨兵 + declare 链遍历哨兵,定位 builtins.vp dump 卡死根因
dump 步数哨兵已定位卡死链路为 printf 的 Params 链异常。新增:
1. VpiReader _inject_function_declare/_inject_method_declare 参数数上限
   128(fail-fast):vpi tree 深层节点被覆盖损坏时 args_list.__len__()
   返回垃圾大数 → add_param 海量次 → Params 链超长,dump 误报成环
2. CallGenBase._ensure_method_declare FuncHead/Params 遍历步数上限
   (防 translate 期间死循环)
3. dump 哨兵报错增强打印 Params.Count,区分真成环与海量节点
2026-08-18 08:10:02 +08:00
TermiNexus f1db31b645 fix(llvmlite): dump 路径链表遍历加步数上限哨兵,把 IR 成环卡死变确定性报错
builtins.vp 翻译后 dump_ir 卡死(IR 链表 Next 被越界写破坏成环,
遍历无限挂起)。PrintModule/FunctionPrint/RenumberSSA/_scan_type_
for_cross_module_refs 的全部链表遍历(funcs/globals/named types/
params/blocks/lines/struct fields)加 IR_DUMP_CHAIN_LIMIT=100000
步数上限,命中即打印链路名并 exit(1),对齐 memhub.self_check
max_steps 的 fail-fast 哲学。
2026-08-18 07:59:39 +08:00
TermiNexus 6b9186848b fix(llvmlite): _type_str 增加 IR-FAIL 校验护栏,防 LLVMType 悬空生成垃圾 IR
LLVMType 类型对象可能被 MemBuddy 覆盖/悬空(跨遍 reset 回收后 pool 内存复用),TypePrint 输出首字符变为垃圾(如 't')或为空。现在 _type_str 对输出做首字符合法性校验,非法即打印 [IR-FAIL] + 类型地址并 exit(1)(fail-fast),防止生成 bitcast i8* null t 类垃圾 IR 导致 llc 报 expected 'to' after cast value 后难以定位根因。
2026-08-17 20:13:13 +08:00
TermiNexus 2b074dfb48 fix(llvmlite): Struct name 参数默认 None;移除 GEP 降级 printf
Struct() 的 name 参数改为可选(默认 None),简化无名字段结构体构造;IRBuilder 的 GEP 遇非指针 base 直接返回 None,不再打印降级日志(噪音)。
2026-08-15 06:24:17 +08:00
TermiNexus fd3254cdd4 fix(TPC): 模块名与类名同名时 X.func() 按模块函数解析
import lib.core.X as X 且模块内有同名 class X 时,X.func() 此前被
is_class_name 判定拦截走 _HandleStaticMethodCallLlvm,用模块函数签名
生成带类前缀的 {sha1}.X.func 声明,而 define 是 {sha1}.func,导致
链接 undefined symbol(CompilerFactory.get_perm_pool)。现加模块别名
优先规则:SymbolTable 命中 IsModuleAlias 时跳过类静态方法路径,让位
模块函数调用;类构造 X.X(args) 仍走 struct 路径。同时移除
_HandleExternalCallLlvm 中误加的 else: return None 截断。

includes/llvmlite/__types.vp:DeepCopyType 各层分配源改由调用方传入
pool 参数(传 perm_pool 即持久),includes 层不依赖 App 工厂。
2026-08-14 04:02:22 +08:00
TermiNexus 0e93f40289 fix(includes): 导出 llvmlite 缺失符号 + 移除临时 DBG
- llvmlite.__init__ 导出 get_struct_fields/get_struct_fcount/DeepCopyType(HandlesAssign tuple 解包与 ClassGenMixin 深拷贝调用 fast-fail 符号未定义)
- 移除 string.vp [ATOF-DBG]、ast/parser.vp [LKP-DBG] 临时插桩(保留查表逻辑)
2026-08-12 21:13:36 +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 b4567ffb9a fix(llvmlite): opaque与空结构体区分(fcount哨兵);ast表达式节点调整 2026-08-12 01:27:24 +08:00
TermiNexus d2d319eb21 fix(includes): ASan 集成支持 + 越界写封堵 + TypePrint 类型名截断 40→255
1. Phase2Translator 增加 TPC_ASAN 支持(opt asan 插桩+链接 -fsanitize=address),配合 clang64 定位 0xbe 崩溃。2. llvmlite/memhub/viperio/viperlib 多处理无界 strcpy/strcat/下溢/递归守卫/栈数组钳制。3. memhub alloc 块尾 canary(MEMBUDDY_CANARY)+check_alive_blocks 校验+chk_stack realloc 扩容。4. TypePrint Ptr(Struct) 类型名截断上限 40→255:含 sha1 前缀类型名(如 bbdf3bbd4c3bc28c.CONSOLE_SCREEN_BUFFER_INFO=42)被截断产生未定义类型引用(llc undefined type)。
2026-08-10 18:09:13 +08:00
TermiNexus fc93a28ec6 refactor(llvmlite): P0 对象化 - IRBuilder/LLVMModule 方法化(70 方法+一行委托兼容)
- IRBuilder 新增 62 个实例方法(load/store/gep/call/binop/cast 等), 顶层函数保留为一行委托, 调用方零改动
- LLVMModule 新增 8 个实例方法(add_function/add_global/add_named_type/PrintModule 等)
- 类字段/硬编码 SIZE/逻辑/IR 输出零变化, GetDiagnostics 无错误
- 新增 wiki/14-oo-refactor.md 对象化重构方案(P0-P6)
2026-08-09 22:54:01 +08:00
TermiNexus a6444a4e1f feat(includes): 软关键字 fn/fun/func/function 与 match 语句判定; 解析 fail-fast 错误记录(get_parse_err_*) + 相邻字符串字面量隐式拼接; ord/chr 内置函数; llvmlite build_alloca_aligned; memhub 超块请求返回 NULL; numpy 显式 string./stdio. 前缀; this 数组迭代修复 2026-08-09 17:10:34 +08:00
TermiNexus 939f7f2497 fix(llvmlite): ConstFloat 浮点常量文本改十六进制位模式(0x%016llx/0x%08x), 消除 llc 科学计数法解析 ±1 ulp 误差(11.0 解析为 11.000000000000002); vipermath modf 用回 c.Set(c.Deref()) 同步注释 2026-08-08 21:35:58 +08:00
TermiNexus 9ee519e998 fix(includes): 修复浮点常量精度截断与 viperlib %g 小数反转 - ConstFloat 浮点常量文本改 %.17e(全精度+LLVM合法语法, 修复 %e 6位小数截断致 llc 值错与 %.17g 裸整数报错); viperlib %g 小数位改逆序存储(原三变量交换循环在 TPV 编译产物中失效, 小数位反转 456->654); SprintfTest 增加 %g 诊断用例 T1-T10 2026-08-08 20:38:25 +08:00
TermiNexus a39b5da0f8 基本稳定 2026-08-05 20:11:38 +08:00
TermiNexus 0a10b20dde 修正了逻辑,使 TPV 能够正常编译 2026-08-03 02:00:49 +08:00
TermiNexus 4e17365b76 修正了 args 传参问题 2026-07-31 17:15:54 +08:00
TermiNexus 377b60fd67 取消了 i8* == i8* 实际使用 strcmp 的规则 2026-07-30 21:56:41 +08:00
TermiNexus cfc30d735c 将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名 2026-07-30 16:33:56 +08:00
TermiNexus f79c8ca643 Fixed 2026-07-30 13:34:26 +08:00
TermiNexus a2cc28a6ab Rewrote the comments in the libraries under 'includes' in English (excluding those inside folders) 2026-07-29 23:34:36 +08:00
TermiNexus 3633be1995 Some simple information syncing 2026-07-28 21:08:58 +08:00
TermiNexus 1837339f69 修正了一些错误 2026-07-26 20:32:26 +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