TermiNexus
|
660a15bef8
|
refactor(tpc): 删除类型联合语法并将修饰迁移为 AST 字段
类型注解不再接受任何 T1 | T2;const/volatile/static/export/extern/inline/define/typedef/__attribute__/BigEndian/LittleEndian/Bit 改为注解节点字段 Markers/Attributes/ByteOrder/BitWidth;指针与引用改为 CPtr[T]/CRef[T]/CTempRef[T]/CArrayPtr[T]/CAutoPtr[T];Python 与 vast_c 两套解析器、类型解析与声明端同步;C 扩展早于 vast_c.c 时自动回退纯 Python 解析器。
|
2026-10-18 13:35:34 +08:00 |
|
TermiNexus
|
23b47053d9
|
chore: 同步 TransPyV→ViperC 改名、new 表达式支持与定宽字面量/窄化适配
|
2026-10-12 20:59:39 +08:00 |
|
TermiNexus
|
74cfaeb917
|
feat(switch): 新增 switch 语句并禁止 match 内 fallthrough
- vast/Nodes.py:Match 增加 is_switch 字段(含默认值)
- vast/Parser.py:新增 _ParseSwitch(case <常量|枚举变体> / default:,desugar 为 Match(is_switch=True));match / struct / fallthrough 改为硬关键字
- vast/Unparser.py:round-trip 忠实还原 switch 与 default:
- HandlesMatch / HandlesBody:新增 in_switch_case 门控,fallthrough 只允许出现在 switch 的 case 体内
- HandlesFor:补齐嵌套函数的 saved_loop_break/continue_targets 定义(修 NameError),并隔离 in_switch_case
- LLVMCG/BaseGen:新增 in_switch_case 状态
|
2026-10-02 23:15:42 +08:00 |
|
TermiNexus
|
45e78ad107
|
基线重置,修复了一些 bug
|
2026-09-07 14:46:02 +08:00 |
|
TermiNexus
|
0230385891
|
feat(tpc): 新增单目 * / & 运算符(Deref/AddrOf)AST 节点与 LLVM 翻译
|
2026-08-28 07:34:58 +08:00 |
|
TermiNexus
|
567d925235
|
perf(tpc): PROF 热点优化——vast 节点 _Init unroll 特化 + isfile 结果缓存
- vast/Nodes.py:_MakeNodeClass 动态生成 __init__,全位置参数路径按字段
索引直赋(unroll,去 zip 迭代器),语义与通用路径完全等价
(PROF:_Init 158 万次 29s 最大纯 Python 热点,实测 ~1.4x)
- Phase2Translator.py:新增模块级 _CachedIsFile(编译进程内文件状态稳定),
替换全部 os.path.isfile 存在性检查(PROF:2.6 万次 16.4s)
|
2026-08-22 03:08:29 +08:00 |
|
TermiNexus
|
043c65ee52
|
fix(vast): FunctionDef 槽位补 Extern/Export,修 __slots__ 回归 AttributeError
_ParseExternDef/_ParseExportDef 设置 node.Extern/node.Export(动态属性),
__slots__ 类无 __dict__ 导致 AttributeError: 'FunctionDef' object has no
attribute 'Extern'。FunctionDef/AsyncFunctionDef 的 attrs 补
Extern/Export(_FUNC_ATTRS),槽位随之包含;unparse 用 getattr 读取兼容。
extern/export 冒烟 + vast 差分 51/53 0 FAIL。
|
2026-08-18 05:12:09 +08:00 |
|
TermiNexus
|
9605af8ea1
|
perf(vast): AST 节点类加 __slots__,去 __dict__ 提速降内存
AST 基类 __slots__=(),131 个动态节点类按 fields+attrs 生成 __slots__,
_Init 改 object.__setattr__;类默认值改为 _node_defaults 字典(原类属性
与 __slots__ 冲突)。解析提速 ~9%,实例内存 Name 由 48B+独立 dict 降为
80B 平铺,无 __dict__ 残留。Python 3.12 pickle 对 __slots__ 类开箱即用
(__reduce_ex__(2)),131 类 pickle roundtrip 全过,vast 差分 51/53 0 FAIL。
|
2026-08-17 23:27:43 +08:00 |
|
TermiNexus
|
e25095da43
|
perf(vast): _At 内联 _Peek(0) 缓存逻辑 + Node 构造 __dict__ 直写
_At 被调用 1384 万次,每次经 _Peek 再取 token;内联 _Peek(0) 缓存
(_PeekCacheIdx/_PeekCacheTok)省 2300 万次函数调用,实测单文件解析
端到端提速 ~37%。_Init 的 setattr 改 __dict__ 直写(AST 节点无
__slots__/property,行为等价)。vast 差分测试 51/53 PASS 0 FAIL。
|
2026-08-17 22:20:28 +08:00 |
|
TermiNexus
|
6fc9e19e24
|
feat(vast): 新增自研 Viper/Python 语法解析器取代标准库 ast
TPC 侧取缔对 Python 标准库 ast 模块的依赖,改用 lib/vast 包:
- Nodes: 与 CPython 3.12 ast 完全同构的 131 个节点类(含抽象基类继承)
- Tokenizer: 词法分析(缩进/字符串/f-string/数字/运算符/软关键字)
- ExprParser: 表达式递归下降解析(优先级/lambda/推导式/f-string/切片)
- Parser: 语句解析(def/class/if/for/try/with/match/import/注解)
- Utils/Unparser: walk/dump/unparse/copy_location/literal_eval 等辅助
- 软关键字 fn/fun/func/function 并入解析器, 废除 ExpandSoftKeywords 预处理
- lib/_bootstrap 将 lib 目录加入 sys.path, import vast as ast 零修改替换
- 52 个文件 import ast 替换为 import vast as ast; 94 文件差分测试 0 失败
|
2026-08-17 09:36:38 +08:00 |
|