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 |
|