TermiNexus
|
785e825518
|
清理了 t.CVoid
|
2026-09-16 16:07:35 +08:00 |
|
TermiNexus
|
119951c5df
|
chore: 移除 GSList/PrintModule 的临时 DBGCHAIN 护栏
linkedlist.vp: GSList.append 的 4 处 [DBGCHAIN] 链完整性护栏整块删除(含只为护栏引入的局部变量与 stdlib.exit 分支),并删除因此失效的 import stdio / import stdlib
llvmlite/__module.vp: LLVMModule.PrintModule 的两处 [DBGCHAIN] 指针合理性护栏整块删除;同函数的 [IR-DUMP] 遍历守卫与绕开 stub 字段访问的注释保留
依据: 探针自带注释「临时诊断,用后移除」,且由 commit 2992674 的临时 DBGCHAIN 护栏引入;全 Test 目录无断言或期望输出引用该文本
|
2026-09-16 10:32:40 +08:00 |
|
TermiNexus
|
794488b0f6
|
fix(zlib): 修正 out/buf 形参的联合类型写法,消除跨模块 ABI 错位
t.CUInt8T | t.CPtr[t.CPtr] 在定义侧按 PtrCount 累加得 i8**,但 stub/declare 侧(VpiReader 只把整段等于 t.CPtr/CPtr 的段认作 CPtr 标记)会坍缩为首段 i8,导致跨模块调用只传 1 字节、被调用方按 8 字节指针写入。ZlibTest 的 test_decompressobj 即由此触发 ASan heap-buffer-overflow:写入地址 = 压缩缓冲起址 -16(第 5 参栈槽残留的 compressed 指针被清零低字节)
改用 指针别名 | t.CPtr(两侧同为 i8**,与 win32sync.vp:65、posix.vp:199 同形),覆盖 zinflate_stream.decompress、zdeflate_stream.compress/flush、pyzlib.append_bytes 共 4 处;不改任何运行期逻辑
|
2026-09-15 23:58:39 +08:00 |
|
TermiNexus
|
a9a53bd117
|
fix(withcontent): _find_provider 倒序循环上界显式转有符号,避免被无符号化后退化
range(stack.top - 1, -1, -1) 中 stack.top 是 UINT64 字段,上界被推断为无符号时该递减循环的谓词退化为 ugt(-1 在无符号域即 UINT32_MAX) => 条件恒假、循环体不可达、_find_provider 恒返回 NULL,with 的 __mbuddy__ 注入失效(_str.upper 对 NULL 取 vtable 崩溃)
显式 t.CInt 转换使符号域与递减语义一致,与编译器侧 stop 为负字面量时退回有符号谓词的修复互为双保险
|
2026-09-15 22:45:29 +08:00 |
|
TermiNexus
|
0c85e30739
|
fix(memhub): canary 校验现场补位宽诊断打印,新增 deep_detect 深诊断开关
- rc=1..6 现场打印高低 32 位分列的 canary 读回值与期望常量,现场可直接分辨 写入端高位为 0 与 比较端符号扩展 两类位宽不一致
- 新增 MemBuddy.deep_detect(构造形参默认 0):仅 --detection-deep 时启用每次分配全表探测与周期扫描,默认路径无额外开销
|
2026-09-15 19:11:59 +08:00 |
|
TermiNexus
|
746ca689a9
|
perf(memhub): alloc 周期全表扫描开关默认关闭,消除 O(det_count) 热点
MemBuddy.alloc 每 32 次分配进入的采样块内含记录表重叠全表扫描(while _det_count)与 [MEMDBG] 空闲链残留扫描,二者耗时全部落在 alloc 的 self 内。实测 alloc self=681.85e9 tick、25,419,348 次,约 26,824 tick/次,其中该采样块约 8.6e5 tick/次采样(占比超过 99%):按 32 采样只把次数降到 1/32,不改变 O(n^2) 量级。
新增编译期开关 MEMBUDDY_PERIOD_SCAN(默认 0,范式同 MEMBUDDY_THREAD_SAFE/MEMBUDDY_FILL_GUARD);置 1 时与历史实现逐字节一致。块内除诊断路径的 printf/fflush/exit 外无任何状态写入,记录追加在块外,故关闭不改变分配器语义,仅少两项诊断(等价能力仍由 free 内的 [MEMDBG] 重复归还检测与 self_check/check_alive_blocks/is_alive 提供)。
已确认 MEMBUDDY_FILL_GUARD=0 生效(非本次主因)、detection=0、无每次分配的 I/O;_split_to_order/_coalesce/_fl_push/_fl_pop/reset_to 经核对均为合法的 O(1) 或 O(被回收块数) 工作,无同类问题。
|
2026-09-14 15:11:43 +08:00 |
|
TermiNexus
|
40f5bf46e3
|
perf(llvmlite): Function 追加 NameLen 字段并新增 function_get_name_len 访问器
在 Function 末尾追加 NameLen(创建时一次算好,恒等于 strlen(Name)),FUNC_SIZE 72 改为 80,既有字段偏移不变(复用原 4 字节对齐填充)。
new_function 统一初始化以覆盖全部创建路径;Name 全仓无二次赋值,故 NameLen 与 strlen(Name) 终生恒等。新增 function_get_name_len 并在 __init__ 导出,供跨模块绕过 stub 取长度,替代对函数名的反复 strlen 热点。
|
2026-09-14 08:26:17 +08:00 |
|
TermiNexus
|
c4fe8bd496
|
perf(llvmlite): 窥孔 alloca 判定加首字符短路并消除逐行 strlen
_peep_is_alloc_of 增加首字符预筛、两个调用点同步加守卫,避免逐行乘逐槽的 strncmp 与函数调用(该点实测约 439 万次 strncmp)。
_peep_replace_token 预扫改为以 NUL 为界单趟扫描,strlen(line_buf) 后移到命中之后,无命中调用不再求长(该点实测约 134 万次 strlen)。均保持逐输入等价。
|
2026-09-14 08:21:37 +08:00 |
|
TermiNexus
|
c4c6eafd70
|
perf(llvmlite): _is_type_defined_in_module 同名判定先比首字符
已定义类型名链表的逐节点 strcmp 前加首字符必要条件短路(首字符不等即判不等),匹配结果逐字节不变,跳过绝大多数无谓比较(该点实测约 2500 万次)。
|
2026-09-14 04:09:16 +08:00 |
|
TermiNexus
|
215a1ca36a
|
perf(memhub): 0xCD 分配填充守卫默认关闭,消除约 2278 万次 memset
MEMBUDDY_FILL_GUARD 属纯诊断填充(占全程序 memset 68%),默认由 1 改为 0;置 1 时填充代码逐字节不变。关闭不影响 self_check 块尾 canary 与 detection 标记(分别取自 MEMBUDDY_CANARY / MEMBUDDY_DET_MARKER,与 FILL_GUARD 解耦)。
|
2026-09-13 22:14:18 +08:00 |
|
TermiNexus
|
64194f8b78
|
perf(llvmlite): peephole 循环外提 strlen 并降低 strstr/strchr/strncmp 调用
_peep_last_ref_eq/_peep_replace_token 增加长度入参,由调用方(槽扫描外)预求 strlen(a_name/tok/repl),消除 766 万+182 万次重复求长;最后一个 % 改为单趟扫描(不再逐跳 strchr);strncmp 前先比首字符。
新增 _peep_is_alloc_of:以「先比名字再定位子串」等价替换按行 strcmp(_peep_alloc_name),把 strstr 从 O(槽数x行数) 降为仅命中行调用。语义逐输入等价。
|
2026-09-13 22:14:18 +08:00 |
|
TermiNexus
|
04a49ae612
|
perf(membuddy): 单线程默认关锁并内联热路径常量/移位,消除原子与重复调用
新增编译期开关 MEMBUDDY_THREAD_SAFE(默认 0=单线程):_lock/_unlock 常量折叠为空体,消除每次分配的原子 xchg/store;多线程置 1 行为逐字节不变。
_canary_pattern 折叠为 MEMBUDDY_CANARY_PATTERN 并在调用点内联(值逐位等于原 (lo<<32)|lo);_buddy_of/_split_to_order/alloc 内联 MEMBUDDY_MIN_BLOCK<<order;_coalesce 增加本阶空闲链表为空即 break 的等价提前退出。
|
2026-09-13 21:11:33 +08:00 |
|
TermiNexus
|
ed67ecc656
|
perf(ast): 关键字查找改用哈希索引消除线性扫描
_kw_lookup 原为 45 项链表按名 strcmp 线性扫描(每个标识符 token 调用一次)。改为 FNV-1a 开放寻址索引,在 _init_keywords 由同一批 _kw_intern 一次性派生;查找期望 O(1) 且不分配内存;索引未建成时回退原链表扫描,语义与逐项比较一致。
|
2026-09-13 18:56:16 +08:00 |
|
TermiNexus
|
096cb3b913
|
perf(string/memhub): strstr 改候选位跳转、strcmp 指针短路、块大小改一次左移
string: strstr 用 strchr 跳候选位替代逐字节 strncmp(实测 strncmp 由 7.44 亿降至 1.65 亿,总调用 -15.1%)
string: strcmp/strncmp 入口加指针相等短路
memhub: _block_size_at_order 由循环移位改一次左移;alloc 对 size==0 给可区分诊断(非池耗尽)
|
2026-09-13 17:50:04 +08:00 |
|
TermiNexus
|
ec6c19481a
|
refactor(includes): string.vp 双 double 辅助函数注解统一为内建 double
t.CDouble 与内建 double 等价(map_t_type: CDouble -> f64),_dd_split_hi/_dd_mul/_dd_add/_dd_div/_dd_from_u64/_dd_pow10/_pow2/_atof_scale_stepwise/atof 全量改写为内建名,消除混用。
|
2026-09-11 22:46:59 +08:00 |
|
TermiNexus
|
e30c23fe39
|
fix(includes): hashtable value 槽注解改三层联合,修正整数隐式转指针误报
value 槽(偏移 +16)存的是指针,原注解 t.CUInt64T|t.CPtr 按 X|t.CPtr=Ptr(resolve(X)) 合并为 i64*(本用于哈希整数槽),取下标得标量 i64 → return t.CPtr 撞「整数隐式转指针禁止」CastError。
改为 t.CUInt64T|t.CPtr|t.CPtr:外层再包一层 → i64**,取下标得 i64*(指针),与 t.CPtr 同级指针走 bitcast。三处:_slot_value 读 / _set_slot 写 / _resize 搬迁。
|
2026-09-11 22:28:36 +08:00 |
|
TermiNexus
|
21f9b7a078
|
修复 binascii.vp
|
2026-09-11 18:57:39 +08:00 |
|
TermiNexus
|
9a758a8f6c
|
fix(includes): atof 改为正确舍入,对齐 sprintf 返回类型,补充 asm 约束说明
N4 string.vp:atof 重写为「u64 尾数 + 精确十进制幂 + 双 double(Dekker) 缩放」,
正规数范围正确舍入(Python 原型 20 万组对拍 bit-exact),次正规回退逐步
缩放;修十进制浮点字面量偏差(DBL_MAX 原 −6 ULP、e/ln2 各 ±1 ULP)
N13 viperlib.vp:export sprintf 返回 t.CVoid → t.CInt 并 return vsnprintf(...),
与 CRT 及 includes/stdio.vp 的 extern declare 对齐(消除同符号签名冲突)
N10 asm.vp:为 pushall/popall/cpu_switch_context 补充约束说明(不改 clobber)
|
2026-09-11 17:40:26 +08:00 |
|
TermiNexus
|
52af24e85d
|
fix(includes): asm 内联汇编输出占位符/clobber、vipermath 位重解释、string.split 容量参数
- asm.vp: inb/inw/inl 模板引用输出占位符 \ 并补 ~{rax}(原取硬编码 eax 且静默破坏 EAX,对齐 mm.vp cmos_read 模式)
- vipermath.vp: isnan/isinf 改 c.Load 位重解释(原 fptosi 位模式丢失导致恒返回 0)
- string.vp: split 增加 cap 容量参数,token 数 <= cap-1,防止越界写
|
2026-09-11 14:26:47 +08:00 |
|
TermiNexus
|
728d090815
|
feat(vqt6/vipermath/vipersimd/w32/requests): 自绘 Canvas/Graph3D/ChartView 与 Qt6 Charts、新增 gzip 与 torch-lite 模块, 修包装类悬垂指针与中文路径/exp/大文件下载
- vqt6: 包装类统一补 __new__ 堆分配, 修"创建函数栈帧 alloca"被存进字段/跨帧返回后 _ptr 悬垂(传给 QLayout::addWidget 等即崩溃); 菜单类按依赖顺序前移, menuBar()/statusBar() 改返回裸指针; 接入 Qt6 Charts 并新增 _bridge_canvas(Canvas 手绘板 / Graph3D 软件 3D 网络图 / ChartView 折线图); 新增自绘 QRadioButton(圆环+内点, 过渡动画)、剪贴板、应用级字体族 API
- 新增模块: gzip.vp(RFC1952/1951 解码器)、torch/(torch-lite 稠密张量 + conv/pool 前反向)
- vipersimd: 新增 scalar_fma/add/mul/sqrt_array 未向量化对照内核(与对应 SIMD 版逐位一致)
- w32: 新增 UTF-8/UTF-16 路径转换, CreateFile/CreateDirectory 走 W 系列, 修中文路径被按 GBK 误读; read_all 参数 max_count -> buf_size 并文档化"容量含终止符"契约
- requests: https 响应缓冲按需翻倍扩容(上限 256MB), 修 MB 级正文(如 MNIST .gz)被 4KB 静默截断
- vipermath: 重写 exp 为范围归约 + 短泰勒, 修负值发散(x=-30 得 3.7e10)与 NaN 触发 2^31 次缩放导致的卡死
- builtins: 新增 sizet/uzt 别名; stdarg: va_arg 参数 CType -> CPtr
- chore: 删除 vendored jpeg change.log
|
2026-09-10 23:09:05 +08:00 |
|
TermiNexus
|
7d092f25b1
|
feat(vqt6/requests/vipersimd/vthreading): 气泡聊天与流式 https 阶段改动、vipersimd FMA 批量内核, 清理 vqt6 copy 与 requests.vp
|
2026-09-09 21:10:14 +08:00 |
|
TermiNexus
|
44e0e898d3
|
fix(llvmlite): _append_cstr 缓存一致性校验, 修复多模块轮流写同一 buf/池地址复用导致 FunctionPrint 追加落到 NUL 后(LLvmLiteTest Test5/9 模块函数丢失)
|
2026-09-09 21:10:06 +08:00 |
|
TermiNexus
|
f53c2216aa
|
'基线重置,修复了一些 bug,fix(llvmlite): build_alloca_at_entry 在已终止入口块后在 br 后追加 alloca 致非法 IR嵌套循环(如 LoopTest.test_nested_loop 内层 for)内联新建循环变量 alloca 时,入口块已以 br 终止,block_append_text 把 alloca 追加到终止指令之后,生成不可达指令,llc 报 "instruction expected to be numbered %N or greater"。改用 block_insert_text_before_terminator:未终止等同追加,已终止插到终止指令之前;编号乱序由 RenumberSSA 重排处理。'
|
2026-09-07 15:05:50 +08:00 |
|
TermiNexus
|
62bceb6930
|
debug(chain): Renumber block 野值打印扩展为邻域快照(Params/Blocks/容器指针)
[DBGCHAIN] block 野值时一并输出 func.Params(Head/Tail/Count)、Blocks 容器/Tail/Count、func 指针,便于定位写入源。用后移除。
|
2026-09-05 15:04:46 +08:00 |
|
TermiNexus
|
21b4246ea4
|
debug(chain): RenumberSSA 全链验证 + PrintModule param/Params 野值护栏扩展
[DBGCHAIN] 临时诊断追加:RenumberSSA 前校验 func.Blocks/Lines/line.Buf/Len 指针合理性;PrintModule 增加 Function.Params 与 param 指针护栏(含归属函数名打印)。用后移除。
|
2026-09-05 14:58:32 +08:00 |
|
TermiNexus
|
2992674783
|
feat(types): rowptr/REnum 迁移工作区快照 + GSList/PrintModule 临时 DBGCHAIN 护栏
把此前未提交的 rowptr 迁移整体入库(42 文件,含 ast/llvmlite/hashlib/json/zlib 等签名 rowptr 化)。临时诊断(用后移除):linkedlist.vp GSList[T].append 链完整性四检、__module.vp PrintModule Function.Params/param 指针野值护栏([DBGCHAIN] 前缀 + fflush + exit)。
|
2026-09-05 14:51:40 +08:00 |
|
TermiNexus
|
e2dd0fb18f
|
feat(vqt6): QCheckBox 勾选动画(底色过渡+对勾淡入)
|
2026-09-03 11:57:03 +08:00 |
|
TermiNexus
|
d9620ce43d
|
feat(vqt6): QCheckBox 改自绘子类(矢量框+对勾,按QPalette配色)
|
2026-09-03 11:55:15 +08:00 |
|
TermiNexus
|
ceb601a2d3
|
fix(vqt6): 浅色调色板 BrightText 改深色(尝试修对勾可见性)
|
2026-09-03 11:46:05 +08:00 |
|
TermiNexus
|
80799671f7
|
feat(vqt6): 新增 QApplication 主题调色板切换(原生控件配色)
|
2026-09-03 11:42:27 +08:00 |
|
TermiNexus
|
4a26a97ce2
|
feat(vqt6): 新增 vqt6_asset_url_utf8(QUrl::fromLocalFile 生成资源 URL)
|
2026-09-03 11:30:53 +08:00 |
|
TermiNexus
|
6280172a39
|
revert(vqt6): 移除 vqt6_app_dir_utf8(复选框指示器方案回退)
|
2026-09-03 11:28:45 +08:00 |
|
TermiNexus
|
b83563b422
|
feat(vqt6): 新增 vqt6_app_dir_utf8 取应用目录(供QSS资源url)
|
2026-09-03 11:25:12 +08:00 |
|
TermiNexus
|
2e72ef0359
|
feat(vqt6): 新增 QTreeWidget/QTreeWidgetItem 桥接与树统计助手
|
2026-09-03 11:01:59 +08:00 |
|
TermiNexus
|
90a58d05b1
|
feat(zipfile): 新增 ZIP 归档读写模块(ZipFile 读写,stored/deflate,CRC32 校验)
|
2026-09-03 09:35:11 +08:00 |
|
TermiNexus
|
1e5b840775
|
feat(openssl): 新增 OpenSSL 3.x FFI 层(摘要/EVP/PEM/X509/SSL/BIO,extern def 直连 libcrypto/libssl)
|
2026-09-02 16:19:12 +08:00 |
|
TermiNexus
|
9163a1106c
|
feat(vqt6): 支持 Qt 样式表 QSS(深色主题)
- vqt6_qwidget_set_stylesheet_utf8:QSS 直传 FFI
- QWidget/QLabel 高层类新增 setStyleSheet 方法,支持深色主题与动态导航高亮
|
2026-09-02 09:26:14 +08:00 |
|
TermiNexus
|
2aff684cc4
|
feat(vqt6): 信号槽回调机制 + 高层包装类扩展
- 信号槽:vqt6_signal_register/trigger_slot 锁外回调,覆盖 QPushButton/QCheckBox/QRadioButton/QLineEdit/QComboBox/QSlider/QSpinBox/QProgressBar/QListWidget/QTabWidget/QAction/QTimer 共 13 个信号
- 高层包装:新增 QMainWindow/QDialog/QLineEdit/QCheckBox/QRadioButton/QComboBox/QSlider/QSpinBox/QProgressBar/QTextEdit/QPlainTextEdit/QListWidget/QTabWidget/QStackedWidget/QHBoxLayout/QVBoxLayout/QGridLayout/QMessageBox/QFileDialog/QTimer/QMenuBar/QMenu/QAction/QStatusBar/QColor/QFont 等 26 个类
- 便捷 FFI:vqt6_qlabel_set_text_utf8 / vqt6_qplaintextedit_append_utf8(Viper str 直传,避免 QString 手动管理)
- 修复:QApplication 构造需 int& 左值(dummy_argc);QCheckBox 用 checkStateChanged 避免弃用警告
|
2026-09-02 09:16:35 +08:00 |
|
TermiNexus
|
250be46051
|
fix(vqt6): Qt6 桥接层与包装类适配修复,Hello World 验证通过
- CMakeLists.txt: install 段按 BUILD_SHARED 条件包裹 static/shared 目标,避免引用未创建目标报错
- _bridge_gui.cpp: QColor::setRgba 改为单参 qRgba(Qt6 已删 4 参重载)
- _bridge_widgets.cpp: 移除已删除的 QDesktopWidget include;QApplication 空 argv 时提供虚拟 argv
- _bridge_network.cpp: LocalHostIPv4 改用 LocalHost;toInt(bool*) 修正;setRawHeader 空实现保符号
- __init__.vp: strndup 改直接使用 malloc 缓冲(Viper str=bytes=i8*),补 import stdlib
|
2026-09-02 08:53:23 +08:00 |
|
TermiNexus
|
630d2a60ec
|
feat(fltk): 组织 Fl_Theme 主题库进 fltk——C++ 桥接导出 C API(fltk_theme.cpp)+ libfltk_theme.a + _cfl_theme.vp FFI + Fl.set_theme_dark/metro/set_border_radius 封装
|
2026-09-01 21:53:21 +08:00 |
|
TermiNexus
|
a1989e3564
|
feat(fltk): Fl 全局补充风格切换 API(set_scheme 补 docstring/scheme_string/reload_scheme/set_background/set_background2/set_foreground);修复重复定义 set_scheme 导致的 LL 生成异常(;efine)
|
2026-09-01 21:31:11 +08:00 |
|
TermiNexus
|
bddf6061e4
|
feat(fltk): 回调支持(set_callback/add_timeout/awake/菜单回调)+ 补齐控件类(Toggle/Round 按钮、Multiline/Secret/File 输入、Spinner/Clock/Nice_Slider、Pack/Tile/Flex、Menu_Button、Browser/Tree、Text_Editor/Terminal、File_Chooser/Help_Dialog、Input_Choice/Color_Chooser、PNG/JPEG/GIF 图片)
|
2026-09-01 21:23:18 +08:00 |
|
TermiNexus
|
983405dbf2
|
feat(fltk): 新增 FLTK 1.4 纯 extern FFI 绑定库(cfltk C API + gen_ffi 生成器 + Viper 包装类)
|
2026-09-01 21:07:59 +08:00 |
|
TermiNexus
|
61299a9b72
|
chore(fltk): 添加 .no_autobuild 标记,跳过 TPC 对完整 FLTK 源码树的自动编译
|
2026-09-01 20:16:35 +08:00 |
|
TermiNexus
|
f76620199a
|
feat(ast): lexer 支持 f-string 表达式块嵌套与同引号嵌套字符串(PEP 701)
|
2026-08-30 07:36:50 +08:00 |
|
TermiNexus
|
49445ea796
|
fix(ast): lexer 支持 \xNN 十六进制转义,修复 \x1b 被判为 CONST_STR 的问题
|
2026-08-30 07:36:28 +08:00 |
|
TermiNexus
|
f087aa88e2
|
更新,可自举
|
2026-08-27 10:16:28 +08:00 |
|
TermiNexus
|
d6d06b2f1a
|
fix(asm): inb/inw/inl 显式 mov 到输出寄存器——加 CLOBBER_RAX 后 LLVM 不再把 value 绑 RAX,原写法读到 asm 前残留导致 waitReady err=8(status 0x50 被读成含 DF);按 mm.vp 模式 asm 内 mov {AsmOut}, eax
|
2026-08-27 01:16:53 +08:00 |
|
TermiNexus
|
4bcc66c571
|
fix(asm): inb/inw/inl 内联汇编补 CLOBBER_RAX——in al/ax/eax 修改 EAX 但未声明 clobber,调用方 EAX(循环计数/返回值/指针高32位)被静默破坏,导致 IDE 读取数据间歇性损坏(win 前2字节清零)、跨模块返回值丢失(fat32.read 返回64收到<64、spawn_elf 返回 pid 收到0、mm.malloc 返回值丢失)
|
2026-08-27 01:14:13 +08:00 |
|
TermiNexus
|
18642a9c23
|
debug(llvmlite): function_set_attrs 添加调用诊断,确认属性是否写入函数
|
2026-08-26 20:35:14 +08:00 |
|
TermiNexus
|
4ce6095359
|
修正
|
2026-08-22 09:25:46 +08:00 |
|
TermiNexus
|
5e768a9831
|
更新了库
|
2026-08-19 05:11:35 +08:00 |
|
TermiNexus
|
14ff9d109f
|
从 TransPyC 主项目中分离 VRTE
|
2026-08-17 11:01:35 +08:00 |
|