TermiNexus
|
4c0dfb222a
|
fix(traceback): 修复 Install 注入位置与 Phase1 声明缺失
traceback 不被用户代码 import,--clean/--clear-cache 后 Phase1 不生成其声明,main 入口解析不到 Install 的 sha1 前缀;改为 --traceback 时把 traceback 及其传递依赖强制纳入 Phase1。Install 调用改用函数体当前 builder 发射,避免另建 builder 插到块尾导致 call 落在 ret 之后、ASan opt 报非法 IR。同时统一 global_ctors 元素类型为 {i32, i8*, i8*} 以匹配 ASan 的 appending 全局。
|
2026-10-19 18:43:31 +08:00 |
|
TermiNexus
|
d02e6f21e3
|
fix(traceback): 从 temp_dir 扫描 .vpi 定位 traceback 模块
sig_files 可能不含 include 的 .vpi;改为直接扫描 temp_dir/*.vpi 匹配 'Module: traceback',确保 main 模块拿到 Install 符号。
|
2026-10-19 18:34:34 +08:00 |
|
TermiNexus
|
2beb5d724f
|
debug(traceback): worker stderr 输出并按 fail-fast 注入 main
并行 worker 的 _vlog 不汇总;改为 stderr 直接输出 enabled/InstallSymbol;main 找不到 Install 时明确报错。
|
2026-10-19 18:31:45 +08:00 |
|
TermiNexus
|
2051c2237e
|
debug(traceback): 输出 InstallSymbol 赋值日志
每个文件打印 TracebackInstallSymbol,确认 main 模块是否拿到 3fe9e5dc351f3d26.Install。
|
2026-10-19 18:30:38 +08:00 |
|
TermiNexus
|
39aebc03d7
|
fix(traceback): main 注入支持从 ModuleSha1Map 解析 Install
TracebackInstallSymbol 未设置时,用 Gen.ModuleSha1Map['traceback'] 拼出 {sha1}.Install,确保 main 入口注入生效。
|
2026-10-19 18:25:17 +08:00 |
|
TermiNexus
|
1f03fc1977
|
fix(traceback): 通过 .vpi 内容定位 traceback 模块 SHA1
sig_files/source_module_sig_files 的值是 .vpi 路径,basename 不含 traceback;改为读取前 512 字节匹配 'Module: traceback'。
|
2026-10-19 18:19:31 +08:00 |
|
TermiNexus
|
3da522a549
|
feat(traceback): 在 main 入口直接调用 Install()
MinGW 下 .ctors.65534 不被 CRT 执行,导致 Ctrl+C 无栈;改为编译期把 traceback_sha1.Install() 注入 main 入口,不依赖 .ctors/.init_array。
|
2026-10-19 17:31:12 +08:00 |
|
TermiNexus
|
0903491df3
|
fix(extern): 从 temp_dir 全量 .vpi 收集 extern
sig_files 键集合不含 include 模块(win32process 等);直接扫描 temp_dir/*.vpi 补全 export_extern_funcs,确保 ReadProcessMemory/StackWalk64 裸名。
|
2026-10-19 16:12:30 +08:00 |
|
TermiNexus
|
5a56198937
|
fix(extern): sig_files 不再按 App sha1_map 过滤
sha1_map 只含 App 源文件,按它过滤会丢弃 include 模块的 .vpi,导致 ReadProcessMemory/StackWalk64 等跨模块 extern 无法识别为裸名。
|
2026-10-19 15:45:58 +08:00 |
|
TermiNexus
|
d312d97bca
|
fix(extern): 初始化并同步 LlvmGen._export_extern_funcs
translator 可能尚无该属性;getattr 初始化后 clear+update,并把同一 dict 引用同步到 LlvmGen,确保 _mangle_func_name 看到跨模块 extern。
|
2026-10-19 15:29:38 +08:00 |
|
TermiNexus
|
f91fb7dcca
|
fix(extern): 原地更新 export_extern_funcs
translator 与 LlvmGen 共享同一 dict 引用;替换属性导致 Gen 仍指向旧空 dict。改为 clear+update,确保跨模块 extern 裸名生效。
|
2026-10-19 15:07:54 +08:00 |
|
TermiNexus
|
ed76f77218
|
fix(extern): worker 合并 sig_files 补全 extern 集合
共享 export_extern_funcs 可能因 sig_files 过滤缺少 include 模块(win32process.ReadProcessMemory 等);worker 内从 sig_files 合并补全。
|
2026-10-19 14:55:48 +08:00 |
|
TermiNexus
|
8b5bbbc417
|
fix(mangle): 模块限定的 extern 调用保持裸名
stdlib.system / win32process.ReadProcessMemory 等显式模块限定调用即使本模块有同名 def 也返回裸名。
|
2026-10-19 14:44:10 +08:00 |
|
TermiNexus
|
d1eb1608d0
|
fix(mangle): 本模块普通 def 优先于同名 extern
只有跨模块 extern 才返回裸名;os/_win32 与 os/__init__ 自己定义的 getcwd/system 等普通 def 恢复 SHA1 前缀,消除重复符号。
|
2026-10-19 14:31:32 +08:00 |
|
TermiNexus
|
8037d0e108
|
fix(mangle): _mangle_name 仅 extern 保留裸名
_export_funcs 残留不再导致 getcwd/system 等普通 def 生成裸名,两个 os 模块恢复 SHA1 区分。
|
2026-10-19 14:13:27 +08:00 |
|
TermiNexus
|
21c76541e5
|
fix(mangle): 仅 extern 函数保持裸名
删除 _export_funcs 裸名分支,普通 def/export def 恢复模块 SHA1 前缀,消除 os getcwd/system 等重复符号。
|
2026-10-19 12:54:16 +08:00 |
|
TermiNexus
|
80b7ce5bb1
|
fix(mangle): 普通函数清除裸名导出集合
getcwd/chdir/system 等 os 包装函数不再进入 _export_funcs 裸名集合,按模块 SHA1 区分,消除重复符号。
|
2026-10-19 12:45:06 +08:00 |
|
TermiNexus
|
a9f5d026c4
|
fix(mangle): extern 函数名一律裸名
_export_extern_funcs 命中直接返回裸名,避免 ReadProcessMemory/StackWalk64 等跨模块调用被加 SHA1 前缀。
|
2026-10-19 12:35:38 +08:00 |
|
TermiNexus
|
a2cde67bc5
|
fix(func): 修复 extern 裸名未定义;打印方法体失败内部栈
避免 RawFuncName 未绑定;方法体异常在抛出前 traceback.print_exc() 输出完整调用栈。
|
2026-10-18 23:03:32 +08:00 |
|
TermiNexus
|
d64fe2ee99
|
fix(func): extern 声明与登记统一使用裸名
RawFuncName 用于 _export_funcs/_export_extern_funcs/MangledName,避免 StackWalk64/ReadProcessMemory 等声明被加 SHA1 前缀。
|
2026-10-18 22:57:02 +08:00 |
|
TermiNexus
|
c2dc9927ef
|
fix(func): extern def 使用裸名并登记跨模块
extern def longjmp/_setjmp/GetEnvironmentVariableA 等不再加 SHA1 前缀;声明加入 _export_funcs 与 _export_extern_funcs,链接可解析到 C/系统符号。
|
2026-10-18 22:44:57 +08:00 |
|
TermiNexus
|
0beb8f5e55
|
fix(func): extern def 不再生成空函数体
stdio.printf 等 extern 声明此前被发射为 ret 0 的空 define,覆盖 C runtime 实现导致所有输出为空;现在只保留 declare。
|
2026-10-18 22:37:21 +08:00 |
|
TermiNexus
|
d4fc66fe3c
|
fix(link): _merged.obj 存在时仍链接 include 的 .obj
_merged.obj 只合并非 include 模块;此前命中该分支后跳过 include 的 .obj,导致 argparse.print_help 等符号未链接进 exe。
|
2026-10-18 22:13:50 +08:00 |
|
TermiNexus
|
2e80424d67
|
refactor(handles): 删除 CSpecialCallHandle/TSpecialCallHandle
EmitRawCopyLlvm 改为模块级函数;删除 c./t. 语法糖处理类及 BaseTranslator 实例化,全仓零引用。
|
2026-10-18 21:51:10 +08:00 |
|
TermiNexus
|
d15ae02f3e
|
refactor(stub): 移除 t./c. 前缀剥离兼容
c.* 退役后 stub 生成不再特殊处理 t./c. 前缀,按普通属性名输出。
|
2026-10-18 21:48:59 +08:00 |
|
TermiNexus
|
c94cdd7174
|
refactor(c): 删除 c.* 及对应的裸名语法糖处理分支
移除 c.CIf 判断、Addr/Load/Deref/DerefAs/PtrToInt 裸名分支及 _HandleC* 处理函数;c. 前缀退役后不再保留任何处理路径。
|
2026-10-18 21:48:37 +08:00 |
|
TermiNexus
|
f32235274b
|
refactor(expr): 删除裸名 Set 语法糖及 _HandleCSetLlvm
Set 原本对应已退役的 c.Set;裸名 Set 与用户类 ast.Set 冲突,直接删除,Set(...) 走正常类构造。
|
2026-10-18 21:45:56 +08:00 |
|
TermiNexus
|
5f5d24f5dc
|
fix(expr): 导入的 Set 类优先于内建语法糖 Set
ast.Set 等用户符号存在时不再走 _HandleCSetLlvm,避免 Set(...) 被误判为内建写入语法。
|
2026-10-18 21:44:23 +08:00 |
|
TermiNexus
|
6df2af8746
|
fix(type): 补齐 float8/16/32/64/128 内建短名
float16(val) 等表达式转换与注解可解析为 CFloat16T/half。
|
2026-10-18 21:30:51 +08:00 |
|
TermiNexus
|
fe10e4dcd2
|
fix(renum): 返回类型按结构体指针解析
REnum 预登记为 IsRenum/IsStruct;类型解析先判 REnum;_EmitREnumLlvm 复用已有结构体实例,修复 LLVMType* 退化为 i32*。
|
2026-10-18 21:17:03 +08:00 |
|
TermiNexus
|
b6d6d5ac6b
|
fix(struct): 修复 _Undefined 检查中的未定义变量 constant
列表初始化器中应检查元素 c.constant,原代码引用裸名 constant 导致 NameError。
|
2026-10-18 20:56:21 +08:00 |
|
TermiNexus
|
de89b26bb7
|
fix(generic): 特化实参统一 mangling,失败立即终止
泛型实参在特化名/spec_key/type_map 中统一为 i32/指针形态,list[int].get 返回 i32;特化与翻译失败不再吞异常,include 缺失 .ll 直接终止。
|
2026-10-18 20:40:23 +08:00 |
|
TermiNexus
|
88645fe7da
|
fix(func): extern/export 声明跳过掉出末尾检查
FunctionDef.Extern/Export 为真时视为声明型函数,不再要求显式 return。
|
2026-10-18 20:18:36 +08:00 |
|
TermiNexus
|
da638a018b
|
fix(match,sizeof): 修复 MatchClass 属性名与 LLVM 基本类型 sizeof
Match 分支改用 c.pattern;__sizeof__ 对 i1/i8/i16/i32/i64/f32/f64/ptr 直接返回字节数。
|
2026-10-18 20:13:37 +08:00 |
|
TermiNexus
|
369afb5011
|
fix(generic): 恢复泛型特化发射主路径
补回 _specialize_generic_class 的 deepcopy/改名/字段与方法 T 替换/_EmitClassLlvm 发射逻辑,list[...].__len__ 与 get 正常生成;源码不再支持 CPtr[...],统一写 T*;编译错误只由主进程输出一次。
|
2026-10-18 19:50:32 +08:00 |
|
TermiNexus
|
09553401e7
|
build(vast_c): 使用 mingw64 gcc 重建 _parser.pyd
修复 32/64 位 DLL 不匹配导致的 ImportError。
|
2026-10-18 19:29:49 +08:00 |
|
TermiNexus
|
c8e49a60ed
|
feat(vast): C 解析器补齐 T | None 与语句级声明
支持 T | None、typedef/define/static/export/extern/inline 变量形态;C 解析失败不再回退纯 Python,直接 fail-fast;同步重建 _parser.pyd。
|
2026-10-18 19:26:52 +08:00 |
|
TermiNexus
|
109e71a477
|
refactor: 删除保留性兼容兜底,仅保留新语法主路径
移除 len(list) 直读 __count__、list 方法裸模板回退、旧 C* 文本标记兼容、旧联合兼容;vast 扩展过期直接报错,已重建 _parser.pyd。
|
2026-10-18 19:22:32 +08:00 |
|
TermiNexus
|
f8d84a1941
|
fix(generic): 特化缓存声称完整但方法缺失时强制补发
将缓存临时标记为 declare_only 后重新调用 _specialize_generic_class,触发方法体生成。
|
2026-10-18 19:13:29 +08:00 |
|
TermiNexus
|
92e467ae4c
|
fix(cli): 翻译失败只输出单行错误
worker 与 batch 异常不再打印 traceback.format_exc,避免与主进程汇总重复输出。
|
2026-10-18 19:09:51 +08:00 |
|
TermiNexus
|
8cdef178a5
|
fix(generic): 缺少特化类型信息时从特化名派生
_generic_class_spec_type_info 无写入点,改为从 ClassName 解析 type_args/type_names 后继续补发方法体。
|
2026-10-18 19:09:07 +08:00 |
|
TermiNexus
|
62e38c4367
|
fix(generic): 特化跳过时记录具体原因
模板未注册/缓存已完整/缺类型信息/方法名不一致等分支均写入 _generic_spec_error,供 Undefined method 报文展示。
|
2026-10-18 18:40:20 +08:00 |
|
TermiNexus
|
7a063d916b
|
fix(generic): 特化补全 type_names 并暴露失败原因
缺少特化缓存时传原始实参名生成完整特化;方法查找失败报文附加特化异常,便于定位模板/实参问题。
|
2026-10-18 18:36:25 +08:00 |
|
TermiNexus
|
10b3f90a24
|
fix(generic): 方法调用时缺少特化缓存则从头生成
list[AST*].get 等特化方法未生成时,调用 _specialize_generic_class 补全整个特化,而不只处理 declare_only 缓存。
|
2026-10-18 18:32:44 +08:00 |
|
TermiNexus
|
ceb557314a
|
feat(type): 支持 T | None,等价于 T
仅允许一侧为 None 的联合;解析时剥离 None 后按剩余类型处理,其他联合仍 fail-fast。
|
2026-10-18 18:10:01 +08:00 |
|
TermiNexus
|
7911b4de54
|
feat(cli): 编译期错误按 Viper 模拟堆栈输出
TypeError/SyntaxError 输出 Traceback (compile-time) + File/line + 源码行 + Err,不再打印 Python 内部调用链。
|
2026-10-18 18:07:19 +08:00 |
|
TermiNexus
|
0bded58999
|
refactor(type): 全面清理旧联合与 t/c 标记判断
审计并修复 23 个文件:类型注解中的 T1 | T2 一律 fail-fast;typedef/define/export/extern/static/const/volatile/attribute 优先读取 Markers/Attributes/ByteOrder/BitWidth;指针统一 CPtr/rawptr/CRef/CTempRef/CArrayPtr/CAutoPtr Subscript;stub 输出统一新语法。
|
2026-10-18 18:01:20 +08:00 |
|
TermiNexus
|
a410de2cf7
|
fix(method): list 特化缺方法时回退裸模板
list[AST*].get 等特化方法未生成时,回退调用 list.get,避免 Undefined method。
|
2026-10-18 17:32:44 +08:00 |
|
TermiNexus
|
0f1a2e9fbb
|
fix(len): opaque list 特化按字节偏移读取 __count__
特化结构体尚未展开布局时,先 bitcast 到 i8* 再按偏移 8 读取 __count__,避免 opaque struct 的 getelementptr 失败。
|
2026-10-18 17:29:44 +08:00 |
|
TermiNexus
|
4346e3fb27
|
fix(len): list 特化直接读取 __count__ 字段作为长度
泛型特化方法未生成时,len(list[...]) 按结构体偏移直接读取 __count__,不再误报没有 __len__。
|
2026-10-18 17:24:07 +08:00 |
|