TermiNexus
|
ab0f37e1a8
|
更新,可自举
|
2026-08-27 09:48:20 +08:00 |
|
TermiNexus
|
a6e28c71f5
|
将部分 while 简化为 for
|
2026-08-23 00:21:17 +08:00 |
|
TermiNexus
|
748eda9c69
|
修正 Stub 的 define 导入
|
2026-08-22 10:36:05 +08:00 |
|
TermiNexus
|
f8bca62eb0
|
修正了 import 路径,除 Gen
|
2026-08-22 02:18:15 +08:00 |
|
TermiNexus
|
82a86761b9
|
feat(tpv): 语言内协程 M1-M7 移植——async/await 状态机 + 异常传播 + 帧池
- M1: async def -> 帧结构体 + create_/resume_ 状态机 + coro.coro_run 内联
- M2: async 参数、嵌套 await 提升 __await_N、If/While 内 await
- M3: For 内 await(range->While)、coro_sleep 轮询挂起、coro_destroy 回池
- M4: raise 存码、await 子帧异常传播、coro_exception、coro_gather
- M5/M6: try/except 链式匹配 + as e 绑定 + 异常类型码
- M7: try/finally、异常消息 msg 槽、自定义异常类、帧池复用
|
2026-08-22 00:34:32 +08:00 |
|
TermiNexus
|
89995dffde
|
refactor(gen): 去除 Handles 委托层——链式化 + GenTypes/GenApi 迁移
- Gen 内部 1742 处 HandlesX.func() 改 self.Gen.Y.method() 链式调用
- 数据类/常量迁移 GenTypes.vp(10 类 + CLASS_META_*/META_*/SEQ_KIND_*/FIELD_MAX 等)
- 管线/保留文件经 GenApi.vp 模块级入口(48 函数带类型注解,从 Gen 方法签名自动生成)
- 删除 26 个纯委托 Handles 文件,仅留 5 个实体文件(Base/Translator/Expr/ExprCall/ExprCallTable)
- 修复字段分裂:TypeGenErr CurrentFile/TraceCount 链式化;CallGenBase TempDir/Cexport 真源化
|
2026-08-21 06:32:40 +08:00 |
|
TermiNexus
|
281d26915c
|
fix(gen): 分派改回 Handles 委托壳——NoVTable 同链跨类 self 调用仍 mangle 失败
bootstrap 链接报 undefined symbol: StmtGenDeclMixin.translate_return/if/while/for。
实测 Viper NoVTable 静态绑定下,StmtGenMixin 调父链(StmtGenDeclMixin→StmtGenCifMixin)
方法仍 mangle 成 StmtGenDeclMixin 前缀符号(定义却在 StmtGenCifMixin),同继承链
也不可靠。分派统一改经 Handles 委托壳桥回 gen 单例;HandlesReturn 补 translate_return 壳。
|
2026-08-20 07:02:43 +08:00 |
|
TermiNexus
|
9f396f4874
|
refactor(gen): 完成 P6 机械化迁移——Handler 类并入 Gen Mixin,语句实现单层化
- 10 个 Handler 类主方法迁入 Gen:Assign/AnnAssign/AugAssign→AssignGenMixin,
If/While/For/Return→StmtGenCifMixin,Match→新建 MatchGenMixin(注册 Generator MRO),
Imports→ImportsGenMixin;方法体 self.Trans→trans,签名加 trans 首参
- 分派改:StmtGenMixin.translate_stmt 同链 self.translate_xxx + 跨链经 Handles 委托壳
(NoVTable 静态绑定约束);ExprCall 分派改走 ExprCallCall 壳
- 清理:HandlesTranslator 删 11 个 Handler 字段与 _init_state 创建段;
StmtGenCifMixin 删 5 个 NewXxxHandle 工厂;main/BuildPipeline 补 HandlesAssign._g_gen 注入
- 委托壳保留:跨 Mixin 桥(Assign/AnnAssign/AugAssign/Match/Imports)待编译器缺陷修复后删
|
2026-08-20 06:40:37 +08:00 |
|
TermiNexus
|
e07ea491a5
|
chore(gen): 全量备份——Handles 委托壳瘦身与单例注入统一
- 删除 Handles 各模块已迁移至 Gen 的旧函数体,保留一行委托壳(25 文件 -798 行)
- main.vp / BuildPipeline.vp 全局单例注入改为 _g_gen 直接赋值
- 机械化迁移测试前的基线备份
|
2026-08-20 05:33:59 +08:00 |
|
TermiNexus
|
cf6c917e83
|
fix(gen): 泛型特化类记录触发文件,作废重译正确重置 MethodsEmitted
ld.lld undefined symbol list[ast.ClassDef|t.CPtr].* 根因:Phase A _deps_pending
作废重译时 reset_module_methods_emitted 按当前文件 sha1 精确匹配,特化类
ModuleSha1=模板 sha1(方法名带模板前缀)匹配不到,MethodsEmitted 残留 1
→ 下遍 _specialize_generic_class 补译分支(==0 才补译)跳过 → text.ll 只有
call 无 define → 链接失败。
修复:StructEntry 新增 SpecTriggerSha1(特化类触发文件 sha1),
_specialize_generic_class 全部返回路径经 _record_spec_trigger 记录,
reset_module_methods_emitted 按 ModuleSha1 或 SpecTriggerSha1 匹配重置。
|
2026-08-20 04:04:40 +08:00 |
|
TermiNexus
|
e770fef0f7
|
fix(gen): 恢复 ClassGenBase 基类别名解析(_resolve_base_alias)
ClassGenMixin 拆分(47ac2dd)时 _resolve_base_alias 丢失:_get_parent_class
/_collect_parents 不再解析 from-import 别名基类(from t import CStruct as cs
→ class CsPoint(cs)),'cs' 被当真实父类 → find_struct('cs') 失败 → 类 defer
永不注册 → 变量注解解析失败(EdgeCaseTest Test12 回归)。恢复
_resolve_base_alias 并在两处调用;_collect_parents 增 trans 参数透传(别名
解析需 from_imports)。TypeGenResolve 增 [DBG-ANNOT] 插桩待验证后移除。
|
2026-08-20 00:05:32 +08:00 |
|
TermiNexus
|
f5b3e46543
|
fix(gen): while 1 无限循环无 break 判定 merge 不可达
HandlesWhile 翻译 while 后无条件置 _ctrl_merge_reachable=1,导致末句为
`while 1:`(条件常量真且循环体仅 return 无 break)的函数在收尾检查被
误判"流程掉出末尾未显式 return"(vrandom.gammavariate TypeError)。
新增 _IsConstTrue/_StmtHasBreak(跳过嵌套循环子树):常量真且无本层
break 时 merge 结构性不可达 → 置 0,函数收尾对末句 While 生成 unreachable。
|
2026-08-19 20:35:22 +08:00 |
|
TermiNexus
|
b2e69c2f75
|
chore(gen): 移除全部 [DIAG] 调试打印
|
2026-08-19 10:11:37 +08:00 |
|
TermiNexus
|
cf9207f171
|
fix(struct): PARENT_MAX 16→64 修复 Generator 43 父类字段截断
拆分重构使 Generator 父类增至 43 个,PARENT_MAX=16 使 _collect_parents/
set_parent_names 只收前 16 个父类 → StmtGenMixin(#40) 等字段丢失 → 结构体
缺 DiagStmtCount → __init__ 写 self.DiagStmtCount "属性写入失败"。FIELD_MAX
128→256 防字段静默截断;MRO_MAX 16→64 保证父类方法解析可达。两处常量
(HandlesStruct/StructGenMixin)同步提升。
|
2026-08-19 05:11:51 +08:00 |
|
TermiNexus
|
4d7a6db31a
|
fix(match): case 体末句控制流全 return 补 unreachable 不 br end_bb
根因(ClassGenEnum._get_type_align 掉出末尾):case 体末句是 If/控制流且
全分支 return 时,处理器把 builder 停在无 terminator 的 merge 块,case
循环的 is_terminated 误判未终止 → 补 br end_bb → rm/sq/sm_merge_reach=1
→ 全 case return 的 match 被误判 merge 可达 → 函数收尾 fail-fast
'流程掉出末尾'。新增模块级 _case_tail_unreachable:末句控制流
(If/While/For/Match)且 _ctrl_merge_reachable==0 时补 unreachable,
与 HandlesIf L309-315 / ClassGenVTable L1084 同语义;应用于 renum/
sequence/simple 三路的 case 体与 default 收尾(不含 Try/With,其处理器
不维护该标志)。
|
2026-08-19 03:16:16 +08:00 |
|
TermiNexus
|
c40c00f933
|
fix(match): renum match merge 标志声明作用域修正(a45b806 补充)
m_merge_reach 声明放 Handle 分派函数,renum match 内引用退化为隐式全局跨 match 污染 → get_struct_name(LLVMType REnum match)收尾读到残留 1 仍 fail-fast。声明移入 _handle_renum_match 局部(rm_merge_reach),置 1 与收尾覆盖同步修正
|
2026-08-19 01:58:32 +08:00 |
|
TermiNexus
|
a45b806afa
|
fix(match): merge 可达性用局部标志记录,消除 case 体内嵌套 if 污染
主 match/sequence/simple 三条路径:case 体内嵌套 If(无 else + return)翻译时把 _ctrl_merge_reachable 置 1,全 case return 的 match 被误判 merge 可达 → 函数收尾 fail-fast '流程掉出末尾'(LLvmLiteTest includes/llvmlite/__module.vp _is_opaque_struct)。改用局部变量记录本 match 自身的 br end_bb,收尾覆盖全局标志
|
2026-08-19 01:04:42 +08:00 |
|
TermiNexus
|
55d4c4102a
|
fix(call): super() void 命中用 hit_box 区分未命中 + CTypedef 预注册修复 mode_t NameError
- CallGenDispatch/CallGenMixin/ExprCallHandle: super() 命中 void 方法返回 None 属预期,用 hit_box 命中标志区分未命中,避免误走裸名调用报 'super 未定义'
- HandlesAnnAssign.Handle + TranslatorGenMixin.handle_module_level_var: CTypedef 按需注册(翻译期表已被 clear_ctypedefs 清空),修复 posix.vp S_ISREG(mode: mode_t) 参数解析 NameError
|
2026-08-19 00:28:48 +08:00 |
|
TermiNexus
|
d18f9a7e7f
|
fix(phase1): CTypedef 改源码文本扫描注册,彻底修 stdint.vp 访问违规崩溃
AST 字符串字段(attr/id)token 零拷贝指向 src_buf,跨阶段内容不稳定
(悬空)——ScanCTypedefDeclarations 读 attr 在两次运行间内容不同
(上轮 prefix=1 有效、本轮直接崩),0xC0000005。修复:
1. Phase1 1b translate 前用 RegisterCTypedefFromSource 纯文本逐行匹配
'NAME: t.CTypedef = TYPE' 注册(src_buf 有效期内),不依赖 AST 内容
2. 移除 translate 内 ScanCTypedefDeclarations 调用(已被文本扫描替代)
|
2026-08-18 10:22:26 +08:00 |
|
TermiNexus
|
407f047411
|
chore(phase1): translate 流程加 printf 断点,定位 stdint.vp 访问违规崩溃点
stdint.vp 翻译中崩溃(退出码 -1073741815=0xC0000005 访问违规),
发生在 translate 内部 printf.fmt 创建后。在 translate 声明完成/
main 检查/模块级各步骤(import、容器可见性、CTypedef 扫描、vpi 注入、
变量预注册、前向声明、translate_children)加断点,崩溃前最后打印的
步骤即为崩点。
|
2026-08-18 08:43:37 +08:00 |
|
TermiNexus
|
0cb0a12810
|
fix(phase1): 加 translate 后存活块检查 + printf Params 链创建即校验 + dump 函数清单诊断
builtins.vp dump 卡死已定位:printf.fmt Param 的 Next 被越界写破坏成环
(Params.Count=1 但遍历超限)。本次加运行时证据收集:
1. printf declare 创建后立即打印 fmt Param 地址/Next(区分创建即坏 vs
后续被破坏)
2. dump_ir(OUTPUT_STUB) 打印模块函数清单+param0/next(确认创建上下文)
3. translate 返回后、dump 前 mb.check_alive_blocks(mark1)(抓 translate
期间写穿破坏的块 header/canary,rc=6 定位越界写穿文件)
|
2026-08-18 08:17:54 +08:00 |
|
TermiNexus
|
e1b05fe1c6
|
fix(gen): If 分支嵌套控制流全 return 补 unreachable,修复 atan2 误判流程掉出末尾
- 嵌套 If(全分支 return)翻译后 builder 停在嵌套 merge 块(无 terminator),外层 If 分支 terminated 判定误判为未终止 → 补 br merge → 顶层 _ctrl_merge_reachable 误置 1 → 函数末句 If 全 return 被判 merge 可达,fail-fast '流程掉出函数末尾'(vipermath.vp atan2 根因)
- 分支翻译前重置 _ctrl_merge_reachable=1 防残留值污染
- 分支末尾未 terminated 且 _ctrl_merge_reachable==0(嵌套控制流全 return)时补 build_unreachable 而非 br merge,保持结构性不可达语义
|
2026-08-17 18:43:39 +08:00 |
|
TermiNexus
|
51ae18a160
|
fix(gen): 编译器生成方法 __before_init__ 跨模块调用放行,修复找不到模块 SHA1
- _tc_h6_method_dispatch 增加 hit_box 命中标记:_translate_method_call 返回 None(void 语义)不再被误判未命中,translate_call 不再把对象名当模块名查 SHA1
- AnnotClassName 回退分支新增编译器特殊方法放行:结构体未注册 + 模块 SHA1 不可查(Phase A 依赖未就绪)时,__before_init__/__init__ 由 _special_method_ret_ty 固定返回类型,走 _translate_method_call 处理并标记 _deps_pending 下遍重试
- ExprCallHandle._tc_h6_method_dispatch 委托透传 hit_box,对齐 c.Asm/c.LLVMIR hit_box 修复(2f3320f)
|
2026-08-17 18:19:15 +08:00 |
|
TermiNexus
|
2f3320ffde
|
fix(gen): c.Asm/c.LLVMIR void 调用 hit_box 命中标记,修复 StringTest 编译报 Asm 外部函数未登记
拆分后 _tc_h2_c_special 以 None 表示未命中,但 translate_c_asm/
translate_c_llvmir 对 void(无输出)asm 返回 None 表示已处理无返回值,
两者混淆导致 translate_call 继续走外部函数路径 → WARN 外部函数返回
类型未登记 Asm/AsmInp + t.ASM_DESCR 被当 CDefine 常量赋值 FATAL。
新增 hit_box(t.CPtr,[0]=1)区分命中,Asm/LLVMIR 分支置位,
translate_call 命中且返回 None 时视为已处理直接返回。
|
2026-08-17 12:43:49 +08:00 |
|
TermiNexus
|
0a98890d5b
|
fix(handles): HandlesExprCall 补回 set_global_gen 与 12 个顶层常量
拆分脚本 del 逻辑未过滤分组,误删了保留的 set_global_gen 与
顶层常量(_CEXPORT_MAX/ASM_*/LLVMIR_*/MAX_*/GLOBAL_*)→ 链接报
undefined symbol: {sha1}.set_global_gen。已补回,全 App 语法验证通过。
|
2026-08-17 08:32:54 +08:00 |
|
TermiNexus
|
285f4c25e2
|
fix(handles): ExprCallHandle 类方法裸调用补模块前缀(translate_call/printf/print)
拆分后主文件保留的 ExprCallHandle.HandleCall/HandlePrintfCall/
HandlePrintCall 仍裸调 translate_call/translate_printf_call/
translate_print_call → TPC 报 Undefined function: 'translate_call'。
改为 ExprCallCall. 前缀并补 import;ExprGenName.find_func_in_module
裸调用同步补 ExprCallBase. 前缀。全 App 裸调用扫描清零。
|
2026-08-17 08:27:07 +08:00 |
|
TermiNexus
|
c62ce0797d
|
refactor(handles): HandlesFor 拆 ForHandleBase/ForHandleIter(1600→448 行)
类方法拆 Mixin:
- ForHandleBase(HandlesBase.Mixin):__init__ + 公共工具
(_extract_tuple_names/_seq_kind/_build_seq_loop)
- ForHandleIter(ForHandleBase):8 个 _handle_* 迭代 helper
- ForHandle(ForHandleBase, ForHandleIter):保留 Handle 主分派 + 常量/
_g_gen/NewForHandle 委托;self 调用按 1 级父类解析(Handle→Iter、
Iter→Base 均直接父类)
StmtGenCifMixin 仍以 HandlesFor.ForHandle 实例化/引用,类名不变
|
2026-08-17 08:14:04 +08:00 |
|
TermiNexus
|
2cb974ae5a
|
refactor(handles): HandlesExprCall 拆 6 组(Base/Deref/Ctor/Call/Table/Handle,2041→241 行)
直接移动+改调用方:~100 个委托函数按功能移至 6 个子模块,主文件
保留 _g_gen/set_global_gen/顶层常量/4 个类(AsmOperand、FuncEntry、
FuncDefaultsEntry、ExprCallHandle——CallGenLeafKit/HandlesTranslator
仍以 HandlesExprCall.类名 引用)。
- 子模块函数体内 _g_gen/常量/类裸引用 → HandlesExprCall.xxx 跨模块访问
- 28 个调用方 HandlesExprCall.func( → 子模块前缀并补 import
- 全 App 语法/引用/import 验证通过
|
2026-08-17 08:10:55 +08:00 |
|
TermiNexus
|
278893d203
|
refactor(core): StubMerger 拆 5 组(Collect/Store/Topo/IR/Build,2391→72 行)
直接移动+改调用方模式:35 个函数按功能移至 5 个子模块,主文件
仅保留常量与全局变量(main.vp 仍直接赋值 StubMerger._mbuddy)。
- 子模块函数体内裸调用映射为子模块前缀,全局变量经 StubMerger._xxx 跨模块访问
- 12 个调用方文件 StubMerger.func( → 对应子模块前缀并补 import
- 全 App 语法/引用/import 验证通过
|
2026-08-17 08:03:40 +08:00 |
|
TermiNexus
|
ebfc74063f
|
fix(handles): HandlesExpr._lookup_cross_module_cdefine 委托补 depth/node 参数
ExprGenName 等调用传 6 参(pool, name, from_imports, imported_modules,
depth, node),委托只定义 4 参 → TPC 报 '传入了 6 个参数,但函数只
需要 4 个参数'。补齐 depth=0/node=None 默认参数并透传,与
ExprGenCdef._lookup_cross_module_cdefine 方法签名对齐。
|
2026-08-17 07:42:49 +08:00 |
|
TermiNexus
|
50db55fd08
|
fix(handles): HandlesClassDef 6 个 _is_* 委托补 trans 参数
ClassGenDef 调用 _is_enum_class/_is_union_class/_is_renum_class(cd, trans)
传 2 参,但委托定义只有 1 参(cd)→ TPC 报 '传入了 2 个参数,但函数
只需要 1 个参数'。统一补齐 _is_cenum_base/_is_enum_class/_is_cunion_base/
_is_union_class/_is_crenum_base/_is_renum_class 的 trans 默认参数并透传。
|
2026-08-17 07:38:09 +08:00 |
|
TermiNexus
|
54fa8b46c8
|
refactor(gen): ExprGenMixin 拆 8 组(Base/Const/Fstr/Ops/Cdef/Name/Attr/Cls,6203→129 行)
- ExprGenMixin 保留 translate_value,其余 74 方法按功能拆至 8 个子 Mixin
- 子 Mixin 均 1 级继承 ExprGenBase(TPV self 调用仅支持 1 级父类)
- 跨 Mixin 调用转 HandlesExpr 模块级委托(_g_gen 单例 cast)
- HandlesExpr 补 15 个委托:f-string 组 7 个、docstring 组 4 个、
Cdef/Attr 各 1 个、Ops 组 translate_binop/_binop_to_dunder/_unaryop_to_dunder
- Generator 继承链加入 8 个 ExprGen 子 Mixin
- 全部 Gen/ 文件均 ≤1500 行,500~1500 行/文件架构重构完成
|
2026-08-17 07:32:56 +08:00 |
|
TermiNexus
|
47ac2dd57c
|
refactor(gen): ClassGenMixin 拆 5 组(Base/Enum/Generic/VTable/Def,4768→空壳)
|
2026-08-17 07:23:40 +08:00 |
|
TermiNexus
|
81d4ff3ac4
|
refactor(gen): TypeGenMixin 拆 5 组(Base/CDef/CType/Resolve/Err,2643→44 行)
|
2026-08-17 07:21:00 +08:00 |
|
TermiNexus
|
65cf71ff7e
|
refactor(gen): FuncGenMixin 拆 Base/Def(2683→1178 行),补 5 个跨 Mixin 委托
|
2026-08-17 07:17:03 +08:00 |
|
TermiNexus
|
9f19bb3666
|
refactor(gen): CallGenMixin 阶段 C 拆 translate_call 检测段(Dispatch 6 helper)+ 辅助方法(Lib),顶层降至 1119 行
|
2026-08-17 06:59:14 +08:00 |
|
TermiNexus
|
38e32fdeb1
|
fix(gen): 修复 HandlesExprCall 委托签名缺参数(_infer_generic_ctor_type_arg/_LookupMethodRetTyFromTextLL)
|
2026-08-17 06:38:00 +08:00 |
|
TermiNexus
|
1718738a19
|
refactor(gen): CallGenMixin 阶段 B 拆出 6 组(Ctor/Call/Prop/Fd/Vt/Va),顶层剩 translate_call 中枢
|
2026-08-17 06:34:33 +08:00 |
|
TermiNexus
|
8d9ff96f61
|
refactor(gen): 修复 CallGen 拆分后 undefined symbol(顶层改 1 级继承 + 跨 Mixin 走 HandlesExprCall 委托)
|
2026-08-17 06:17:15 +08:00 |
|
TermiNexus
|
996f08fb46
|
fix(core): 末句控制流 merge 可达性存 trans 字段(追加90)
控制流翻译器(If/While/For/Match)记录 merge 可达性到 trans._ctrl_merge_reachable;
FuncGenMixin/ClassGenMixin 仅在全分支 return(结构性不可达)时生成 unreachable,
可达则正常收尾(ConstZero/fail-fast)。修复 llc O2 优化 br-to-unreachable 为
fall-through 导致 check 类函数 PASS+FAIL 双分支执行 + int3 崩溃(FuncTest)。
|
2026-08-17 05:46:47 +08:00 |
|
TermiNexus
|
593332636f
|
全部整理上传
|
2026-08-17 04:27:29 +08:00 |
|
TermiNexus
|
0a0e6d3bab
|
perf(diag): OOM 二分定位诊断 + 主池提升 1.5GB
BuildPipeline/Phase2/StmtGenMixin/HandlesAnnAssign 增加 [MEM] 限频打印
(parse/translate 前后、Phase A 前后、stmt 行级、AnnAssign 入口),
定位 NewAstTest 翻译内存暴涨起点;主池 1.5GB(2^30+2^29 二进制分解),
给单文件峰值与 Phase A 高并发翻译留足余量。
|
2026-08-15 00:15:59 +08:00 |
|
TermiNexus
|
f9878e5a63
|
fix(core): 跨模块 CDefine 查找缓存 perm_pool + list 内置方法识别
1. _lookup_cross_module_cdefine:lookup_from_import 返回非 NUL 结尾内部指针,
base_mod 未截断导致 rc_full_mod 每层累积整个 from_imports + ".base"
(dump:ast.base.base.base 无限递归根因)。入口截断模块名 + 缓存查询/写入
key 统一用 base_mod;结果缓存到 perm_pool(XmodCdef 表)跨文件复用,
CONST_INT 递归查找只做一次。
2. translate_call:obj.method 检测将 list[AST|CPtr] 特化 struct 误当普通结构体,
查 append 返回类型(函数/text.ll/vpi 均未命中)fail-fast。新增
_is_list_builtin_method 识别 list 内置方法,在 Ptr(Struct)/Ptr(Ptr)/
AnnotClassName 三条路径跳过,落到 list 内置分支。
3. HandlesType 新增 register/lookup_xmod_cdefine 模块级委托(Mixin 隔离)。
|
2026-08-15 00:15:43 +08:00 |
|
TermiNexus
|
8d5dbeab89
|
feat: 引入 CompilerFactory 永久内存池,1a 每文件 reset 解 NewAstTest OOM
main 创建 512MB perm_pool(MemBuddy 第二实例,永不 reset)并注册
CompilerFactory 工厂(对齐 TPC Translator 装配模式,memhub 保持通用)。
各 Gen Mixin 跨 mark 持久表(struct/枚举/Renum/spec/vtable/全局函数/
闭包/函数指针/Cexport/Reexport/TraceFrames/Doc)全部迁移到 perm_pool,
替代 stdlib.malloc 深拷贝提升速度。
Phase1 1a 主循环(98 includes 全量 parse AST 驻留主 pool → 1GB 耗尽)
改为:StdlibAlloc=1 注册数据进 perm_pool + 每文件翻译完 reset_to(文件级
mark) 回收 AST;1b-pre vpi 预生成循环同样 reset_to(mark1)。同步修 7 处
reset 后悬空隐患:StructTable 表体、add_field DefaultVal、Renum 变体/
别名表内容、vtable full_names 内容、FuncptrRets 深拷贝。
CompilerFactory 类名与模块名同名(合法场景,TPC 已支持模块别名优先)。
|
2026-08-14 04:02:36 +08:00 |
|
TermiNexus
|
c27a1ba347
|
fix(gen): lambda 捕获 str 指针偏移 + 表达式接收者等五组回归修复
- lambda 捕获 cap_slot 改 cap_names + ci*64:TPV 将 (str)(整数) 编译为 itoa,define_var 键名变数字串,lambda body lookup 穿透父函数作用域产生跨函数误读
- StructGenMixin 递归解 Ptr 到 Struct / CallGenMixin self coerce + 表达式接收者方法调用:修 sub Vec3**、ld.lld undefined dot/cross
- TranslatorGenMixin/HandlesAnnAssign 跳过 CTypedef 全局符号:修 duplicate float64_t
- ClassGenMixin 枚举/联合/REnum 基类别名经 lookup_from_import_original 解析:修 Color.Green NameError
- 重载路径 1 对 Ptr(Ptr(Struct)) 先 load 对象指针:修 MultiInheritTest self 误读
- TypeGenMixin 泛型 T 先 resolve_generic_type_name:修 NoVTableTest T 未注册
|
2026-08-13 19:10:50 +08:00 |
|
TermiNexus
|
a0edc3d961
|
fix(gen): 泛型 type_params 生命周期与无注解赋值 annot 推断
- ClassGenMixin: list[str](pool, 8) elem_size 修正(原 4 致 Pair[T1,T2]
重叠写),新增 GenericClassTpParams stdlib 深拷贝表,特化统一取深拷贝
- Generator: 初始化 GenericClassTpParams 防 0xBEBEBEBEBEBEBEBE
- TypeGenMixin: 泛型上下文栈式管理,支持嵌套特化
- CallGenMixin: sz_builtin 补 double/float/char,修复 T.__sizeof__ NameError
- StubMerger: _CommentOutGlobalInBuf 循环注释同名全局,修复 @_mbuddy 重复定义
- HandlesAssign: 无注解赋值按 RHS 推断 AnnotClassName(类实例化/源变量/
运算符重载/字段注解/方法返回注解 vpi),修复联合类型 Ptr(i8) 属性访问失败
|
2026-08-13 17:31:54 +08:00 |
|
TermiNexus
|
07e1efeb82
|
fix(gen): 移除 vtable 临时诊断代码并扩容 MAX_FUNCS 256→1024
1) 移除 _generate_vtable 中临时诊断块(含 self.find_func_global 调用),
该调用被当成 ClassGenMixin 类方法 mangling 导致 bootstrap 链接失败
(undefined symbol: ClassGenMixin.find_func_global)。
2) MAX_FUNCS 256→1024:VpiReader 注入依赖 declare(~102)+ 大模块方法
(stmts 162 个)累积使函数表恰好溢出,ImportFrom.dump 等第 257 个
注册静默失败 → vtable 缺实现误杀。同步 7 处(HandlesTranslator/
TranslatorGenMixin 常量 + ClassGenMixin/FuncGenMixin/VpiReader 硬编码)。
|
2026-08-13 06:54:40 +08:00 |
|
TermiNexus
|
ad2b97a140
|
perf(reachable): 移除 _list/_dict/json 无条件预加入,按需编译
_BuildReachableSha1Set 原本无条件把 _list/_dict/json 塞进可达集,
导致未使用的 App 也整链编译(json/__init__ → __parser/__writer)。
_list/_dict 已由 Phase A _inject_auto_container_visibility 按需注入,
现补充 []/{} 字面量检测防漏;json 由 _dict 真实 import 链带入。
builtins 保留始终纳入(设计意图)。
|
2026-08-13 03:27:31 +08:00 |
|
TermiNexus
|
64195f183e
|
feat(type): 支持字符串 CDefine(如 ZLIB_VERSION = "1.3.2")
- TypeGenMixin 新增 CDefineStrFlags/CDefineIsStr 字段与
register_cdefine_string/lookup_cdefine_string/is_cdefine_str 方法
- AssignGenMixin._register_cdefine_from_value 新增 CONST_STR 分支
- ExprGenMixin.translate_name_value CDefine 本地/跨模块均支持字符串
- Generator.InitGen / HandlesType 委托同步初始化新字段
|
2026-08-13 02:58:15 +08:00 |
|
TermiNexus
|
9d3483e97e
|
refactor: 全面 fail-fast 化(去兜底)+ 泛型补译/解引用宽度修复
- 全量降级点改 fail-fast:23 文件约 140+ 处静默 i32/i8*/void/continue 兜底改为 HandlesType.fatal_error(python traceback 风格)或 VLogger.error 终止,暴露上游根因;保留语言语义默认(无注解 i32/infer 链/CIf/star 回退)
- 泛型特化 Phase B 补译 reemit 强制发射方法体(修复 list[...] define 缺失)
- c.Deref 读取宽度仅按赋值直接 RHS 推断(修复 CurAssignAnnot 残留误判 i32)
- 类型别名清理:t.CChar|t.CPtr→str、t.CInt→int 等
|
2026-08-13 02:11:49 +08:00 |
|