TermiNexus
|
e71daeea0e
|
docs(includes): R11 注释英文化——75 个文件的中文注释改写为英文短注释
按规范「注释只讲解作用,不掺杂历史原因,尽量英文」:把 includes 下 75 个 .vp 的中文 # 注释与三引号 docstring 改写为英文,每个注释块压到 2 行以内。
保留要点:作用、约束、危险警告(不得/必须/注意)、ABI 与类型约定(如 BYTEPTR | t.CPtr = i8** 的跨模块坍缩坑)、位宽/长度约定、fail-fast 要求、内存与句柄所有权。
未动:文件头注释(规范豁免,仍是中文)、运行时中文字符串常量(printf / fatal_error / MlirFail 等用户可见消息,属代码字面量)。
验证:独立脚本比对 HEAD 与工作区的代码骨架(剥离 # 注释与三引号 docstring 后的非空行)——75 个文件逐字节一致;行尾 CRLF/LF 未被改动;全文剩余中文仅 547 行头注释、0 条行尾注释。bootstrap 三重重编 SUCCESS;全量 77/77 顺序回归通过。
|
2026-10-05 16:18:44 +08:00 |
|
TermiNexus
|
e80284a6d5
|
refactor: 全量迁移 includes 到新规范语法
按根目录 新规范 迁移 R1/R2/R3/R4/R6/R7/R8/R9:指针 T* 后缀、内建类型短别名、c.Addr/c.Deref 单目化、c.Asm 改 __asm__、t.CDefine 改 define 软关键字、t.CEnum 改 enum。R4 对内建 cast 多参实参保留 c.Deref 原写法(单目化会致 TPC 类型退化)。验证:includes 52/52 编译通过,TransPyV 自举产物顺序回归 77/77 全通过。
|
2026-10-05 09:04:46 +08:00 |
|
TermiNexus
|
7651da8ac9
|
feat(traceback): 崩溃也要有栈——挂 SetUnhandledExceptionFilter 做未处理异常转储
动机:实测同一处崩溃开 ASan=0x80000003(int3)、关 ASan=0xC0000005(AV),两者都没有任何堆栈(ASan 过了报告窗口就不再输出)
Install 追加注册 SetUnhandledExceptionFilter(CrashHandler)(与 SetConsoleCtrlHandler 并列,均在 _State.Installed=1 之前挂好);CrashHandler/DumpCrashThread 在出错线程上转储:EXCEPTION_POINTERS/EXCEPTION_RECORD 一律经 ReadProcessMemory 读取,OS 的 CONTEXT 先拷进 ContextBuf 再走栈(StackWalk64 会回写它遍历的记录,直接传 OS 的记录会改坏异常上下文)
恒返回 EXCEPTION_CONTINUE_SEARCH:本路径只补栈,绝不吞异常(退出码/WER/ASan 报告行为原样保留);走栈 dbghelp 优先(崩溃点通常在系统 DLL 里)→ RBP 链 → 栈扫描,与 Ctrl+C 转储共用同一把重入锁
抽出 DbgHelpUsable() 与 PrintFrames() 给两条路径共用(DumpMainThread 同步改用,行为不变)
win32process.vp 新增 SetUnhandledExceptionFilter 声明 + EXCEPTION_POINTERS/EXCEPTION_RECORD 布局注释;traceback.vp 新增第十四节,第一/二/六节文档同步
|
2026-09-28 12:03:15 +08:00 |
|
TermiNexus
|
923f7e3099
|
fix(w32): 补回 CONTEXT 缺失的 LastBranchToRip/LastBranchFromRip(修 dbghelp 写穿 ContextBuf)
winnt.h(AMD64) 在 DebugControl(0x4A8) 之后还有 LastBranchToRip(0x4B0)/LastBranchFromRip(0x4B8),本仓结构漏了这两个字段 ⇒ sizeof(CONTEXT) 只有 0x4C0=1216,而系统/dbghelp 按 0x4D0=1232 读写
现场:dbghelp!StackWalk64 每走一帧都把 0x4D0 的 CONTEXT 写回传入的 ContextRecord,ASan 抓成 heap-buffer-overflow WRITE of size 1232(0 bytes after 1216-byte region,区域由 Install 的 calloc 分配);GetThreadContext 同样按 0x4D0 回写(内核写入 ASan 看不到,属同类静默越界)
同步布局注释与合计尺寸为 0x4D0=1232,并注明这两个字段必须保留
|
2026-09-28 11:53:28 +08:00 |
|
TermiNexus
|
b208eae8f3
|
feat(dbgstack,parser,asm): 新增按键栈转储运行时;前置数组声明符/union 语法;asm 迁移新语法
新增 includes/dbgstack.vp: 挂起主线程取 x64 CONTEXT + RBP 链逐步取证 + 栈扫描兜底(4KiB 分块 ReadProcessMemory);按 <exe>.stackmap 下界查表输出 <文件>.vp:行 (函数);控制台 ASCII 输出并双写 UTF-8 <exe>.stackdump.txt;ASan 与 DbgHelp 冲突显式降级不静默;lock cmpxchg 原子重入(不用 InterlockedCompareExchange: x64 上是编译器内部函数、无导出符号)。
新增/补 w32 头: win32dbghelp.vp(新)、SetConsoleCtrlHandler、x64 CONTEXT、ReadProcessMemory。
parser.vp/tokens.vp: [N]T/[]T/const [N]T 脱糖为 t.CArray;新增 union NAME: 语句(Keyword.Union 追加表尾);list[rawptr[AST]] elem_size 2/4 改 8;新增 _record_parse_err_ctx 把 token 类型与前后 token 并入错误消息,去掉 [AST] SyntaxError 遗留单行 printf。
asm.vp: 整文件迁移到 __asm__/asminp/asmout/裸 ASM_DESCR。
|
2026-09-25 13:11:15 +08:00 |
|
TermiNexus
|
0f556463e7
|
修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善
|
2026-09-23 17:42:03 +08:00 |
|
TermiNexus
|
14ff9d109f
|
从 TransPyC 主项目中分离 VRTE
|
2026-08-17 11:01:35 +08:00 |
|