Commit Graph
71 Commits
Author SHA1 Message Date
TermiNexus 674282936f fix(ast): 解析失败保证有位置与原因,错误消息改单行
parse_tokens 的 error_count>0 出口此前直接 return None:解析器 40+ 处 error_count 自增并非每处都调 _record_*,缺记录时 dump_parse_traceback 只能打出 File 加 SyntaxError: 语法错误,既无行号也无原因(用户报 AST 解析失败不显示失败原因)。现于该出口用当前 token 补记 行/列 + 原因。另把 _record_parse_err_ctx 的消息由含换行的两行并成单行,便于调用方日志行内联。
2026-09-27 17:32:28 +08:00
TermiNexus 5e1180fc26 fix(ast): parser.vp 去掉不存在的 ast. 命名空间前缀
parser.vp 位于 ast 包内、并没有 import ast,写 ast.Call* / ast.ASTKind.X 会把变量注解记成模块限定名 ast.Call,走到 lookup_field_by_class 的模块限定分支就 fail-fast:类 ast.Call 未找到(模块 ast 可解析 sha1=1abcd5277fa442de,但 Call 实际注册在定义模块 5df907d3a02a0bac 下)。全部改用本文件已导入的裸名(AST / ASTKind / Call / Name / Attribute),共 36 处。
2026-09-27 16:53:47 +08:00
TermiNexus 6b88b3feff feat(parser,descriptor): static 作为注解位置描述符(名字: static T)
新增 _IsStaticDescriptorKeyword 并接入 _parse_type_ann 的描述符循环:注解位置的 static(名字: static T,ViperOS 驱动广泛写 pack_head: static uint32 = 0)与 const/volatile 同位置、顺序自由、可混写,落成同一个 t.CStatic 标记(与语句起始 static 名字: T 的 pending_static 通道、手写 t.CStatic | T 三处同源)。此前注解位置的 static 未被消费,退化成一个叫 static 的类名并被建成 opaque 结构体(@a = global 类型为 sha1.static 的 zeroinitializer,llvm-link 报 invalid type for null constant)。
2026-09-27 14:18:52 +08:00
TermiNexus 6e3231d04c feat(parser): 支持 static 修饰符(软关键字,归一为 t.CStatic 标记)
两种写法同源,最终都产出与手写 @t.CStatic / x: t.CStatic|T 逐字段同形的标记节点,故 TransPyV 侧零新增解析判据:

- static def f(...):消费 static 后合成 @t.CStatic 装饰器(与 inline def 同一套 pending_decorators 通道,见 _ParseStaticModified)。

- static x: int = 0:置 Parser.pending_static,由 _parse_type_ann 在描述符序列首位插入 t.CStatic(= 手写 t.CStatic | int),随即清零只作用于紧随的一个注解。

- 软关键字边界:只在语句起始、且后随 def 或 Name: 时命中(_IsStaticModifier);作标识符的位置(属性名/形参名/表达式内)不经过该判据。

语义(禁止跨模块使用)由 TransPyV 侧消费。
2026-09-27 12:58:44 +08:00
TermiNexus a6fe460bce feat(parser): 支持空下标 T[](无签名函数指针 t.Callable[])
_parse_slice 在 '[' 后紧跟 ']' 时不再调 _parse_expr(原本报 意外的 token ]),slice 置 None 交类型解析侧按空参数表处理。其余切片/元组/单表达式形态不变。
2026-09-27 12:25:47 +08:00
TermiNexus c392390e0d feat(ast): 支持 volatile 调用前缀与注解位置 __attribute__(...) 修饰符
- Call 新增 IsVolatile 字段(末尾追加,既有字段偏移不变),承载值位置 volatile f() / volatile S() 前缀标记。

- parser 新增 _IsVolatileCallPrefix + _parse_test 消费点:吃掉 volatile 后对解析出的 Call 置 IsVolatile=1。

- parser 注解位置新增 _IsMagicAttributeCall:描述符收集循环扩为 _IsDescriptorKeyword or _IsMagicAttributeCall,把 __attribute__(...) 的实参经 _MakeTAttrMarker 合成为 t.attr.<name> 标记贴到类型联合最左,与 const/volatile 同族语义。
2026-09-27 12:01:15 +08:00
TermiNexus 622ae03c9f feat(ast): 支持 inline def 与 @__attribute__(...) 语法糖(均 desugar 到既有装饰器)
- parser.vp:新增 inline 修饰符(软关键字,语句起始 + 后随函数定义时生效),合成 @t.attr.always_inline;inline 不进关键字表,作标识符的既有写法不受影响

- parser.vp:新增 @__attribute__(section(...), always_inline) desugar ⇒ @c.Attribute(t.attr.section(...), t.attr.always_inline);带/不带调用的属性名都支持,class/def 共用装饰器链,产出与手写形态逐字段同形
2026-09-27 11:41:09 +08:00
TermiNexus 7025982944 fix(memhub): free_lists 遍历加块地址合法性前置校验,防元数据损坏时解引用 AV
- count/free_bytes/used_bytes 三处遍历:链表头与 next 节点先过 _fl_block_ok,非法(未初始化 0xBE…/非池内对齐地址)则打印诊断并停止本阶,不再直接解引用
2026-09-27 00:19:44 +08:00
TermiNexus 3007c55d71 fix(memhub): 补齐 mark_depth 字段声明(上次编辑部分丢失致属性写入失败)
mark_depth 的 class 字段声明在上一批编辑中丢失,仅 __init__ 赋值保留,编译期报 属性写入失败: .mark_depth;补回声明,并去掉注释里的方括号避免被数组前缀脱糖等文本改写误伤

验证:memhub.vp 经 Viper 预处理 ExpandSoftKeywords + vast.parse 解析通过
2026-09-26 21:38:29 +08:00
TermiNexus 748c17dd1a fix(memhub,ast): alloc 懒建记录栈修永久漏块;OOM 整池账目/分段/双读取证;池耗尽 fail-fast
memhub.alloc: 首次 mark() 之前分配的块此前不入记录栈,事后 free 全被 _is_valid_ptr 活跃集检查拒绝而永久漏块;改为需要时懒建记录栈

memhub.dump_alive_orders: 新增整池账目(镜像存活/空闲链表/丢失)+ 前缀-vs-本窗口分段 + 4 条抽样(直读与两步式双读 + ±8 邻字探针)

memhub.mark/free: 记录 mark_free_bytes/mark_depth;free 被拒绝时逐判据打印(在池内/对齐/块头奇数/在记录窗口 + 本池 base/usable/usable_size)

memhub: 删除文件尾部重复残块(2291 行无主 INDENT 曾致整模块声明未注册)

ast/tokens + ast/lexer: Token/KwEntry/Lexer/token_set_str/indent_stack/_kw_lookup 池耗尽 fail-fast,不再留 NULL 崩在 _kw_hash_str
2026-09-26 21:25:23 +08:00
TermiNexus 534ab5a271 chore(includes): 删除误入库的 viperlib.vp.txt 副本 2026-09-26 19:28:32 +08:00
TermiNexus db3be6968f fix(memhub,gzip): 内存池 OOM 归属画像与 free 拒绝现场;gzip 注解 *= 词法粘连
memhub: alloc 失败打印归属 site/ctx 与存活块 order 分布(新增 dump_alive_orders);free 被 _is_valid_ptr 拒绝时首次打印现场;接通 big_alloc_count

gzip: ub: uchar*= buf 补空格(*= 被词法合并为单 OP,注解止于 uchar)

新增 traceback 模块;删除 dbgstack.vp;其余模块随新语法与尺寸口径同步
2026-09-26 19:27:24 +08:00
TermiNexus 093ff5f66d fix(viperlib): 浮点格式化的 inf/nan 保护失效导致 %g 死循环
根因: _check_special_float 的位双关 (把 double 位模式读成 uint64) 被 TPC 前端静默丢弃——IR 里 fbits 恒为 0 (store i64 0 后直接 load,没有把 fv 写进 fbits),函数恒返回 0,于是 %f/%e/%g/%a 的 inf/nan 保护全部失效。

后果: inf 落入 %g 的指数归一化循环 while fv>=10.0 (inf/10==inf 恒真) → 死循环,实测卡死在 vsnprintf:974(Ctrl+C 栈转储权威帧 #0)。

修复: _check_special_float 改为纯浮点语义判定 (fv!=fv 判 NaN;fv-fv!=fv-fv 判 +-inf);另给 4 处对 inf 不收敛的循环各加迭代上界 400 (正常最多约 308 次) 作纵深防御。

注: 位双关语句被静默丢弃属 TPC 前端缺陷,需另立项;va_arg(ap, double) 经生成 IR 核对是正确的 (va_arg 内建读 XMM 保存区且 gp/fp 各自推进),非本次原因。
2026-09-25 13:15:04 +08:00
TermiNexus b208eae8f3 feat(dbgstack,parser,asm): 新增按键栈转储运行时;前置数组声明符/union 语法;asm 迁移新语法
新增 includes/dbgstack.vp: 挂起主线程取 x64 CONTEXT + RBP 链逐步取证 + 栈扫描兜底(4KiB 分块 ReadProcessMemory);按 <exe>.stackmap 下界查表输出 <文件>.vp:行 (函数);控制台 ASCII 输出并双写 UTF-8 <exe>.stackdump.txt;ASan 与 DbgHelp 冲突显式降级不静默;lock cmpxchg 原子重入(不用 InterlockedCompareExchange: x64 上是编译器内部函数、无导出符号)。

新增/补 w32 头: win32dbghelp.vp(新)、SetConsoleCtrlHandler、x64 CONTEXT、ReadProcessMemory。

parser.vp/tokens.vp: [N]T/[]T/const [N]T 脱糖为 t.CArray;新增 union NAME: 语句(Keyword.Union 追加表尾);list[rawptr[AST]] elem_size 2/4 改 8;新增 _record_parse_err_ctx 把 token 类型与前后 token 并入错误消息,去掉 [AST] SyntaxError 遗留单行 printf。

asm.vp: 整文件迁移到 __asm__/asminp/asmout/裸 ASM_DESCR。
2026-09-25 13:11:15 +08:00
TermiNexus 0f556463e7 修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善 2026-09-23 17:42:03 +08:00
TermiNexus 0d77b68cc4 修复了一些错误 2026-09-18 20:01:14 +08:00
TermiNexus 61acfc2759 修复了一些问题 2026-09-17 14:52:53 +08:00
TermiNexus 88b81c04ed fix(posix): DIR 已是 t.CPtr(i8*),去掉多余的 | t.CPtr 以免多叠一层指针
opendir/readdir/closedir 三个形参与 os/_posix.listdir 的局部变量统一为 DIR(= i8*,即 C 的 DIR*):785e825 把 DIR 由 t.CVoid | t.CPtr 清成裸 t.CPtr 后,DIR | t.CPtr 合并成 i8**(双重指针),opendir 的 declare 变成 i8** 而 C 侧是 DIR*

不改动 win32file.vp 的 HANDLE | t.CPtr(PHANDLE=void**)、win32sync.vp 的 VOIDPTR | t.CPtr(PVOID*)、vqt6/_qtwidgets.vp 的 t.CPtr | t.CPtr(char**)——那些多叠一层是有意的
2026-09-16 18:16:37 +08:00
TermiNexus 785e825518 清理了 t.CVoid 2026-09-16 16:07:35 +08:00
TermiNexus 119951c5df chore: 移除 GSList/PrintModule 的临时 DBGCHAIN 护栏
linkedlist.vp: GSList.append 的 4 处 [DBGCHAIN] 链完整性护栏整块删除(含只为护栏引入的局部变量与 stdlib.exit 分支),并删除因此失效的 import stdio / import stdlib

llvmlite/__module.vp: LLVMModule.PrintModule 的两处 [DBGCHAIN] 指针合理性护栏整块删除;同函数的 [IR-DUMP] 遍历守卫与绕开 stub 字段访问的注释保留

依据: 探针自带注释「临时诊断,用后移除」,且由 commit 2992674 的临时 DBGCHAIN 护栏引入;全 Test 目录无断言或期望输出引用该文本
2026-09-16 10:32:40 +08:00
TermiNexus 794488b0f6 fix(zlib): 修正 out/buf 形参的联合类型写法,消除跨模块 ABI 错位
t.CUInt8T | t.CPtr[t.CPtr] 在定义侧按 PtrCount 累加得 i8**,但 stub/declare 侧(VpiReader 只把整段等于 t.CPtr/CPtr 的段认作 CPtr 标记)会坍缩为首段 i8,导致跨模块调用只传 1 字节、被调用方按 8 字节指针写入。ZlibTest 的 test_decompressobj 即由此触发 ASan heap-buffer-overflow:写入地址 = 压缩缓冲起址 -16(第 5 参栈槽残留的 compressed 指针被清零低字节)

改用 指针别名 | t.CPtr(两侧同为 i8**,与 win32sync.vp:65、posix.vp:199 同形),覆盖 zinflate_stream.decompress、zdeflate_stream.compress/flush、pyzlib.append_bytes 共 4 处;不改任何运行期逻辑
2026-09-15 23:58:39 +08:00
TermiNexus a9a53bd117 fix(withcontent): _find_provider 倒序循环上界显式转有符号,避免被无符号化后退化
range(stack.top - 1, -1, -1) 中 stack.top 是 UINT64 字段,上界被推断为无符号时该递减循环的谓词退化为 ugt(-1 在无符号域即 UINT32_MAX) => 条件恒假、循环体不可达、_find_provider 恒返回 NULL,with 的 __mbuddy__ 注入失效(_str.upper 对 NULL 取 vtable 崩溃)

显式 t.CInt 转换使符号域与递减语义一致,与编译器侧 stop 为负字面量时退回有符号谓词的修复互为双保险
2026-09-15 22:45:29 +08:00
TermiNexus 0c85e30739 fix(memhub): canary 校验现场补位宽诊断打印,新增 deep_detect 深诊断开关
- rc=1..6 现场打印高低 32 位分列的 canary 读回值与期望常量,现场可直接分辨 写入端高位为 0 与 比较端符号扩展 两类位宽不一致

- 新增 MemBuddy.deep_detect(构造形参默认 0):仅 --detection-deep 时启用每次分配全表探测与周期扫描,默认路径无额外开销
2026-09-15 19:11:59 +08:00
TermiNexus 746ca689a9 perf(memhub): alloc 周期全表扫描开关默认关闭,消除 O(det_count) 热点
MemBuddy.alloc 每 32 次分配进入的采样块内含记录表重叠全表扫描(while _det_count)与 [MEMDBG] 空闲链残留扫描,二者耗时全部落在 alloc 的 self 内。实测 alloc self=681.85e9 tick、25,419,348 次,约 26,824 tick/次,其中该采样块约 8.6e5 tick/次采样(占比超过 99%):按 32 采样只把次数降到 1/32,不改变 O(n^2) 量级。

新增编译期开关 MEMBUDDY_PERIOD_SCAN(默认 0,范式同 MEMBUDDY_THREAD_SAFE/MEMBUDDY_FILL_GUARD);置 1 时与历史实现逐字节一致。块内除诊断路径的 printf/fflush/exit 外无任何状态写入,记录追加在块外,故关闭不改变分配器语义,仅少两项诊断(等价能力仍由 free 内的 [MEMDBG] 重复归还检测与 self_check/check_alive_blocks/is_alive 提供)。

已确认 MEMBUDDY_FILL_GUARD=0 生效(非本次主因)、detection=0、无每次分配的 I/O;_split_to_order/_coalesce/_fl_push/_fl_pop/reset_to 经核对均为合法的 O(1) 或 O(被回收块数) 工作,无同类问题。
2026-09-14 15:11:43 +08:00
TermiNexus 40f5bf46e3 perf(llvmlite): Function 追加 NameLen 字段并新增 function_get_name_len 访问器
在 Function 末尾追加 NameLen(创建时一次算好,恒等于 strlen(Name)),FUNC_SIZE 72 改为 80,既有字段偏移不变(复用原 4 字节对齐填充)。

new_function 统一初始化以覆盖全部创建路径;Name 全仓无二次赋值,故 NameLen 与 strlen(Name) 终生恒等。新增 function_get_name_len 并在 __init__ 导出,供跨模块绕过 stub 取长度,替代对函数名的反复 strlen 热点。
2026-09-14 08:26:17 +08:00
TermiNexus c4fe8bd496 perf(llvmlite): 窥孔 alloca 判定加首字符短路并消除逐行 strlen
_peep_is_alloc_of 增加首字符预筛、两个调用点同步加守卫,避免逐行乘逐槽的 strncmp 与函数调用(该点实测约 439 万次 strncmp)。

_peep_replace_token 预扫改为以 NUL 为界单趟扫描,strlen(line_buf) 后移到命中之后,无命中调用不再求长(该点实测约 134 万次 strlen)。均保持逐输入等价。
2026-09-14 08:21:37 +08:00
TermiNexus c4c6eafd70 perf(llvmlite): _is_type_defined_in_module 同名判定先比首字符
已定义类型名链表的逐节点 strcmp 前加首字符必要条件短路(首字符不等即判不等),匹配结果逐字节不变,跳过绝大多数无谓比较(该点实测约 2500 万次)。
2026-09-14 04:09:16 +08:00
TermiNexus 215a1ca36a perf(memhub): 0xCD 分配填充守卫默认关闭,消除约 2278 万次 memset
MEMBUDDY_FILL_GUARD 属纯诊断填充(占全程序 memset 68%),默认由 1 改为 0;置 1 时填充代码逐字节不变。关闭不影响 self_check 块尾 canary 与 detection 标记(分别取自 MEMBUDDY_CANARY / MEMBUDDY_DET_MARKER,与 FILL_GUARD 解耦)。
2026-09-13 22:14:18 +08:00
TermiNexus 64194f8b78 perf(llvmlite): peephole 循环外提 strlen 并降低 strstr/strchr/strncmp 调用
_peep_last_ref_eq/_peep_replace_token 增加长度入参,由调用方(槽扫描外)预求 strlen(a_name/tok/repl),消除 766 万+182 万次重复求长;最后一个 % 改为单趟扫描(不再逐跳 strchr);strncmp 前先比首字符。

新增 _peep_is_alloc_of:以「先比名字再定位子串」等价替换按行 strcmp(_peep_alloc_name),把 strstr 从 O(槽数x行数) 降为仅命中行调用。语义逐输入等价。
2026-09-13 22:14:18 +08:00
TermiNexus 04a49ae612 perf(membuddy): 单线程默认关锁并内联热路径常量/移位,消除原子与重复调用
新增编译期开关 MEMBUDDY_THREAD_SAFE(默认 0=单线程):_lock/_unlock 常量折叠为空体,消除每次分配的原子 xchg/store;多线程置 1 行为逐字节不变。

_canary_pattern 折叠为 MEMBUDDY_CANARY_PATTERN 并在调用点内联(值逐位等于原 (lo<<32)|lo);_buddy_of/_split_to_order/alloc 内联 MEMBUDDY_MIN_BLOCK<<order;_coalesce 增加本阶空闲链表为空即 break 的等价提前退出。
2026-09-13 21:11:33 +08:00
TermiNexus ed67ecc656 perf(ast): 关键字查找改用哈希索引消除线性扫描
_kw_lookup 原为 45 项链表按名 strcmp 线性扫描(每个标识符 token 调用一次)。改为 FNV-1a 开放寻址索引,在 _init_keywords 由同一批 _kw_intern 一次性派生;查找期望 O(1) 且不分配内存;索引未建成时回退原链表扫描,语义与逐项比较一致。
2026-09-13 18:56:16 +08:00
TermiNexus 096cb3b913 perf(string/memhub): strstr 改候选位跳转、strcmp 指针短路、块大小改一次左移
string: strstr 用 strchr 跳候选位替代逐字节 strncmp(实测 strncmp 由 7.44 亿降至 1.65 亿,总调用 -15.1%)

string: strcmp/strncmp 入口加指针相等短路

memhub: _block_size_at_order 由循环移位改一次左移;alloc 对 size==0 给可区分诊断(非池耗尽)
2026-09-13 17:50:04 +08:00
TermiNexus ec6c19481a refactor(includes): string.vp 双 double 辅助函数注解统一为内建 double
t.CDouble 与内建 double 等价(map_t_type: CDouble -> f64),_dd_split_hi/_dd_mul/_dd_add/_dd_div/_dd_from_u64/_dd_pow10/_pow2/_atof_scale_stepwise/atof 全量改写为内建名,消除混用。
2026-09-11 22:46:59 +08:00
TermiNexus e30c23fe39 fix(includes): hashtable value 槽注解改三层联合,修正整数隐式转指针误报
value 槽(偏移 +16)存的是指针,原注解 t.CUInt64T|t.CPtr 按 X|t.CPtr=Ptr(resolve(X)) 合并为 i64*(本用于哈希整数槽),取下标得标量 i64 → return t.CPtr 撞「整数隐式转指针禁止」CastError。

改为 t.CUInt64T|t.CPtr|t.CPtr:外层再包一层 → i64**,取下标得 i64*(指针),与 t.CPtr 同级指针走 bitcast。三处:_slot_value 读 / _set_slot 写 / _resize 搬迁。
2026-09-11 22:28:36 +08:00
TermiNexus 21f9b7a078 修复 binascii.vp 2026-09-11 18:57:39 +08:00
TermiNexus 9a758a8f6c fix(includes): atof 改为正确舍入,对齐 sprintf 返回类型,补充 asm 约束说明
N4  string.vp:atof 重写为「u64 尾数 + 精确十进制幂 + 双 double(Dekker) 缩放」,
    正规数范围正确舍入(Python 原型 20 万组对拍 bit-exact),次正规回退逐步
    缩放;修十进制浮点字面量偏差(DBL_MAX 原 −6 ULP、e/ln2 各 ±1 ULP)
N13 viperlib.vp:export sprintf 返回 t.CVoid → t.CInt 并 return vsnprintf(...),
    与 CRT 及 includes/stdio.vp 的 extern declare 对齐(消除同符号签名冲突)
N10 asm.vp:为 pushall/popall/cpu_switch_context 补充约束说明(不改 clobber)
2026-09-11 17:40:26 +08:00
TermiNexus 52af24e85d fix(includes): asm 内联汇编输出占位符/clobber、vipermath 位重解释、string.split 容量参数
- asm.vp: inb/inw/inl 模板引用输出占位符 \ 并补 ~{rax}(原取硬编码 eax 且静默破坏 EAX,对齐 mm.vp cmos_read 模式)

- vipermath.vp: isnan/isinf 改 c.Load 位重解释(原 fptosi 位模式丢失导致恒返回 0)

- string.vp: split 增加 cap 容量参数,token 数 <= cap-1,防止越界写
2026-09-11 14:26:47 +08:00
TermiNexus 728d090815 feat(vqt6/vipermath/vipersimd/w32/requests): 自绘 Canvas/Graph3D/ChartView 与 Qt6 Charts、新增 gzip 与 torch-lite 模块, 修包装类悬垂指针与中文路径/exp/大文件下载
- vqt6: 包装类统一补 __new__ 堆分配, 修"创建函数栈帧 alloca"被存进字段/跨帧返回后 _ptr 悬垂(传给 QLayout::addWidget 等即崩溃); 菜单类按依赖顺序前移, menuBar()/statusBar() 改返回裸指针; 接入 Qt6 Charts 并新增 _bridge_canvas(Canvas 手绘板 / Graph3D 软件 3D 网络图 / ChartView 折线图); 新增自绘 QRadioButton(圆环+内点, 过渡动画)、剪贴板、应用级字体族 API
- 新增模块: gzip.vp(RFC1952/1951 解码器)、torch/(torch-lite 稠密张量 + conv/pool 前反向)
- vipersimd: 新增 scalar_fma/add/mul/sqrt_array 未向量化对照内核(与对应 SIMD 版逐位一致)
- w32: 新增 UTF-8/UTF-16 路径转换, CreateFile/CreateDirectory 走 W 系列, 修中文路径被按 GBK 误读; read_all 参数 max_count -> buf_size 并文档化"容量含终止符"契约
- requests: https 响应缓冲按需翻倍扩容(上限 256MB), 修 MB 级正文(如 MNIST .gz)被 4KB 静默截断
- vipermath: 重写 exp 为范围归约 + 短泰勒, 修负值发散(x=-30 得 3.7e10)与 NaN 触发 2^31 次缩放导致的卡死
- builtins: 新增 sizet/uzt 别名; stdarg: va_arg 参数 CType -> CPtr
- chore: 删除 vendored jpeg change.log
2026-09-10 23:09:05 +08:00
TermiNexus 7d092f25b1 feat(vqt6/requests/vipersimd/vthreading): 气泡聊天与流式 https 阶段改动、vipersimd FMA 批量内核, 清理 vqt6 copy 与 requests.vp 2026-09-09 21:10:14 +08:00
TermiNexus 44e0e898d3 fix(llvmlite): _append_cstr 缓存一致性校验, 修复多模块轮流写同一 buf/池地址复用导致 FunctionPrint 追加落到 NUL 后(LLvmLiteTest Test5/9 模块函数丢失) 2026-09-09 21:10:06 +08:00
TermiNexus f53c2216aa '基线重置,修复了一些 bug,fix(llvmlite): build_alloca_at_entry 在已终止入口块后在 br 后追加 alloca 致非法 IR嵌套循环(如 LoopTest.test_nested_loop 内层 for)内联新建循环变量 alloca 时,入口块已以 br 终止,block_append_text 把 alloca 追加到终止指令之后,生成不可达指令,llc 报 "instruction expected to be numbered %N or greater"。改用 block_insert_text_before_terminator:未终止等同追加,已终止插到终止指令之前;编号乱序由 RenumberSSA 重排处理。' 2026-09-07 15:05:50 +08:00
TermiNexus 62bceb6930 debug(chain): Renumber block 野值打印扩展为邻域快照(Params/Blocks/容器指针)
[DBGCHAIN] block 野值时一并输出 func.Params(Head/Tail/Count)、Blocks 容器/Tail/Count、func 指针,便于定位写入源。用后移除。
2026-09-05 15:04:46 +08:00
TermiNexus 21b4246ea4 debug(chain): RenumberSSA 全链验证 + PrintModule param/Params 野值护栏扩展
[DBGCHAIN] 临时诊断追加:RenumberSSA 前校验 func.Blocks/Lines/line.Buf/Len 指针合理性;PrintModule 增加 Function.Params 与 param 指针护栏(含归属函数名打印)。用后移除。
2026-09-05 14:58:32 +08:00
TermiNexus 2992674783 feat(types): rowptr/REnum 迁移工作区快照 + GSList/PrintModule 临时 DBGCHAIN 护栏
把此前未提交的 rowptr 迁移整体入库(42 文件,含 ast/llvmlite/hashlib/json/zlib 等签名 rowptr 化)。临时诊断(用后移除):linkedlist.vp GSList[T].append 链完整性四检、__module.vp PrintModule Function.Params/param 指针野值护栏([DBGCHAIN] 前缀 + fflush + exit)。
2026-09-05 14:51:40 +08:00
TermiNexus e2dd0fb18f feat(vqt6): QCheckBox 勾选动画(底色过渡+对勾淡入) 2026-09-03 11:57:03 +08:00
TermiNexus d9620ce43d feat(vqt6): QCheckBox 改自绘子类(矢量框+对勾,按QPalette配色) 2026-09-03 11:55:15 +08:00
TermiNexus ceb601a2d3 fix(vqt6): 浅色调色板 BrightText 改深色(尝试修对勾可见性) 2026-09-03 11:46:05 +08:00
TermiNexus 80799671f7 feat(vqt6): 新增 QApplication 主题调色板切换(原生控件配色) 2026-09-03 11:42:27 +08:00
TermiNexus 4a26a97ce2 feat(vqt6): 新增 vqt6_asset_url_utf8(QUrl::fromLocalFile 生成资源 URL) 2026-09-03 11:30:53 +08:00
TermiNexus 6280172a39 revert(vqt6): 移除 vqt6_app_dir_utf8(复选框指示器方案回退) 2026-09-03 11:28:45 +08:00