TermiNexus
|
ec2feea15b
|
尽可能修补 Gen 的导入
|
2026-08-22 10:53:26 +08:00 |
|
TermiNexus
|
01b45c0630
|
修正了 import 路径,修正了部分代码谬误
|
2026-08-22 02:29:08 +08:00 |
|
TermiNexus
|
e18609e184
|
feat(tpv): 支持 coro.Coroutine = c.Addr(task()) 就地解读句柄赋值
- c.Addr(Call) 分支:求值存临时槽(entry alloca)返回槽地址,
供 coerce 指针→结构体 load 就地解读(Coroutine={__ptr__} 8 字节)
- 协程登记扩展:c.Addr(async_call) 也登记 _coro_var_async
- 新增 _coro_frame_ptr_from_arg 统一提取帧指针:pointee 是 Struct
(Coroutine 变量,translate_value 返回 alloca 地址)GEP __ptr__ load,
普通指针 bitcast 直通;5 处拦截函数(run/destroy/exception/msg/gather)替换
|
2026-08-22 01:55:54 +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
|
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
|
8db2d1c23b
|
fix(assign): _is_scalar_ty_name 改白名单,修 list[str].get 返回类型不匹配
原实现排除 Ptr/str/bytes/| 后默认返回 1(标量),把未知类名(如泛型
上下文污染产生的 llvmlite.Value)误判为标量 → IsPtrElement=0 →
elem_ptr[0] 走通用路径生成 Value*,list[str].get 声明 i8* 与 ret
Value* 不匹配(8fbba llc 报错)。改白名单:已知整数/浮点/字符标量
才返回 1,未知类名按 8 字节指针槽(list 元素本就是 8 字节槽)。
|
2026-08-18 09:51:54 +08:00 |
|
TermiNexus
|
593332636f
|
全部整理上传
|
2026-08-17 04:27:29 +08:00 |
|
TermiNexus
|
a56fc6badc
|
fix(type): CDefine 编译期常量表达式补齐二元运算符
zdef.vp 中 ZDEFLATE_WINDOW_SIZE = (1 << ZDEFLATE_WINDOW_BITS) 是
LShift 表达式,extract_cdefine_int_value 的 BinOp 分支原先只支持
|/&/+/-,被 fail-fast 误杀。对齐 TPC ConstEvaluator 补齐
BitXor/LShift/RShift/Mult/FloorDiv/Mod
|
2026-08-13 03:01:02 +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 |
|
TermiNexus
|
ea5b17f5fd
|
refactor: 深度 if 守卫化重构(guard continue + 短路合并)
- HandlesAssign/Return/Match、StubMerger、Phase2、Gen/*Mixin、StubGen/* 手写 None 检查链改守卫/短路,全局最深 14→12、>=10 层 26→19
- StubMerger define→declare 剥 linkonce_odr 等 linkage(修复 VectorGenericTest invalid linkage)
- CallGenMixin len() 数组常量长度分支(对齐 TPC _HandleLenLlvm)
- print 参数翻译失败 (null) 兜底改 fail-fast
- 临时诊断日志与死代码(sub_vk)清理
|
2026-08-12 21:13:25 +08:00 |
|
TermiNexus
|
882c78c67a
|
feat(gen): ListTest 联合下标修复 + DocTest docstring 完整保留
- CallGenMixin: 默认参数快照无条件查询、静态类调用识别、len() 走 __len__
- TypeGenMixin/AssignGenMixin: T | t.CPtr 泛型标量元素宽度修复
- ExprGenMixin: / → __truediv__、指针判空走 icmp null、__doc__ 完整保留(登记表+跨模块符号解析)
- BuildPipeline: 翻译后提取模块 docstring(预注册阶段跨模块可用)
- Generator: DocKeys/DocValues/DocCount 登记表字段
|
2026-08-11 21:21:40 +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
|
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 |
|