Commit Graph
72 Commits
Author SHA1 Message Date
TermiNexus c472ea9798 feat(gen): 支持 lambda 与 nonlocal 运行时 env 链式共享
- translate_lambda 提升 __lambda_{id}(i8* env, args...) + 捕获变量堆存储
- _lambda_scan_body 递归收集捕获变量;HandlesAssign 注册 lambda 闭包名
- translate_closure_call 支持带参(实参链表 + 函数类型 i32(i8*, args...)*)
- 嵌套函数参数支持(提升函数签名 + 参数 alloca)
- nonlocal 改为运行时 env 链式共享:父函数局部新建堆+重定向 VarEntry;
  父函数中为 nonlocal 时从父函数 env 读堆地址(_load_raw_var_ptr)
- 全局数组 initializer 按声明长度补齐补零
- LambdaCount 计数器迁移到 trans._lambda_count(修复 TPC 编译崩溃)
2026-08-11 16:10:05 +08:00
TermiNexus 5c6ba308ae fix(ClassGenMixin): register_method_meta 按位或合并装饰器元数据
同一属性名先 @property 再 @x.setter/@x.deleter 时整值替换覆盖 GETTER 位,property 拦截失效导致属性访问落空返回 None,llvmlite 收到 NULL Value 段错误(BuiltinDecoratorTest Phase A 崩溃)。改为 flags |= meta 合并,getter/setter/deleter 位共存。
2026-08-11 01:34:04 +08:00
TermiNexus 65d7342d0b fix(Gen): 联合类型数组下标按 8 字节步长(写路径 + CUInt64T|CPtr)
get_subscript_ptr 写路径 IsPtrElement 分支 GEP base 误用 alloca(栈地址),list append 只增 count 不写 data(dump 虚调用读 0xbaadf00d 崩溃),改为先 load 指针值再 GEP。另扩展 _is_ptr_element_annotation 识别 CUInt64T|CPtr 等 64 位标量联合,避免 GEP 步长 1 + trunc i8 截断指针(BuddyTest OOM/fill ptrs 数组 free 全部无效)。
2026-08-11 01:33:58 +08:00
TermiNexus 120a2d7ad7 fix(Phase2): Phase A 多遍重试修复同项目依赖翻译顺序
main.vp 先于其 import 的 mbuddytest.vp 翻译(文件系统顺序),跨模块函数返回类型精确解析因依赖 text.ll 未生成而 fail-fast。新增 Translator._deps_pending + text.ll 存在性探测区分依赖未翻译/真错误,Phase A 循环改多遍,依赖就绪后下遍重译命中。
2026-08-11 01:33:52 +08:00
TermiNexus b5657b3790 fix(TPV): 属性链按需过滤 + 字段查找回退顺序 + t.CArray 跨模块 CDefine
- ExprGenMixin: 属性链写入/读取按需过滤支持 base 为 Attribute(_resolve_attr_field_class 沿属性链递归字段注解类名回溯,联合类型 X|t.CPtr 简化 i8* 时 bitcast 回真实 struct)

- StructGenMixin: lookup_field_by_class 回退分支先查找字段再报错(原 error 在查找前无条件退出导致跨模块 SHA1 不匹配时永远失败)

- TypeGenMixin: _eval_const_int_expr 增加跨模块 CDefine 查找(t.CArray count 引用依赖模块 CDefine 如 SHA512_BLOCK_LEN)
2026-08-10 23:01:50 +08:00
TermiNexus cca468e910 feat(gen): 实现 super() 语义(super().__init__ / super().method 静态绑定父类)
- 新增 _translate_super_call:当前类取 self 变量注解类名(Mixin 字段
  跨类偏移不一致的替代方案),沿 MRO 跳过自身找父类方法,静态调用
  父类实现(不虚分派),this_adjust 字节偏移 + 参数 coerce
- translate_call 拦截 super().method 形态
2026-08-10 21:48:42 +08:00
TermiNexus 45ba3a4b5a fix(gen): TPV isinstance 运行链路修复(构造 vtable 槽/this_adjust/虚分派/NoVTable)
- 构造展开跳过 __vtable__ 字段,修复 Dog("dog") 覆盖 vtable 导致 isinstance 全失败
- this_adjust 改字节偏移法(delta=子类偏移-父类偏移),覆盖 vtable 父类
- _do_virtual_call 新增 vtable_base:读 vtable 用对象头,调用用调整后 self
- NoVTable 类无参构造分配内存而非返回 ConstZero
- ClassGenMixin:类体 CDefine 兜底注册 + vtable linkage 默认 external
2026-08-10 21:15:43 +08:00
TermiNexus 6677da99f7 refactor(gen): P6 方法化 - StmtGen/AssignGen/VarGen/ImportsGen/TranslatorGen Mixin
5 个新 Mixin(92 方法)承接 HandlesBody/If/While/For/Return/Nonlocal/Match/Enum/AnnAssign/AugAssign/Var/Imports/Translator/Main 的无状态函数与 _g_ 全局;15 个 Handles 模块改为一行委托(调用方零改动);Generator 组合扩展至 12 Mixin,__init__ 初始化 8 个新字段;BuildPipeline/main 注入 14 个模块 set_global_gen;修复 ImportsGenMixin 与 TypeGenMixin 的 CurrentFile 重复字段冲突(改 HandlesType 委托,延迟 import 规避循环依赖)。
2026-08-10 18:42:07 +08:00
TermiNexus 451be82b32 fix(gen): 清理 ASan 二分调试检查 + StdlibAlloc 跨 Mixin 委托 + 调试链修复
1. 移除 ClassGenMixin 泛型判断前/模板注册后与 Phase1 五处 gen 完整性二分检查(GlobalFuncs 调试残留,Mixin 方法体访问非自身字段违反块内索引约束)。2. ClassGenMixin._register_struct 读 self.StdlibAlloc(StructGenMixin 字段)改经 HandlesStruct.get_stdlib_alloc 委托,新增 StructGenMixin.get_stdlib_alloc。3. 含 P5 后累积修复(VpiReader ParamCount/越界封堵等)。
2026-08-10 18:09:23 +08:00
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 24c1aada30 refactor(gen): P3 ExprGenMixin - HandlesExpr/ExprOps 51 函数迁移 + 委托层
HandlesExpr 45 个表达式函数(translate_value/subscript/attribute 等)
与 HandlesExprOps 6 个运算符函数(try_operator_overload/translate_binop
等)迁移为 ExprGenMixin 方法;本模块调用 self 化、外部模块调用保留
前缀,_lookup_cross_module_cdefine(490 行)完整迁移。旧函数保留为
_g_gen 单例委托。Generator 多继承追加 ExprGenMixin(4 Mixin 组合)。
2026-08-10 02:11:26 +08:00
TermiNexus 34a37358c9 refactor(gen): P2-2 StructGenMixin - HandlesStruct 53 函数迁移 + 委托层
HandlesStruct 全局注册表/可见性状态迁入 StructGenMixin 字段,
53 个结构体注册/查找/字段函数迁移为方法(register_struct/find_struct/
lookup_field/get_mro_chain 等);旧函数保留为本地 _g_gen 单例委托。
Generator 多继承追加 StructGenMixin(现为 3 Mixin 组合)。
2026-08-10 01:55:15 +08:00
TermiNexus e1ef67d013 refactor(gen): P2 TypeGenMixin 迁移 + 全局单例委托机制
Generator 改 @t.NoVTable 多继承(BaseGenMixin + TypeGenMixin)组合;
HandlesType 54 个类型函数迁移为 TypeGenMixin 方法(全局状态迁入
gen 字段),旧函数保留为委托层。单例经 HandlesType 模块级 _g_gen
注入(BuildPipeline/main),避免 TPC 包短名未注册与 Generator
类/模块名歧义导致的编译链接问题。bootstrap 38/38 通过。
2026-08-10 01:46:28 +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 37626bca63 feat(gen): P1 Generator 骨架 - BaseGenMixin/Generator 拆分与 BuildPipeline 接入
引入 lib/core/Gen/ 对象化骨架(对象化 P2 起点), BuildPipeline.Generate
接入 LLVMCG 生成链路; Generator.InitBaseGen 内联初始化(规避 Viper 继承
不转发父类方法符号的链接问题)。
2026-08-10 00:28:51 +08:00
TermiNexus 695699f01e fix(build): 统一 SHA1 口径消除符号前缀不一致(undefined reference)
- Phase2 App 源文件 SHA1 改用 IncludesScanner.compute_file_sha1(CRLF→LF 归一化), 与 StubMerger 对同一批文件口径一致; 此前用 Utils.compute_sha1(原始字节) 在 CRLF 文件上产生不同前缀
- compute_file_sha1 BUF_SIZE 128KB→1MB(与翻译侧 SRC_BUF_SIZE 一致), 消除大文件尾部变更不触发缓存失效
2026-08-09 22:54:32 +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 da23160ca6 fix(handles): 变参调用按 Win64 8 字节槽位提升(整数 sext 到 i64, f32 提升 f64)
根因: 变参按窄类型(i32)传入, LLVM 只写 4 字节进 8 字节栈槽, 高 4 字节残留旧数据;
viperlib %d 强制 va_arg 读 i64 暴露残留高位(如 0x400921FB00001000, 高位是 PI 残留)。
修复: found_func.IsVarArg==1 且参数在变参位时提升, 对齐 TPC/Python-llvmlite ABI 自动提升。
SprintfTest R1-R4 PASS, DefineTest PAGE=4096 验证通过。
2026-08-09 04:06:17 +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 e79b676e51 feat(handles): 实现 c.CIf/c.CIfdef/c.CIfndef 编译期宏(对齐 TPC HandlesIf)
- 常量表达式求值: CDefine/跨模块 CDefine/平台宏 + 算术/比较/逻辑/位运算
- 编译期剪枝: 命中分支只编译, elif 递归, 未定义名特判(CIfdef 走 else/CIfndef 走 then, 不报错)
- 求值失败(运行时变量)回退运行时翻译(HandlesExprCall: CIf 真值比较/CIfdef 恒真)
2026-08-09 03:39:18 +08:00
TermiNexus 57d6ffefad fix(TPV): c.Set 实现赋值语义 a=b(三形态: c.Deref左值/Name/Attribute), 修复 undefined reference to Set; 函数默认返回/裸return按返回类型生成浮点零值(ConstFloat 0.0, 修复 llc value doesn't match) 2026-08-08 21:35:59 +08:00
TermiNexus 59ae99f6d7 fix(TPV): 浮点CDefine存储与浮点调试打印改用CRT stdio(绕开viperlib %g格式化bug); REG-SRC 拆位模式打印定位 float_val 覆写假象 2026-08-08 20:38:24 +08:00
TermiNexus 92ba3af752 fix(TPV): 浮点 CDefine 注册多方案绕开 pool 覆写与跨模块 double 传递问题 - 查表/str_val/源文件重读+atof_out 输出参数; PRE-TR/PRE-ML/REG-SRC 定位插桩; 记录浮点节点构造值表 2026-08-08 19:42:54 +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 aa6eee54e9 fix(compiler): 支持模块限定泛型类类型注解 numpy.ndarray[t.CDouble]
Subscript value 为 Attribute 时仅支持 t.CArray/t.Callable,模块限定
泛型类(numpy.ndarray[T])触发 fail-fast。提取 _resolve_generic_subscript_ty
辅助函数,Name 泛型类与 Attribute 泛型类共用(收集实参→mangled→特化)。
2026-08-08 16:41:47 +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 94b84c7dc1 refactor(compiler): c.LLVMIR 改无返回值直接嵌入 IR 文本(不做指令解析)
translate_c_llvmir 重写:LInp 替换为值引用文本、LOut 分配唯一 SSA
寄存器 %llvmirN 并自动 store 写回变量 alloca;模板经 block_append_text
直接嵌入当前基本块;返回 None(ret_ty 废弃)。删除 9 个旧指令解析
辅助函数。
2026-08-08 16:10:29 +08:00
TermiNexus 3a6296d638 fix(compiler): 支持裸名 float/double 映射 + 前向声明时序 + 类型解析 fast-fail traceback
- resolve_annotation_type Name 分支与 map_t_type 补小写 float(→f32)/double(→f64),
  float(0.0) 转换原误映射 f64 改为 f32(vipermath fmodf result: float 修复)
- forward_declare_functions 解析签名期间临时切 declare_only=1,
  签名触发的泛型特化只注册结构体,方法体延迟补译(numpy _empty_like 前向引用修复)
- HandlesAnnAssign 变量类型注解解析失败改 fatal_error(Python traceback)
- c.LLVMIR 未识别指令改 fatal_error 立即终止(原静默返回 None)
2026-08-08 15:59:08 +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 ba6beb439c feat(compiler): __sizeof__ 支持实例接收者与泛型类引用(self/obj 实际类型 + Stack[T] 特化) 2026-08-08 12:26:44 +08:00
TermiNexus 51d0ef2c18 fix(compiler): __sizeof__ fast-fail 改为 Python traceback 风格
- __sizeof__ 处理器两个错误分支(已注册但大小 0 / 类型未注册)从 VLogger.critical(╠ 树形格式)改为 HandlesType.fatal_error(TypeError + File/line + 源码行 + 立即终止)

- 修复: 原 CRITICAL 不退出,会继续走到 _fail_method_ret_ty 二次报错,掩盖根因
2026-08-08 12:00:39 +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 60493d6ae5 fix(compiler): 支持多 includes 目录,修复 G4 g4node 未注册 SHA1
- Config.vp 解析 includes 数组全部元素为空格分隔 IncludesDirs(首元素仍存 IncludesDir 兼容单目录)

- IncludesScanner 逐目录递归扫描合并,FileEntry.IncDir 记录所属 includes 根目录

- StubMerger 存储新增 IncDir 并行数组(MAX_INC_DIR_LEN=512),容量 256→1024

- Phase2 预注册/3.5 按需编译改用逐条目 IncDir 拼接源路径(空串回退 includes_dir)

- HandlesImports import 未注册错误显示行内内容 + App 兄弟模块文件豁免

- 新增 TransPyV 自身 project.vpj
2026-08-08 10:31:44 +08:00
TermiNexus ea8bb0b3a4 fix(compiler): 方法返回类型三级来源重构(移除 _infer_method_ret_ty 按名推断)
方法返回类型改为:当前模块函数 → text.ll define → vpi stub 返回注解缓存,全部未命中 fail-fast 终止(无白名单、无 hook 编译器)。

1. VpiReader 文本提取缓存 + 按需加载 + 动态扩容 + 无注解默认 i32
2. 类名解析修复(继承括号不入类名、模块级函数清空类名)
3. SetTempDir 提前到 Phase1(json 在 Phase1 翻译,Phase2 太晚)
4. 内置方法 __before_init__/__init__/__new__ 固定返回类型
5. 泛型归一化匹配 + _subst_template_arg 模板参数替换
6. 调试插桩 VPI_DEBUG_ENABLE 开关(默认关闭)
2026-08-08 09:43:15 +08:00
TermiNexus a9ebb20790 "fix(compiler): vpi 返回注解缓存按需加载 + 动态扩容
1. _lookup_method_ret_ty_via_vpi 查缓存前按需读取
   {temp_dir}/{sha1[0:2]}/{sha1}.vpi 填充缓存,覆盖模块自身翻译时
   (同模块方法调用、定义在后)stub 尚未注入的场景
2. 缓存容量由固定 4096 改为 stdlib.realloc 翻倍动态扩容(上限 1M),
   根治写满后条目静默丢弃导致 JsonValue._pool_alloc 等查不到"
2026-08-08 02:24:12 +08:00
TermiNexus 09833a80eb feat: 支持 t.Callable 函数指针类型注解、赋值与间接调用(含返回类型签名缓存) 2026-08-08 01:12:40 +08:00
TermiNexus 3197152d4e fix: vpi stub 注解解析改用被读模块自己的 imports 上下文,根治跨模块误报 2026-08-08 00:51:19 +08:00
TermiNexus 95a52bb9f6 fix: vpi 注入错误上下文帧携带触发 import 的真实行号与行内容 2026-08-08 00:38:06 +08:00
TermiNexus 6dbcbe247e fix: vpi stub 注入期间修正错误归因,多级堆栈显示编译上下文与被读 stub 真实位置 2026-08-08 00:33:29 +08:00
TermiNexus 94ae2aee52 refactor: 提取 _lookup_sha1_from_modname_raw,消除 HandlesExpr 重复的模块 SHA1 查找段 2026-08-08 00:02:39 +08:00
TermiNexus 0665ee1164 refactor: StubMerger 复用公共工具(LookupSha1ByModName 委托、_sliced_path 复用 slice_subdir、_PathToModuleName 下沉) 2026-08-08 00:02:39 +08:00
TermiNexus 96e045889e refactor: 提取 is_vp_or_py_at/JoinPath/read_file_to_buf 公共工具,消除 IncludesScanner/Phase2 重复代码 2026-08-08 00:02:39 +08:00
TermiNexus e2bdfc1c4e chore: 移除 DDEBUG/MATCHDBG 调试日志残留 2026-08-07 23:29:39 +08:00
TermiNexus 989e898a93 refactor: 提取公共 bytes_to_hex/nibble_to_hex_char,消除三处重复的 SHA1 hex 转换 2026-08-07 23:29:39 +08:00
TermiNexus 7d6917762c fix(core): 数组下标 <32 位索引 zext 到 i32,修复字节索引越界 2026-08-07 22:36:28 +08:00
TermiNexus d6690c6e39 feat(core): for 支持定长数组与列表字面量迭代,其余字面量 fast-fail 2026-08-07 22:36:28 +08:00
TermiNexus 762d535a86 fix(core): 局部数组+列表字面量改走逐元素初始化,消除 list[T] 误特化崩溃 2026-08-07 22:36:22 +08:00
TermiNexus 9322ac469f fix(core): 泛型特化翻译并入模板模块 imports,消除跨模块误报 2026-08-07 22:36:22 +08:00
TermiNexus adff2f35c4 fix(core): print 类型感知格式化,跨模块未导入 fast-fail,报错行号防御 2026-08-07 22:36:16 +08:00