Skip to content

MoonSQLiteFile v0.7.0

Choose a tag to compare

@prowk prowk released this 05 Oct 07:32

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。

相关链接