Commit Graph

  • 8461a3da47 fix(viperc): typedef 强转补充 stdint/win32base 解析兜底 main TermiNexus 2026-10-19 19:16:46 +08:00
  • 08fe5a7b6b fix(viperc): 支持多级模块路径的 typedef 强转(win32.win32base.LPCWSTR) TermiNexus 2026-10-19 19:16:00 +08:00
  • 37c15c9aa0 修改 README.md 为纯英文 TermiNexus 2026-10-19 18:25:15 +08:00
  • 850f61dc22 refactor(viperc): 清理标记下标推导中的内联类型转换 TermiNexus 2026-10-18 13:40:22 +08:00
  • 82a735c367 refactor(viperc): 完全删除 T1 | T2 类型组合,语法糖改用标记下标 TermiNexus 2026-10-18 13:39:38 +08:00
  • 42b094a575 refactor(viperc): 退役 t/c 模块标记,内建类型改由编译器直接识别 TermiNexus 2026-10-18 12:56:57 +08:00
  • 3242560d02 支持 tls 关键字,全面准备清退 t, c TermiNexus 2026-10-17 23:40:06 +08:00
  • 6e17716a69 revert(vtable): 恢复按类实际规模动态分配 TermiNexus 2026-10-17 19:22:50 +08:00
  • eff88dd591 fix(vtable): VTBL_METHOD_MAX 32 -> 1024 TermiNexus 2026-10-17 19:21:44 +08:00
  • bf0bbcc89b fix(vtable): 虚方法表按类实际规模动态分配,去掉 32 上限 TermiNexus 2026-10-17 19:19:46 +08:00
  • d46fdf152a refactor(struct): AST vtable 拷贝改为按 uint64 槽显式读写 TermiNexus 2026-10-17 19:13:08 +08:00
  • 3e1e1fc1b3 fix(gen): 消除 ViperC 侧 P0 级静默截断 TermiNexus 2026-10-17 18:46:18 +08:00
  • 15952d3852 fix(asm): 内联汇编/LLVMIR 文本缓冲扩容并将所有超限改为 fail-fast TermiNexus 2026-10-17 17:41:11 +08:00
  • 201c881b43 fix(assign): 拦截注解为类值类型但右值取地址的 typo TermiNexus 2026-10-16 20:19:51 +08:00
  • 19feb40e8c fix(call): 实参个数与被调方不符时前端 fail-fast - 不再漏到 LLVM verifier(含 EH 参数扣除与可变参数放行) TermiNexus 2026-10-16 19:26:22 +08:00
  • 2f4031b3d6 chore(typegen): read_all 长度参数去掉多余 ULONG 转换 TermiNexus 2026-10-16 16:40:41 +08:00
  • d8648176e9 feat(asm): op=/clobber= 支持裸枚举名(CLOBBER_MEMORY) - 等价 ASM_DESCR.XXX TermiNexus 2026-10-16 15:26:17 +08:00
  • e796314a24 fix(gi): 模块级空数组字面量 = [] 改走 zeroinitializer - 修大数组被逐元素展开(元素过多+池耗尽) TermiNexus 2026-10-16 13:02:38 +08:00
  • 7e9ed22dff revert(main): POOL_SIZE 回退 1GiB - 2GiB 触发 MemBuddy 内部索引溢出(_fl_push 在 __init__ 崩) TermiNexus 2026-10-16 12:13:02 +08:00
  • c57c931099 fix(cdefine): 支持浮点常量表达式(define X = 160.0 * 4) - 含浮点字面量时按浮点求值登记 double TermiNexus 2026-10-16 11:23:41 +08:00
  • 832b0a5706 chore(diag): [VAR-DIAG] 增加 alloca 地址打印 - 定位 pos/npos 共享存储(值语义被破坏) TermiNexus 2026-10-16 00:12:06 +08:00
  • 6196bdfe56 fix(gi): 模块级负浮点字面量按浮点初始化(不再送整型提取器) - 修 double = -100.0 报错 TermiNexus 2026-10-16 00:03:21 +08:00
  • d06e665ebd fix(cdefine): stub 读取对负浮点字面量/浮点强转包裹剥壳后再注册 - 修 X: double = -100.0 走整型提取 fatal TermiNexus 2026-10-15 23:46:25 +08:00
  • 5460d78ff1 fix(gi): 模块级类全局按值本位存储(仅 __new__ 类用指针) - 修 CAM: V3 被包成 Ptr 致悬垂误报 TermiNexus 2026-10-15 23:11:24 +08:00
  • 9d0a43d5e6 chore(diag): [GVAR-DIAG] 模块级全局类型决策(hasnew/hasvtable/isoop) - 定位 CAM 被包成 Ptr TermiNexus 2026-10-15 23:06:20 +08:00
  • 15a210bede chore(diag): 变量声明槽类型 [VAR-DIAG] - 定位 class 标注是否被解析成 ptr TermiNexus 2026-10-15 23:00:04 +08:00
  • 59c032f135 chore(diag): CTOR-DIAG 打印构造类型与目标类型的真实 LLVM 文本 - 定位 CAM 全局值本位 TermiNexus 2026-10-15 22:53:23 +08:00
  • 23236c88ea fix(lifetime): 裸构造判值拷贝不再依赖类型打印比较 - 修 CAM = V3(...) 全局赋值误报 TermiNexus 2026-10-15 22:26:17 +08:00
  • d1dd6de070 fix(lifetime): 目标为值类型即判 LIFE_VALUE(不再要求源非指针) - class 局部变量内部为指针槽,修 stars 误报 TermiNexus 2026-10-15 21:59:39 +08:00
  • cbadc356f9 chore(diag): life 判定加全量诊断 [LIFE-DIAG]/[RT-DIAG] - 定位 return col 误判 TermiNexus 2026-10-15 21:54:08 +08:00
  • 5dc483e256 fix(lifetime): 值类型变量按值拷贝判据改为双非指针(不再依赖类型打印比较),堆/静态登记优先 TermiNexus 2026-10-15 21:47:30 +08:00
  • 6b86f846ca fix(lifetime): 值类型局部变量在同型聚合目标位置按值拷贝(LIFE_VALUE) - 修 return col 被误判 stack address escapes TermiNexus 2026-10-15 21:40:30 +08:00
  • 217f5f021d fix(viperc): 解引用赋值补位拷贝(*a = *b 按位重解释,不做数值转换) TermiNexus 2026-10-15 20:09:09 +08:00
  • 5ea0ce094e fix(viperc): 恢复一元负号字面量按目标类型直出 f32(位宽根因已修,路径不再有风险) TermiNexus 2026-10-15 19:43:15 +08:00
  • 3e52baa209 fix(viperc): 回退一元负号字面量的 f32 直出,保留正号字面量与 CDefine 的 f32 直出 TermiNexus 2026-10-15 19:25:49 +08:00
  • 508428bbc9 fix(viperc): 浮点常量按目标类型/声明宽度直接出 f32,不再先出 double TermiNexus 2026-10-15 18:35:48 +08:00
  • 3a687db0bb feat(viperc): 静态常量算式补上除法/整除/取模折叠(与运行期 sdiv/srem 同口径) TermiNexus 2026-10-14 22:28:43 +08:00
  • 38a277a914 feat(viperc): 纯常量折叠补上 / // %,与 + - * 同口径(精确值 + 按值自动提升位宽) TermiNexus 2026-10-14 22:27:55 +08:00
  • dc4468593c fix(viperc): CDefine 常量按位宽处理时不再把可容正值翻转成负数,修常量算式折错 TermiNexus 2026-10-14 22:20:52 +08:00
  • a143c2de0c fix(stubgen): 装饰器循环变量改名 ddi,避免与默认值处的注解声明 di 冲突 TermiNexus 2026-10-14 21:13:03 +08:00
  • 7da9d7cb0d fix(viperc): 位宽探测循环改为固定 64 次上界,修主编译器死循环 TermiNexus 2026-10-14 19:54:29 +08:00
  • d09b79995d fix(viperc): 运行期纯常量整型算式按精确值折叠并按值定宽,禁止最小宽度回绕 TermiNexus 2026-10-14 19:39:11 +08:00
  • 61f23d99a1 fix(viperc): 静态常量求值对 + - * << 按结果值加宽,杜绝 define 算式静默回绕 TermiNexus 2026-10-14 19:18:52 +08:00
  • 813b59e25f fix(viperc): 修正 (expr).method() 接收者误入 get_attribute_ptr 导致的 strcmp(_,0x1) 崩溃 TermiNexus 2026-10-14 17:57:01 +08:00
  • ee3337f3c4 revert(viperc): 回退闭包变量取址的放行,仅保留“实参级报错定位” TermiNexus 2026-10-14 17:40:53 +08:00
  • a060e1d76e fix(viperc): 闭包变量取址返回闭包指针,并让方法/构造实参转换报错定位到具体实参 TermiNexus 2026-10-14 17:38:50 +08:00
  • 3c6041c97c fix(viperc/diag): 把“当前实参位置”的记录点下沉到 translate_call_arg(覆盖所有调用路径) TermiNexus 2026-10-14 17:13:38 +08:00
  • ca81c1185c diag(viperc): 放宽报错位置兜底判据 + 临时打印定位决策输入(定位后删除) TermiNexus 2026-10-14 17:08:59 +08:00
  • 40ea5d6513 fix(viperc/diag): 节点行号等于函数定义行时也用实参位置兜底(定位到具体表达式) TermiNexus 2026-10-14 17:02:16 +08:00
  • 4f45b391ea fix(viperc/diag): 保留函数定义帧,不覆盖栈帧位置(补齐“定义帧 + 出错语句帧”两帧) TermiNexus 2026-10-14 16:51:51 +08:00
  • d6b87da063 fix(viperc/attr): 不再要求 import c 才认 @__attribute__(否则函数属性被静默丢弃) TermiNexus 2026-10-14 16:42:16 +08:00
  • 0f2675e794 fix(viperc/codegen): Win64 变参提升按实参符号性选择 zext/sext,避免无符号值高位被填脏 TermiNexus 2026-10-14 16:41:58 +08:00
  • 0678cc8c48 feat(viperc/diag): 报错定位到具体表达式 + 栈帧跟踪当前语句(方案 A+B) TermiNexus 2026-10-14 16:40:35 +08:00
  • 70c271d2a4 fix(viperc): &func 对函数指针变量应取其值(Ptr(Func) 一级),不再多一层地址 TermiNexus 2026-10-14 16:37:37 +08:00
  • 9d02a3ac0b improve(viperc/diag): 指针级数不符报错补印“级数 + pointee 类型” TermiNexus 2026-10-14 16:01:09 +08:00
  • 6b180c8f59 fix(viperc/life): 进程入口豁免补上 _start(ViperOS 应用入口),消除栈逃逸误报 TermiNexus 2026-10-14 15:53:28 +08:00
  • a23c1bda3e fix(viperc/diag): 调用栈帧与错误点同位置时不再重复打印 TermiNexus 2026-10-14 15:53:05 +08:00
  • dc24970af2 fix(gen): 修 __before_init__ 字段默认值写入的参数次序(build_store 缺 builder/file 顺序颠倒),修编译期参数缺失报错 TermiNexus 2026-10-13 21:46:20 +08:00
  • ea54d5685d feat(gen): virtual(HasVTable)类豁免「无 def => struct」规则,必须合成 __before_init__/__init__ 且必发 vtable;非泛型构造路径按符号存在性判定调用 TermiNexus 2026-10-13 21:29:24 +08:00
  • 99a021ad67 fix(gen): 类合成默认构造——有方法但无显式 __init__ 的类合成空 __init__(补 undefined 符号);完全无 def 的类按 struct 处理,不合成 __init__/__before_init__ TermiNexus 2026-10-13 20:59:41 +08:00
  • 12da1cbfc1 fix(gen): define 复用前置声明时按源码形参名对齐签名参数名,修签名与函数体两套参数名导致 MLIR「region entry argument already in use」 TermiNexus 2026-10-13 20:33:06 +08:00
  • bc1eeb6e38 feat(gen): REPL 会话变量的复合赋值下传槽类型作为 target_ty(复用 repl_slot_ty,缺失即 fail-fast),与二元/普通变量路径对齐 TermiNexus 2026-10-13 20:04:34 +08:00
  • c1e5a11962 feat(gen): 复合赋值统一二元运算口径(常量无损适配另一侧、不做整数提升、RHS 按左值类型翻译),修 u16 -= 1 误报窄化 TermiNexus 2026-10-13 20:01:16 +08:00
  • d2138678ef feat(gen): 同型聚合值 -> 同型聚合指针 允许隐式值拷贝(调用者帧溢出临时槽后取址),修裸类形参接收聚合值实参报错 TermiNexus 2026-10-13 18:33:49 +08:00
  • 1c3cdf3493 fix(stub): 消费模块补齐按值返回聚合的具名结构体完整体(_inject_method_declare 补 _ensure_full_value_types、_inject_class_struct_declare 补登完整定义),修 MLIR opaque 报错 TermiNexus 2026-10-13 17:48:57 +08:00
  • 377c0db5d3 fix(gen): life_of_expr 的构造分支按目标类型判定——目标为同型聚合值时判 LIFE_VALUE(值拷贝),不再误判帧逃逸 TermiNexus 2026-10-13 17:48:35 +08:00
  • 6cb1f525d9 feat(gen): 常量操作数隐式适配另一侧位宽(仅另一侧非常量时),修 u16 变量 + 字面量被抬到 i32 导致误报窄化 TermiNexus 2026-10-13 17:01:53 +08:00
  • a01e9280cc fix(stub,phase1): 因取消整数提升,模块属性 CDefine 的窄乘法显式加宽为 sizet(修缓冲区尺寸回绕成 0/负值) TermiNexus 2026-10-13 16:34:39 +08:00
  • 14d8c05a2a feat(gen): 二元运算取消 C 式整数提升(任何位宽不再默认提升到 i32),改为按 max(两侧)/目标位宽运算 TermiNexus 2026-10-13 16:20:02 +08:00
  • 97c0a1c6fd fix(gen): 取消「宽整型 -> bool(i1)」的隐式真值归一化,改为 fail-fast(仅保留编译期常量豁免) TermiNexus 2026-10-13 16:07:43 +08:00
  • d7c5af9b80 fix(gen): callable[[]] 省略返回类型按 void 注册(作为值使用时报错,不再静默按 int) TermiNexus 2026-10-13 13:32:47 +08:00
  • cb2dc4cb3a feat(gen): 字节序 bswap 改为按目标端序判断(BigEndian/LittleEndian 都相对目标),原语改名 apply_byte_order_bswap TermiNexus 2026-10-13 13:29:03 +08:00
  • 444e87dd7d fix(gen): callable[[]](省略返回类型)按默认 int(i32) 注册函数指针签名,修间接调用签名缺失 fail-fast TermiNexus 2026-10-13 13:26:51 +08:00
  • d3997e0746 fix(gen): 函数指针变量别名(f2: rawptr = f)继承已注册的返回类型签名,修 rawptr 间接调用的签名缺失 fail-fast TermiNexus 2026-10-13 13:26:11 +08:00
  • 32599a08c1 fix(stub): .vpi 读取侧复刻字段标记判定(volatile/pointee-volatile/const/字节序),跨模块不再丢字段标记 TermiNexus 2026-10-13 12:30:23 +08:00
  • 37c4b0da3b feat(gen): 字节序 bswap 代码生成——字段/局部变量/数组元素读写处成对 llvm.bswap(仅 BigEndian 且 16/32/64 位整数) TermiNexus 2026-10-13 12:30:05 +08:00
  • 5d15d01e21 feat(gen): 支持 t.BigEndian / t.LittleEndian 字节序描述符(注解识别 X|marker 并把字节序登记到 FieldEntry.ByteOrder,暂不生成 bswap) TermiNexus 2026-10-13 12:17:02 +08:00
  • 3ca2165fd9 feat(gen): 指向同型聚合的指针→同型聚合值允许隐式值拷贝(裸类形参 T* ABI 的直接赋值仍按值拷贝) TermiNexus 2026-10-13 10:30:15 +08:00
  • b859f8a136 fix(gen): CDefine 常量(含 mod.N 属性形态)拓宽方向单独判定——负值 sext、非负 zext,修 zlib 窗口尺寸被 sext 成负数与 Z_DEFAULT_COMPRESSION->255 TermiNexus 2026-10-12 21:48:05 +08:00
  • 22475e0fda fix(gen): 逃逸检查把模块级(根 scope)变量判为 LIFE_STATIC,修模块级数组 return 误判帧逃逸(pyzlib_error_msg) TermiNexus 2026-10-12 21:23:23 +08:00
  • c0ff5c9d96 fix(gen): 复合赋值取消「右值有符号 vs 左值无符号」拦截,与二元 x = x op y 口径一致(修 sizet += int 误报) TermiNexus 2026-10-12 21:16:50 +08:00
  • c9562a6e04 feat(gen): 一元 +/-/~ 按符号性提升——u 类不提升(保持原位宽),i 类提升到 i32 防负数陷阱 TermiNexus 2026-10-12 21:10:06 +08:00
  • d206abf3e1 chore: 全仓同步 w32→win32 模块改名与 range(int(...)) 显式收窄适配 TermiNexus 2026-10-12 20:59:11 +08:00
  • ea2af739dd feat(gen): range 边界与循环变量统一提升到至少 i32(取消 u8/u16 循环变量档),u64 边界保持 i64 TermiNexus 2026-10-12 20:57:12 +08:00
  • 00bf7ebf38 fix(gen): 非负 define 常量按最小位宽的无符号位模式参与宽化/比较(修 range(50000) 迭代 0 次) TermiNexus 2026-10-12 20:52:52 +08:00
  • e3743b185f fix(gen): zip/enumerate 的 range 源工作位宽随参数(仿 for-range),修 range(3) 被 i64 索引误判窄化 TermiNexus 2026-10-12 20:24:50 +08:00
  • 54b239747e chore(gen): 清理「按值物化」残留注释(裸类形参即 T*,非值语义槽) TermiNexus 2026-10-12 20:03:10 +08:00
  • ae12ae8581 Revert "feat(gen): 裸类形参按值物化(值语义),调用方 ABI 不变" TermiNexus 2026-10-12 19:56:02 +08:00
  • 001f8afc37 fix(gen): 常量适配限定为位运算,算术一律按 C 语义拓宽(修 i8 乘法回绕致 memhub 不变式误报) TermiNexus 2026-10-12 19:40:13 +08:00
  • e7b05c6a3d fix(gen): 三元表达式两支统一按常量无损适配,修 i8 表元素 vs 字符字面量被抬成 i32 的窄化误报 TermiNexus 2026-10-12 19:27:58 +08:00
  • 3d638927d5 fix(gen): 移位的工作位宽不计入计数宽度,修 ushort 表达式被抬成 32 位后赋回 ushort 误报窄化 TermiNexus 2026-10-12 19:22:36 +08:00
  • 4a66aa7fd2 feat(gen): 二元运算采用目标感知工作位宽(仿 C:算到目标位宽;移位只提升左操作数),隐式窄化仍禁止 TermiNexus 2026-10-12 18:53:50 +08:00
  • 9d02cc4684 fix(gen): 移位按 C 语义把左操作数提升到 int,且移位数不参与常量适配(修 uchar<<8 误报) TermiNexus 2026-10-12 18:42:54 +08:00
  • 65c72fd55c fix(gen): 二元运算按常量无损适配另一侧位宽,修 crc(uint)^0xFFFFFFFF 被抬成 64 位 TermiNexus 2026-10-12 18:32:55 +08:00
  • 8453698f66 chore(gen): ExprGenBase 残留清理(range(int()) 与 TPV->VPC 注释) TermiNexus 2026-10-12 18:25:56 +08:00
  • 74fafb3b56 fix(gen): 整型字面量宽度按值推导(新增 u32 档)+ 显式宽度严格校验 TermiNexus 2026-10-12 18:25:38 +08:00
  • f044d94e90 fix(gen): -x/~x 对编译期常量折叠,修负字面量被隐式窄化误拦 TermiNexus 2026-10-12 18:25:24 +08:00
  • 87914b0a51 feat(gen): 裸类形参按值物化(值语义),调用方 ABI 不变 TermiNexus 2026-10-12 18:25:04 +08:00
  • d7a5f7e68b fix(gen): 值语义聚合槽豁免改为类型级判定,去掉易漏判的槽身份比较 TermiNexus 2026-10-12 16:56:03 +08:00
  • 7c11c589f7 fix(gen): 值语义聚合槽允许隐式值拷贝,修 self.field = param 的 Foo* -> Foo 误报 TermiNexus 2026-10-12 16:42:52 +08:00