TermiNexus
07de92cbda
feat(list): writing past the end extends the logical count
...
`l[i] = v` now grows the data buffer when the index is beyond capacity
(double, or i + 1 for a far index), copies the live prefix, and extends
`__count__` to i + 1 when the index is at or past the logical end.
Writing an existing index keeps the count unchanged. `__setitem__`
delegates to `set` so both spellings share the rule.
2026-11-02 11:34:52 +08:00
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
6ff26a16b9
refactor(_list): 清理未使用导入,append 的 new_data 改用 rawptr
...
- 去掉未使用的 `import t, c` / `import stdio` / `from stdint import *`
- new_data 由 t.CPtr 改为 rawptr(与 __data__ 字段同为裸指针),顺带对齐
2026-10-01 18:30:44 +08:00
TermiNexus
7f513b86aa
style(_list): 元素访问统一改为 *elem_ptr 前缀解引用写法
...
append/get/__getitem__/set/__setitem__/pop/__next__ 共 7 处 `elem_ptr[0]` 改为 `*elem_ptr`,
与其他裸指针解引用写法(如 _dict.vp 的 `*int_ptr` / `return *val_ptr`)保持一致,语义不变。
2026-10-01 18:09:39 +08:00
TermiNexus
bb05e112ec
refactor(_list): 元素地址运算去掉 uint64 往返,改用 i8* 指针加法
...
rawptr 即 i8*,指针加法按 pointee(1 字节) 缩放,与 uint64(ptr)+n 再强转回指针逐字等价。
元素步长仍显式由 __elem_size__ 给出,故不能改成下标访问(list[int](pool,8) / list[str](tp,64) 依赖显式步长)。
承接 0f92426 中遗留的裸指针 uint64 手动计算待重新处理。
2026-10-01 18:00:57 +08:00
TermiNexus
0f924264ea
将 _list 的部分写法升级到最新范式,裸指针 uint64 手动计算便宜还需要重新处理,暂时如此,后续还需要再更新
2026-09-30 00:36:50 +08:00
TermiNexus
0212bd942c
fix(includes): 槽视图改为 cast 到声明类型(地址 → 二级指针不再隐式转换)
...
【类别 c 源码违规】`slot: <A> = t.CPtr(addr)` 把一级指针(i8*)隐式塞进二级注解
(i8** / X**),违反 2026-09-28 收紧的「指针级数必须相同」。TransPyV 侧 coerce
没有「值侧是显式 cast」豁免(ExprGenBase._ptr_cast_reason 先比层数),故回归测试
在 includes/llvmlite/__function.vp:950 首爆:
指针隐式转指针已禁止:指针层数不同(源 1 级 → 目标 2 级);源类型 i8* → 目标 i8**。
判据(按注解层数分类,不枚举调用点):
· str / bytes 本身即 i8*(含一层),再 | t.CPtr ⇒ i8**(槽里存的是 str)
· str* / bytes* 同 str | t.CPtr(i8**)
· T | t.CPtr:T 为指针特化时 ⇒ X**(如 list[X*]、list[str])
· A | t.CPtr | t.CPtr:逐层叠加 ⇒ 二级(如 hashtable 的 value 槽)
一级注解(int | t.CPtr = i32*、t.CUInt64T | t.CPtr = i64*、类名 | t.CPtr = X*)
与 i8* 同级且 i8* 是通用指针通配 ⇒ 本可编译,一律保持原样不动。
修法:RHS 改为**cast 到声明类型**,即「注解写什么就 cast 什么」——
`t.CPtr(addr)` / `(t.CPtr)(addr)` / `rawptr(addr)` → `(A)(addr)`;
`str*` 注解沿用 sys.vp 既有写法 `str*(addr)`(等价于 `str | t.CPtr` 强转)。
显式写明目标类型后,层数与被指类型均由程序员给出,编译器无需任何豁免。
与 TransPyV/App CallGenCBuiltin.vp 的 `cl_ptr: str | t.CPtr = (str | t.CPtr)(cl_addr)`
以及 includes/vector.vp 的 `dst: T* = (T*)offset` 同一写法。
本仓改动 27 处 / 5 文件:
_list.vp 7
_dict.vp 9(8 处槽视图 + L63 的 `key_ptr: str* = rawptr(...)`)
hashtable.vp 6(含 3 处 …|t.CPtr|t.CPtr)
llvmlite/__function.vp 2
mlirlite/__function.vp 3(2 处槽视图 + _mlir_slotp 的 return:该函数返回注解
即 str | t.CPtr,其 return 同属「i8* → 二级」)
未动其它一级注解站点,例如 _dict.vp 的 int/float/t.CDouble/t.CInt | t.CPtr、
hashtable.vp 的 t.CUInt64T | t.CPtr、argparse.vp:168 的 Argument | t.CPtr。
2026-09-29 15:10:33 +08:00
TermiNexus
db3be6968f
fix(memhub,gzip): 内存池 OOM 归属画像与 free 拒绝现场;gzip 注解 *= 词法粘连
...
memhub: alloc 失败打印归属 site/ctx 与存活块 order 分布(新增 dump_alive_orders);free 被 _is_valid_ptr 拒绝时首次打印现场;接通 big_alloc_count
gzip: ub: uchar*= buf 补空格(*= 被词法合并为单 OP,注解止于 uchar)
新增 traceback 模块;删除 dbgstack.vp;其余模块随新语法与尺寸口径同步
2026-09-26 19:27:24 +08:00
TermiNexus
0f556463e7
修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善
2026-09-23 17:42:03 +08:00
TermiNexus
0d77b68cc4
修复了一些错误
2026-09-18 20:01:14 +08:00
TermiNexus
785e825518
清理了 t.CVoid
2026-09-16 16:07:35 +08:00
TermiNexus
f087aa88e2
更新,可自举
2026-08-27 10:16:28 +08:00
TermiNexus
14ff9d109f
从 TransPyC 主项目中分离 VRTE
2026-08-17 11:01:35 +08:00