Repository navigation
MoonSQLiteFile v0.7.0
v0.7.0 从 v0.5.0 直接升级,合入原 v0.6.0 内部里程碑,提供 64 位 db/WAL 范围读取、异步宿主与浏览器分块检查;v0.6.0 不单独发布。
主要更新
- 新增
RangeSource、CachedSource、RangeWalSource,以 64 位长度和偏移按需读取主文件及 WAL,分别限制缓存、帧数、覆盖索引和报告页数。 - 新增无 I/O 的
BTreeCursor、WalCursor、InspectionCursor,同步和异步入口复用同一核心校验状态机。 - 提供独立 JS 异步适配包:Node BigInt/Blob 范围源、异步迭代器及 visitor 背压、AbortSignal 取消、部分报告和句柄释放。包作为本页 tarball 附件提供,尚未发布 npm registry。
- 单文件 HTML 使用 File/Blob Worker 分块检查 db/WAL,保留页面导航,新增进度、取消和可调整预算。移除 64 MiB 文件长度限制,默认累计 payload 仍为 64 MiB,时间预算调整为 120 秒。
- CLI 改用只读范围 I/O,新增资源预算和 I/O 统计选项;修复合法碎片被误拒、非根空 B-tree 页被漏检,以及错误信息丢失;适配器准确区分越界、短读和宿主失败。
升级说明
历史公开声明继续接受兼容检查,但检查行为有变化:非根空页现在拒绝,碎片不一致统一定位为 FragmentCount,超过 Int 的页指针返回 LimitExceeded。使用大文件时须改用范围入口;超过 Int 长度的旧 Database.source 视图不支持读取,应使用 source64()。单条/累计 payload 默认仍为 16 MiB / 64 MiB,完整扫描大 payload 库须单独调整预算。
异步宿主验证范围为 Node 22 与 Chrome/Chromium;异步 WAL JSON 的 64 位字段为十进制文本。详情见 v0.5.0 → v0.7.0 升级说明及其中链接的同步范围迁移文档。
安装
moon add prowk/moonsqlitefile@0.7.0浏览器检查器下载本页 moonsqlitefile-viewer.html。异步 JS 包下载 prowk-moonsqlitefile-async-0.7.0.tgz 后执行 npm install ./prowk-moonsqlitefile-async-0.7.0.tgz;附件校验值见 SHA256SUMS.txt。
验证
- 发布 tag 指向
8a3a4c79ecd54c893604839f9136081289b8f21b,该提交的 GitHub CI 全部通过;本地 27 项检查通过,Wasm、WasmGC、JavaScript、native 各 121 项测试通过。 - SQLite 对照覆盖 1063 行普通表、4407 条索引/WITHOUT ROWID 记录、2412 页归属及 54 组 SQL 操作回归;Linux CI 启用 dbstat。同步和异步均对照 29 组 WAL 快照、5470 条恢复记录,另有六组数据库同步/异步差分。
- 验证超过 2 GiB 的主文件/WAL 偏移、超过 64 MiB 的 payload 预算、重复更新 WAL 成本及 512 次固定种子模糊测试。
- 实际 HTML、独立 npm tarball 消费及真实浏览器的 File/Blob、Worker、取消、释放、WAL 与大库预算验收通过。72663040 字节数据库提高预算后检查 17740 页、1101 条记录,最大读取块为 4096 字节。
- 发布后从真实 Mooncakes registry 安装
0.7.0,独立项目在四后端完成 check/build/test 并实际运行同步范围、WAL 和游标 API。
使用边界
只读同一时刻且使用期间不变的 SQLite 主文件及 WAL 副本;不执行 SQL、写入、checkpoint、在线锁或 shm 协议,不提供任意历史事务或损坏/删除数据恢复。结构检查 Complete 不等于 SQLite integrity_check,不验证索引排序/collation 或表与索引内容一致性。
64 位范围读取仍以 Int 表示页号,最多 2147483647 页;单条 payload 完整解码,全局报告与 WAL 索引仍需要独立内存预算。浏览器已验证本机 HTTP 载入后断网,直接 file:// 打开尚未验收;建议通过本机静态 HTTP 服务载入 HTML。