TermiNexus
|
c2d7480f3d
|
fix(transpyv): 槽视图统一 cast 到声明类型(47 处,含 codegen 自身)
同 includes 的同类修正:把一级指针 i8* 隐式塞进二级注解(i8** / str*)。
TransPyV 侧 coerce(ExprGenBase._ptr_cast_reason)没有 TPC 那样的「值侧是显式
指针 cast ⇒ 按 bitcast 重解释」豁免,故一旦用新构建的 TransPyV 编到这些文件
必然 fail-fast(回归测试首爆点在 includes/llvmlite 侧,本仓同形态站点随后必然
同样触发)。
涉及的两种形态:
· `slot: str | t.CPtr = (t.CPtr)(addr)` —— cast 目标是一级 t.CPtr
· `nm_slot: str* = (t.CPtr)(addr)` —— 注解 str* 即 i8**
统一改为 cast 到声明类型:`(str | t.CPtr)(addr)` / `str*(addr)`(后者与
includes/sys.vp `argv_arr: str* = str*(...)` 同一写法)。
本仓 47 处 / 6 文件:
App/lib/core/Gen/VarGenMixin.vp 3
App/lib/core/Gen/TranslatorGenMixin.vp 8
App/lib/core/Gen/Func/FuncGenMixin.vp 13
App/lib/core/Gen/AsyncGenMixin.vp 15
App/lib/core/Gen/DebugInfoGen.vp 6
App/lib/Stub/StubGen/Converter.vp 2
Converter.vp:107 的 `_g_pyi_cdef_names: str | t.CPtr = None` 保持原样
(None 即空指针,任何指针类型均可,不属本类问题)。
只提交本 6 个文件;本仓其余未提交改动(CallGenBase/CallGenDispatch/CallGenFd/
CallGenProp/Generator/Translator/VLogger)与本迁移无关,保持不动。
|
2026-09-29 15:10:33 +08:00 |
|
TermiNexus
|
aa52cf157d
|
revert(transpyv): 回滚跨模块链表 Next 改访问器(改由编译器沿继承链解析字段名)
回滚 13080f6 的 110 处访问器调用,恢复裸字段访问 `x.Next`。
理由:该批访问器是把访问移到定义模块内执行,**绕开**了"继承字段名解析",
属于规避而非修复;缺陷本体在 TPC 侧(导入侧继承展平把泛型基类的继承字段
记成 __inherited_N 占位名,名字丢失)。TPC 已按语义修正:
· e6451a07 继承展平沿继承链取真实字段名(泛型特化回退模板名),
展平表直接落 `[("Next", <槽位类型>), ...]`,属性访问是普通表命中;
· 3ca46c01 顺带修掉 _get_or_create_struct 里"同名枚举成员遮蔽类定义"的 i32 出口。
因此源码侧恢复为唯一写法(裸字段访问),由编译器负责解析。
注:本 commit 只回滚访问器;13080f6 里夹带的 CallGenProp.vp 续行合并(非访问器改动)
已在工作区保留(未提交)。
|
2026-09-28 21:48:53 +08:00 |
|
TermiNexus
|
13080f646f
|
fix(transpyv): 跨模块链表 Next 字段改用访问器(消除 __inherited_N 占位名 fail-fast)
c 源码违规:llvmlite 的 Value/ParamNode/Function/Param/GlobalVariable/PhiIncoming/
SwitchCase 的 Next 继承自泛型基类 GSListNode[T],而其泛型特化体不在任何 .vpi 中
⇒ 导入侧 class_members 只有 __inherited_N 占位名;严格属性解析(回退已移除)下
裸写 `x.Next` fail-fast。现场:CallGenCall.vp `cur_fb = cur_fb.Next` 报
"[fast-fail] 属性 Next 在类 ParamNode 中找不到(class_members=[__inherited_0, Ty])"。
按仓库既有约定(_Type.md:链表遍历用 paramnode_get_next/paramnode_set_next;
VarGenMixin/TypeSpec/StructGenMixin/VpiReader 等已如此书写)统一改为访问器:
value_get_next/value_set_next、paramnode_get_next/paramnode_set_next、
function_get_next、param_get_next、globalvariable_get_next、
phiincoming_set_next、switchcase_set_next
覆盖 24 个文件共 110 处(含 CallGenProp.vp:122 的嵌套读 cur_arg_pc.Next)。
访问器在 includes 侧为定义模块内直通实现(None 守卫 + x.Next),语义等价、零行为
变化。已全量扫描 core\Gen 全 47 文件与 Stub/Phase/core/main:App 侧已无裸继承字段
访问(剩余 .Next 命中全部在注释里)。
|
2026-09-28 21:20:58 +08:00 |
|
TermiNexus
|
a7af34bd7e
|
修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善
|
2026-09-23 17:41:49 +08:00 |
|
TermiNexus
|
951b89be36
|
修正了部分代码的表达方式,最后可用版本,正在为 mlirlite 做准备
|
2026-09-23 16:09:32 +08:00 |
|
TermiNexus
|
a5ceb3d4eb
|
增加 JIT REPL
|
2026-09-21 16:17:19 +08:00 |
|
TermiNexus
|
9910e05760
|
修复了一些错误,更改了一点语法
|
2026-09-18 20:00:40 +08:00 |
|
TermiNexus
|
9e2ccbfab7
|
将部分 | t.CPtr 修正为 rawptr[T]
|
2026-09-18 17:56:24 +08:00 |
|
TermiNexus
|
cb0836de8a
|
清理了 t.CVoid
|
2026-09-16 16:06:48 +08:00 |
|
TermiNexus
|
9a191daa8d
|
错拼 rowptr 改为 rawptr
|
2026-09-16 11:42:28 +08:00 |
|
TermiNexus
|
82eea2719f
|
refactor(tpv): rowptr[T] 迁移 + D 表定长缓冲改精确分配 + SHA1 前缀判定收敛(D1/D3/D4/D5/D6/D7/C10)
|
2026-09-12 11:09:35 +08:00 |
|
TermiNexus
|
cfb92e5da5
|
初步清理 t. 类型异味
|
2026-09-11 18:36:32 +08:00 |
|
TermiNexus
|
6b368b46a7
|
feat(tpv): App 与 TPVAppBK 新代版本对齐(rowptr 配套实现全套)
把 TransPyV/App 覆盖为 TPVAppBK 内容(39 文件):6 参注册式 _BuildReachableSha1Set 全套(StubMergerBuild/Store/Collect/__init__/IncludesScanner/Phase1Scan 等)、CallGen 与 TypeGenResolve 等新代实现。配套根 includes 为 rowptr 工作区(另有 includes_rowptr_bk 备份)。
|
2026-09-05 14:13:03 +08:00 |
|
TermiNexus
|
24ae2dc966
|
refactor(tpv): 删除 Handles 目录,核心逻辑合并进 Gen
- 新建 Gen/Translator.vp:Translator 类 + Mixin + 常量 + _mbuddy 自 HandlesTranslator 迁入(删 7 个委托壳与 _g_gen)
- GenApi 下沉 7 个 global/nonlocal 管理委托(add/is_global_name、add/is_nonlocal_name、get_nonlocal_type/index、clear_scope_names)+ update_global_func_typestr
- CallGenLeafKit 并入 ExprCallHandle 类,NewExprCallHandle 改本地引用
- 删除 Handles/HandlesExpr/ExprCallTable/HandlesBase(60+ 委托零消费者/纯委托壳)与 Handles 目录整体
- 全 App 56 文件 import 改指 lib.core.Gen.*,清理死 import,委托调用改 GenApi,main/BuildPipeline _g_gen 注入删除
|
2026-08-28 14:29:25 +08:00 |
|
TermiNexus
|
d99b6268de
|
refactor(tpv): Gen 目录按前缀分组迁移子目录 + REnum.kind() 编译期转 __tag
- Gen/*.vp 按前缀分组迁入 Call/Class/Expr/Func/Stmt/Type 子目录,import 同步更新(BuildPipeline/Generator/StructGenMixin 等)
- CallGenDispatch: REnum.kind() 前置拦截 → bitcast i32* + load(读 __tag),杜绝方法查找兜底误绑 AST.kind(this 偏移语义错误)
- 留根:Assign/Async/Base/Imports/Match/Struct/Translator/Var 单文件前缀 + GenApi/GenTypes/Generator/__init__
|
2026-08-28 14:16:03 +08:00 |
|
TermiNexus
|
748eda9c69
|
修正 Stub 的 define 导入
|
2026-08-22 10:36:05 +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
|
609635c73e
|
fix(tpv): 帧池访问改 Value 视图 + ConstNull 补 name 参数
- GlobalVariable 非 Value 子类,create/destroy 直接 build_load/store
按 Value 布局读字段错位(Ty 读到 void、Name 为空)→ 生成
"load i64, void" 非法 IR;改构造 SSAValue(Ty=Ptr(i64), Name="@coro_pool_<n>") 视图
- ConstNull 签名 (pool, ty, name),6 处漏传 name → v.Name=None →
"store i8* (None), i8**" 非法 IR;全部补 "null"
|
2026-08-22 01:25:12 +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 |
|