TermiNexus
|
ff7c0457ad
|
feat(coro): M2——async 参数/嵌套 await 表达式/If-While 控制流
- 帧结构体增加参数槽与提升临时变量槽,create_<name> 带参数存入帧
- 嵌套 await(如 a = b + await f())提升为顶层临时赋值 __await_N,帧预留槽
- 协程版 If/While:条件求值 + 分支内 await 就地挂起/恢复(动态状态号恢复块)
- For 循环委托现有 handler(仅支持无 await/return,M3 扩展)
- CoroTest 用例覆盖参数/嵌套 await/while+await/if+await(期望 coro result = 30)
|
2026-08-21 13:31:37 +08:00 |
|
TermiNexus
|
13a8f6c1b6
|
feat(coro): 语言内协程 M1——async def + await + coro_run 状态机
TPC 新增协程生成器 AsyncFunctionHandle(lib/core/Handles/HandlesAsyncFunctions.py):
async def 编译为帧结构体 {state, done, ret, 局部变量槽} + create_<name>()(malloc
分配)+ resume_<name>()(switch 状态机,0=SUSPEND/1=DONE)。await 按顶层赋值
切分函数体:创建子帧 -> resume -> 取子帧 ret -> 存父帧槽 -> 父挂起(state 前进);
普通调用 async 函数生成 create(返回帧指针);coro.coro_run 在调用点内联翻译为
resume 循环。vast parser 已支持语法;新增 includes/coro.vp(Coroutine + 占位
运行时)与 Test/CoroTest(期望输出 coro result = 14)。
M1 限制:async 无参数、返回 i32/int;协程体仅顶层 AnnAssign/Assign/Expr/Return;
await 仅顶层赋值形式、子协程假设一次完成(无嵌套挂起);coro_run 依赖本模块
先赋值的协程变量。M2 将支持参数/嵌套 await/控制流。
|
2026-08-21 12:36:00 +08:00 |
|
TermiNexus
|
f703fdaf23
|
test(NoVTableCrossMixinTest): 扩展三段式覆盖——多级 Mixin 链 + 第二父类 this_adjust
Test 2:Combined2(MixinB2(MixinA2), MixinC2) 多级链——MixinC2.outer2 调兄弟 MixinB2.mid2,mid2 调父类 MixinA2.inner2 并写字段,验证链式 this_adjust。
Test 3:Combined3(PtrMixin, DataMixin)——DataMixin 第二父类字段区偏移非 0,get_val 内 self.val 需 this_adjust;含指针字段 get_name。
|
2026-08-21 01:16:32 +08:00 |
|
TermiNexus
|
bd5d2467ab
|
fix(exprcall): NoVTable 跨 Mixin self. 调用按定义类解析 + this 前移
缺陷(TPV bootstrap 的 undefined symbol: <sha1>.StmtGenDeclMixin.translate_return
同根因):NoVTable 多继承下,BaseB.caller 内 self.helper()(helper 定义在兄弟
Mixin BaseA,经 Combined(BaseA, BaseB) 组合)被 mangle 成 BaseB.helper —— 用
调用者类做前缀,而定义符号是 BaseA.helper -> ld.lld undefined symbol。
修复(HandlesExprCall.py):
1. 调用端 MRO 回退失败后,全局扫描已注册类找方法定义类(兄弟 Mixin 兜底);
2. _adjust_this_for_inherited_method 支持"调用类不含定义类字段"场景:
this 按组合布局前移 sizeof(定义类 struct)(BaseB* -> BaseA*)。
新增 Test/NoVTableCrossMixinTest 回归(caller()==42 通过),TestsOverview 记录。
|
2026-08-20 10:23:47 +08:00 |
|
TermiNexus
|
197a7f3314
|
test: 新增 ThreadingTest vthreading 专项测试
覆盖 Thread(start/join/is_alive/get_exit_code/传参)、Lock 多线程互斥、
Event 唤醒、Condition 生产者/消费者、RWLock 多读单写、TLS local、
get_current_thread_id/sleep_ms,以及 stdlib.system 多线程并发调用。
|
2026-08-19 06:42:32 +08:00 |
|
TermiNexus
|
995faf8a9c
|
test(NumpyTest): c.Timer() 改为 timer_sec()(GetTickCount64), 修复链接 undefined symbol: Timer
c.Timer() 无编译器支持(TPC/TPV 均无该内建), bench_numpy_perf 链接期 undefined; 改用 Win32 单调时钟
|
2026-08-16 06:48:53 +08:00 |
|
TermiNexus
|
a641cbff63
|
test(NumpyTest): numpy.ndarray 裸泛型注解改为显式类型参数 numpy.ndarray[t.CDouble]
裸泛型类名注解(Foo 无 [T])在 TPC/TPV 均不被支持(TPC 静默降级 i32, TPV fail-fast 报 struct 未注册); 与 SimdTest 已验证模式对齐
|
2026-08-16 05:53:56 +08:00 |
|
TermiNexus
|
e400a1c0a7
|
fix(JsonTest): write string hello 断言改用 strcmp(追加14 遗留,i8* == 是指针地址比较)
|
2026-08-15 13:12:12 +08:00 |
|
TermiNexus
|
3fe985648e
|
chore: 更新 TODO/toast 脚本/测试源
TODO 补编译器实验方向;toast 通知改 list 泛型方法修复完成;DecoratorTest 补 global _call_count 声明;LLvmLiteTest ConstFloat 断言改十六进制位模式。
|
2026-08-15 06:24:22 +08:00 |
|
TermiNexus
|
46b7cbc4ba
|
fix(memhub): 非 2 的幂 arena 二进制分解 + reset 重建 + OOM 诊断增强
主池 1.2GB(非 2 幂)不再被 _largest_pow2_le 砍成 1GB:整个区域按二进制分解拆成多个 2 的幂空闲块压入对应 free list,buddy 合并跨分解边界因 order 不匹配自然停止;reset/_rebuild_free_lists 重建同样分解格局。新增 big_alloc_count 计数与 alloc 失败 self_check/free_bytes 诊断、mark 异常 fail-fast。BuddyTest 断言改为初始分解块数。
|
2026-08-15 06:24:13 +08:00 |
|
TermiNexus
|
50795b63f1
|
chore: 更新 TODO/toast 脚本/IsinstanceTest 测试源
|
2026-08-14 04:02:27 +08:00 |
|
TermiNexus
|
2c7f563dda
|
test(generic): GenericOopTest 补字段注解并改用 int 实例化
- 补 A/Pair/Calculator/Container 字段注解触发字段拦截验证
- calc2 改 Calculator(2),适配 TPV 泛型函数 int-only 限制
|
2026-08-13 17:32:00 +08:00 |
|
TermiNexus
|
74d32a166c
|
chore: 清理测试源码 DBG 插桩,.gitignore 忽略 wiki 目录
AstTest/LLvmLiteTest/SysLibTest 移除定位阶段残留的 printf/testcheck 插桩
(DBG1-DBG14),SlotsBugTest 空行清理;.gitignore 追加 /wiki/,TODO 更新。
|
2026-08-13 07:51:56 +08:00 |
|
TermiNexus
|
921820b26a
|
chore: 纳入 toast 脚本、Sequential 回归测试与诊断产物文件
_toast_gen.py(完成通知 toast 脚本)、Test/SequentialRegressionTest.py
(TPV bootstrap 回归测试脚本)、handles_expr_HEAD.vp 与 output.s
(历史诊断/反汇编产物)入库保存。
|
2026-08-13 07:51:33 +08:00 |
|
TermiNexus
|
4c39db17c6
|
fix(project): 适配 lld 链接器(clang 22 环境)
- 移除 -Wl,--unresolved-symbols=ignore-in-object-files(GNU ld 专用,lld 报 unknown argument)
- 移除 -latomic(clang64 无 libatomic;x86_64 原子均 lock-free)
- 保留 -Wl,--allow-multiple-definition(lld 支持)
- 47 个 Test project.json 统一更新
|
2026-08-12 21:45:41 +08:00 |
|
TermiNexus
|
99bf970452
|
test(ForAndLoopTest): 去除 fakeduck 依赖,list 改用 list[T](bd)+append 构造
移除 str.split/__mbuddy__ 魔法字段扩展依赖,zip/enumerate 输入改为
list[str](bd)+append 构造;保留纯 TPV 内置迭代测试(range/str/zip/enumerate)
|
2026-08-11 22:10:15 +08:00 |
|
TermiNexus
|
f047f90a72
|
docs(test): 新增 TestsOverview.md 测试总览(按实现难度排序)
68 个测试项目一览 + 8 层实现顺序 + 主题分组索引
|
2026-08-11 21:21:52 +08:00 |
|
TermiNexus
|
4f59396d5c
|
test(CPythonTest): PyLong_FromLong/AsLong 按 Windows LLP64 long=32 位改用 t.CInt
TPV 恒映射 t.CLong=i64,而 Windows x64 下 C long 为 32 位:PyLong_AsLong
实际返回 EAX 32 位,按 i64 读负数被零扩展(-999 → 4294966297)导致
比较 FAIL;改用 t.CInt(i32)与 ABI 一致,负数由赋值处 sext 正确扩展
|
2026-08-11 18:42:34 +08:00 |
|
TermiNexus
|
f3b16c397c
|
test: AstTest Stmt/Expr 运行时区分测试 + BuddyTest CANARY 断言修正
AstTest main.vp 新增 classify_print/classify_list 递归遍历 parse 树,用 isinstance(vtable 子类集合比较) 区分 STMT/EXPR/OTHER 并附 5 项断言;BuddyTest mbuddytest.vp 按 alloc needed=size+16(8 头+8 哨兵)修正 max_usable 与最小块断言。
|
2026-08-11 01:34:10 +08:00 |
|
TermiNexus
|
a941179826
|
test: 新增 SuperTest 专项测试 + 删除 TpvIsinstanceTest
- Test/SuperTest:super() 语义 9 断言(构造链/静态绑定/三层继承/MRO)
- TpvIsinstanceTest 移除(isinstance 回归统一用 IsinstanceTest)
|
2026-08-10 21:48:41 +08:00 |
|
TermiNexus
|
9c2dc45c03
|
fix(Translator): 类体 CDefine 预扫描扩展 + CDefine 类型修复(i32)
- GenerateLlvmDirect 预扫描扩展到类体 AnnAssign,注册类体 CDefine 常量
(方法内裸名如 ISINSTANCE_CLASS_MAX 不再解析为 0)
- t.py CDefine Size/IsSigned 覆盖为 32 位有符号,修复 stub 生成 void 类型
- 新增 Test/TpvIsinstanceTest(TPV 侧 isinstance 回归测试)
|
2026-08-10 21:15:42 +08:00 |
|
TermiNexus
|
1b89225130
|
feat(TPC): 拓展 isinstance 跨模块支持
vtable linkage 改默认外部强定义(含 initializer 自动归一为空),跨模块可引用 sha1.Class_Vtable;外部引用声明为 i8* 避免 array 类型不匹配;_ResolveVtableAddr 增加 CVTable 状态检查,NoVTable 类回退编译时静态判断避免坏引用。新增 geom_lib.vp 跨模块测试库,main.vp 增加跨模块继承/运行时多态/NoVTable 场景。
|
2026-08-10 19:16:27 +08:00 |
|
TermiNexus
|
8783340385
|
feat(TPC): 实现 isinstance 内建 + 多继承 this_adjust 字节偏移修复
isinstance 沿 class_parents 反向 BFS 收集目标类全部子类 vtable,运行时比较对象头部 vtable 指针,修复"目标是实际类祖先"场景误判;this_adjust 改用字节偏移(字段在子类与父类自身布局的字节差)修正第二父类方法体内二次 GEP 越界读。新增 Test/IsinstanceTest 覆盖 5 大场景 14 断言。
|
2026-08-10 19:11:18 +08:00 |
|
TermiNexus
|
f6f8c4183c
|
test: 新增 MultiInheritTest 多继承专项测试 + wiki 方案
4 组用例: 字段合并 C(A,B) / 菱形去重最左优先(Diamond) /
虚方法 vtable 多继承(ColoredCircle) / 运算符重载 MRO 链(Vec2Both)。
wiki/15-multiple-inheritance.md: Viper 多继承方案(M1-M6)设计文档。
|
2026-08-10 00:29:13 +08:00 |
|
TermiNexus
|
e1cb560df0
|
test: 对象化前的最后稳定版本
- OopInheritTest 全部类补类体字段声明(x/y/r/w/h/health/battery 等), 保证父类字段展平与 GEP 偏移正确
- 多个测试适配 i8* 指针比较语义(== 指针地址比较改 string.strcmp)
- 删除 ZlibTest/__zlib 旧实现与 find.py 调试脚本
- 更新 TODO 与 TestProject
|
2026-08-09 22:19:29 +08:00 |
|
TermiNexus
|
cd1f662e17
|
test: 删除 TestProject/2/3 聚合项目(已拆分覆盖); HashLibTest 并入 binascii/base64/hashlib 全套测试
|
2026-08-09 20:02:57 +08:00 |
|
TermiNexus
|
19214c269c
|
test: ZlibTest 移除 __zlib 改用标准 zlib 库; test_pyzlib 迁移 App/ 并适配 pool 参数, 裸内存调用改 string./stdlib. 命名空间, 修复同名变量覆盖
|
2026-08-09 20:02:52 +08:00 |
|
TermiNexus
|
d4abdd4042
|
test: 新增 ExpandKeywordsTest(fn/fun/func/function 专项); test_zlib 打印条件修复; WebTest 补 global 声明
|
2026-08-09 17:10:38 +08:00 |
|
TermiNexus
|
dd5a639437
|
test: 拆分独立 OopInheritTest(OOP继承/虚方法/运算符重载/多层继承), GenericOopTest 精简为纯泛型
|
2026-08-09 16:59:05 +08:00 |
|
TermiNexus
|
6644d6ce3b
|
test: TestProject/2/3 拆分为 10 个具体测试项目; ZlibTest 并入标准 zlib 库
新项目(各含 project.json + App/main.vp):
- LoopMathTest/LogicFlowTest/ClassArrayTest/NumpyTest (原 TestProject)
- HashLibTest (原 TestProject2 去 zlib)
- GenericOopTest/EnumTest/MpoolOopTest/VectorGenericTest/FileIoTest (原 TestProject3)
ZlibTest 增加"标准 zlib 库(zlib.pyzlib)" section 与 __zlib 并存验证。
|
2026-08-09 04:06:26 +08:00 |
|
TermiNexus
|
61f07d4f9b
|
test: 新增 DefineTest 独立宏测试项目 + SprintfTest 多整数变参复现
- DefineTest: 从 TestProject3/definetest.vp 提取为独立项目(CDefine/c.CIf/c.CIfdef/c.CIfndef/platmacro, testcheck 分节), TestProject3 移除 definetest 引用
- SprintfTest: 增加 multi-int varargs repro R1-R4(带 check), 复现 viperlib.snprintf 第 2+ 个 int 变参读垃圾(va_arg 8 字节槽位 vs 调用点 i32 未扩展)
|
2026-08-09 03:39:33 +08:00 |
|
TermiNexus
|
9ee519e998
|
fix(includes): 修复浮点常量精度截断与 viperlib %g 小数反转 - ConstFloat 浮点常量文本改 %.17e(全精度+LLVM合法语法, 修复 %e 6位小数截断致 llc 值错与 %.17g 裸整数报错); viperlib %g 小数位改逆序存储(原三变量交换循环在 TPV 编译产物中失效, 小数位反转 456->654); SprintfTest 增加 %g 诊断用例 T1-T10
|
2026-08-08 20:38:25 +08:00 |
|
TermiNexus
|
29b18af60c
|
refactor(includes): vipersimd c.LLVMIR 改 LOut 模式 + 文档同步新语义
vipersimd.vp 16 处 simd_* 数学 intrinsic 改 c.LLVMIR(f"{c.LOut(out)} = call ...")
+ return out 模式;TestFBProject 2 处同步;c.py stub 与 wiki 文档
更新为"无返回值直接嵌入原始 IR 文本"语义。
|
2026-08-08 16:10:36 +08:00 |
|
TermiNexus
|
acc126ce0c
|
基本稳定
|
2026-08-07 19:35:20 +08:00 |
|
TermiNexus
|
752f3ddb70
|
修正了部分实现
|
2026-08-06 19:50:18 +08:00 |
|
TermiNexus
|
2071486168
|
相对稳定版本
|
2026-08-06 18:04:12 +08:00 |
|
TermiNexus
|
4e17365b76
|
修正了 args 传参问题
|
2026-07-31 17:15:54 +08:00 |
|
TermiNexus
|
cfc30d735c
|
将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名
|
2026-07-30 16:33:56 +08:00 |
|
TermiNexus
|
1837339f69
|
修正了一些错误
|
2026-07-26 20:32:26 +08:00 |
|
TermiNexus
|
ca7c2120b8
|
修正了种子编译器的错误
|
2026-07-22 21:55:36 +08:00 |
|
TermiNexus
|
135aa05485
|
尝试进行 Qt 测试,增加了 AI 人机调试工具 _console,以及 TransPyV 进行修正
|
2026-07-21 14:41:22 +08:00 |
|
TermiNexus
|
a277ded8d4
|
修正了 TPC 的一些错误,包括 Test 维护后 TPV 无法重新编译或重编译后越界的部分问题
|
2026-07-20 11:12:30 +08:00 |
|
TermiNexus
|
0c6339ca5e
|
调整了上传规则
|
2026-07-19 11:44:01 +08:00 |
|
TermiNexus
|
639f418530
|
清理了部分垃圾
|
2026-07-19 11:42:41 +08:00 |
|
TermiNexus
|
7a8a3646db
|
重置上传,新增了多个标准库,开始 TransPyV 自举实验
|
2026-07-19 11:39:02 +08:00 |
|
TermiNexus
|
4e66207ba1
|
重置上传,新增了多个标准库,开始 TransPyV 自举实验
|
2026-07-19 11:38:15 +08:00 |
|
t
|
796222a300
|
snapshot before regression test
|
2026-07-18 19:25:40 +08:00 |
|