更复杂的 泛型 复杂原始(仿Python)函数装饰器 # main 收集(和 导入模块的自动执行) 元类型 # @p.set # 函数的描述符用装饰器而不是返回值 崩溃/返回作用域 回调 # 假鸭子 # f-string 自动 snprintf # __doc__(后续需完善) # 自动索引 # testcheck默认中文 vdebug 工具和 vsdt 工具 多态 ops 允许单个函数拥有装饰器(可修改,走函数指针) 协程关键字支持 with 出入多态 # 哈希表 内联快速迭代器 出栈调用函数 # 构造函数隐式参数 小数组直接栈上创建+ i in [xxx] # 字符串索引 单函数 @t.CVTable import 自动执行代码 限制全局 import 符号到局部(其他文件import而本文件没import,但是仍然生效不报错) 生成器表达式 await 表达式(平台无关协程支持) # 统一 mpool 和 mbuddy 接口 MCViper after 自举 # Ptr解引用含义冲突,a[x]与ptr[x]冲突 __iter__ 期望 for a, b in __iter__ init_set 构造 不在乎编译器时间的大小优化(无关符号剔除) 给 linkedlist 库改成 node 库,或者拆分 linkedlist 库 TPV 的 typedef 名是硬编码的,后期尝试修正 TPV 再次支持泛型能力检查和字节序 TPV 避免虚类问题,参见 ast/base.vp:224行 TPV 虚类判断问题,参见 ast/parser.vp:2037行 替换式实现注入猴子,带有含函数指针检测和函数指针还原 高级 define(时间戳,版本,config项) 更多新关键字 编译期表达式计算 结构子(反射型 runtime lookup 鸭子(看起来像跑起来像,就是鸭子,愿意)) 函数前后父子构造钩子 元对象协议 MOP 的编译期版本 多分派实验 Mixin 方法直接调用的合法性静态检查:MixinC2.outer2(c) 用非组合类实例直接调用,编译通过(兜底 this_adjust 前移)但运行期越界——Mixin 方法必须经组合类实例调用。日后"编译器提前报错预警"功能需在调用处验证 self 类型的组合完整性(NoVTableCrossMixinTest Test 2/3 边界) # ========== 去除 Handles 层(计划 2026-08-21,StringTest Phase A 字段分裂已修复) ========== # 目标:删除 lib/core/Handles/(32 文件 469 模块函数 98.9% 纯 _g_gen 委托壳),逻辑并入 Gen # 子对象,调用点改 self.Gen.X 真源(防字段分裂),管线经 gen 对象调用,删 _g_gen 注入。 # 阶段 0: 基线——StringTest Phase A 修复已验证通过 # 阶段 1: 常量/数据类/实体类迁入 Gen(Translator/TypeRegistry/ExprHandle/ExprCallHandle/13 数据类/常量,保留 HT 别名) # 阶段 2A: HandlesType(558)→TypeGen*/ClassGen*/StmtGenCif # 阶段 2B: HandlesStruct(476)→StructGenMixin; HandlesExpr(417)→ExprGen* # 阶段 2C: HandlesVar(269)→VarGenMixin; HandlesExprCall(217)+ExprCall* 6 文件(104 _g_gen 样板)→CallGen* # 阶段 2D: HandlesClassDef(120)→ClassGen*; HandlesImports(84)→ImportsGenMixin; HandlesFunctions(40)→FuncGen* # 阶段 2E: 小模块 Body/Enum/Nonlocal/Return/If/While/For/Match/Assign/AnnAssign/AugAssign/Main/ExprOps/Base/ForHandle* 删除 # 阶段 3: 管线入口改造(BuildPipeline/Phase1/2/StubMerger*/VpiReader/Converter ~60-70 处)+ main/BuildPipeline _g_gen 注入块删除 # 阶段 4: 删 Handles/ 目录、清 import、全量自举验证(Phase A/B/C) # 风险: 字段分裂铁律(一律 self.Gen.宿主.字段 真源); Translator 395 处 HT 类型注解用别名; 链式调用深度 $env:TPC_ASAN="0"