Skip to content

Releases

v0.5.5

Choose a tag to compare

@huangbogeng huangbogeng released this 09 Nov 08:42
dde919e

新增 Dataset.prune() / PruneBatch,支持在保留 dataset 及当前数据的同时,永久回收指定旧文件或目录。

with dataset.prune(expected_revision=revision, quiescent=True) as batch:
    batch.delete("version=old")
    state = batch.commit(metadata={
        **batch.before.metadata,
        "publication_id": batch.id,
        "parent_publication_id": batch.before.publication,
    })
  • 复用已有 dataset 写锁,在同一锁内完成 revision 校验、目标选择和业务元数据生成。
  • 不创建新的撤销备份;维护提交清除该 dataset 的全部旧 work/backup,并使整个一次 undo 失效。其他正式路径、dataset 及登记保留。
  • 持久化 kind=prune 的活动意图,中断后通过 dataset.recover(quiescent=True) 向前完成删除和元数据提交。
  • 普通读取、发布、清理与整 dataset 删除不增加 I/O、扫描或锁;Batch.delete()、clean() 和 drop_dataset() 的原有语义保持不变。

维护前必须停止目标 dataset 的全部使用,包括延迟查询、写者和排队任务。新维护接口及恢复最低要求 AsterStore 0.5.5;format 4 不变,0.5.4 客户端会拒绝恢复新意图,不能用于续删。

验证覆盖 101 项测试、意图/目标/备份/head/意图清除的故障边界、进程退出、旧客户端拒绝恢复、协议 Schema、wheel/sdist 重建与隔离安装。发行 CI 验证 Python 3.11–3.14 及 12 组 Python/Polars 兼容组合。真实断电和共享挂载场景未做资格验证。

安装:

pip install asterstore==0.5.5
# 需要 Polars 时
pip install 'asterstore[polars]==0.5.5'

PyPI

PR #44 · 发布演练 · 正式 Publish · 提交 dde919e

发布演练与正式 Publish 均已通过。PyPI wheel/sdist 与正式发布工作流的产物逐字节及 SHA-256 一致;从 PyPI 独立安装 0.5.5 后验证了 CAS、部分删除后向前恢复、元数据身份一致、全部旧 work/undo 清除、其他路径与 dataset 保留,以及原有普通方法实现不变。

v0.5.4

Choose a tag to compare

@huangbogeng huangbogeng released this 08 Nov 12:41
7b06c1a

新增 Repository.drop_dataset(),支持永久删除整个 dataset 目录及注册,供显式退役和 GC 使用。

repo.drop_dataset(name, expected_revision=revision, quiescent=True)
  • 删除正式文件、元数据、暂存及撤销备份,不保留新的回退材料。
  • 首次删除校验 revision;删除意图持久化后,中断重试继续删除,不依赖可能已移除的 dataset 元数据。
  • 删除期间隐藏目录登记查询结果,保留名称与路径占用;其他 dataset 不受影响。
  • 普通 Dataset 读取、发布、回退、恢复和清理实现未变,没有新增登记查询、目录扫描或锁。

删除前须停止目标 dataset 的全部使用,包括读写、排队操作及延迟查询;同名或同路径重建前丢弃旧句柄。format 4 的可选 dropping 字段只在删除期间存在,中断后须使用支持整体删除的客户端续删。

验证覆盖 64 项测试、Python 3.11–3.14、12 组 Python/Polars 兼容组合、Ruff/mypy/CodeQL、协议 Schema,以及 wheel/sdist 重建与隔离安装。

安装:

pip install asterstore==0.5.4
# 需要 Polars 时
pip install 'asterstore[polars]==0.5.4'

PyPI · PR #42

发布演练与正式 Publish 均已通过。PyPI wheel/sdist 与正式发布工作流选择的产物逐字节及 SHA-256 一致;从 PyPI 独立安装 0.5.4 后验证了接口、revision 冲突、完整删除、重复删除和其他 dataset 保留,且安装包中的 Dataset 实现与修改前一致。

发布演练 · 正式 Publish · 提交 7b06c1a

v0.5.3

Choose a tag to compare

@huangbogeng huangbogeng released this 30 Oct 05:20
8e11fb5
  • 可选 Polars 依赖最低版本提升至 1.44.2,支持范围为 >=1.44.2,<3;开发锁文件升级至 2.1.0。
  • CI 覆盖 Python 3.11/3.12 × Polars 1.44.2/2.0.0/2.1.0。
  • 核心 API 与磁盘协议 format 4 不变,无需迁移。

验证包括完整测试、Ruff、mypy、协议检查、发布演练、wheel/sdist 重建与隔离安装,以及 PyPI 制品与 CI 上传制品的 SHA-256 对比。

安装:pip install 'asterstore[polars]==0.5.3'

PyPI · PR #37 · Publish

v0.5.2

Choose a tag to compare

@huangbogeng huangbogeng released this 27 Oct 02:07
611989d
  • 新增 Repository.list_datasets(),按字典序返回已登记的数据集名称,保留名称原文;空仓库返回空元组,不扫描数据集目录。
  • 更新 Ruff、CodeQL、setup-uv 和 PyPI 发布 Action;支持 uv_build<0.14,开发及 CI 使用 uv 0.13.6 或更高版本,修复旧前端读取新后端源码包时的构建失败。
  • 磁盘协议仍为 format 4,无需迁移。

验证:本地 52 项测试、Python 3.11/3.12 CI、Polars 兼容性矩阵、构建与隔离安装全部通过。发布演练和正式上传均成功;PyPI wheel/sdist 下载字节与发布流水线制品一致,独立安装及公开枚举接口验证通过。

发布提交:611989d85ba446313a380254bccbd7db34b16da2

发布演练 · 正式发布 · PyPI

v0.5.1

Choose a tag to compare

@huangbogeng huangbogeng released this 15 Oct 12:03
a2ad1de

AsterStore v0.5.1

修复仓库或数据集通过软链接目录访问时被错误拒绝的问题。

  • 支持仓库入口、数据集入口及父目录软链接,例如 ~/AsterStore 指向实际存储目录。
  • 入口解析为真实路径,按真实路径登记和检查目录重叠;不会搬移数据或修改软链接。
  • 已打开对象和数据集登记不会因入口软链接改向而跳转到其他位置。
  • 数据集内部软链接仍被拒绝,避免文件操作越过数据集边界。
  • 新增 9 项回归测试,覆盖软链接入口下的发布、回退、清理、故障恢复与路径归属。

磁盘协议仍为 format 4,沿用 v0.5.0 API。安装、回退和恢复仍需调用方协调读取维护窗口。

51 项测试、静态检查、协议校验、Python 3.11/3.12 和 Polars 兼容性、构建与隔离安装验证通过。

v0.5.0

Choose a tag to compare

@huangbogeng huangbogeng released this 15 Oct 11:17
5e51314

AsterStore v0.5.0

轻量数据集目录事务:行情与 factor 共用自然 Hive 路径,增量更新只处理本次变化的文件。

  • 支持批量新增、替换和删除,发布元数据与文件变更一起恢复。
  • 保留最近一次成功发布的撤销材料,支持一次回退与可重复故障恢复。
  • 清理只删除失效事务材料,不扫描或删除正式历史数据。
  • 移除全量 manifest、不可变对象、全局文件归属、可达性 GC 及旧 API。
  • 修复活动记录删除未同步时清理提前释放恢复材料,以及并发初始化覆盖登记信息的问题。

不兼容变更

磁盘协议为 format 4,不提供旧 API、旧协议兼容或自动迁移。部署需空目录初始化并重新生产数据。

安装、回退和恢复期间,调用方必须暂停该数据集读取并等待在途读取结束;不再提供并发发布时的不可变文件快照。

验证

42 项测试通过,覆盖发布、回退、故障注入、真实进程退出、清理及初始化竞态。Python 3.11/3.12、三组 Polars 版本、wheel/sdist 重建及隔离安装通过。100、1,000、10,000 个历史分区更新五天时,管理操作次数保持不变。

asterstore 0.4.1

Choose a tag to compare

@huangbogeng huangbogeng released this 14 Oct 11:15
f6e4bde

AsterStore 0.4.1 支持数据文件位置与控制元数据目录分离,保持数据集独立的 current/rollback 发布模型。

  • draft.adopt(key, path) 原位接管已有文件,不移动、不复制、不新增硬链接。
  • draft.allocate(key, path=...) 独占创建调用方指定的新文件路径。
  • 清理仅回收明确接管且不被 current/rollback 保留的文件;外部目录不扫描认领。
  • 修复控制路径子树、未封存自定义文件清理边界,以及归属撤销的持久化问题。
  • 使用 format 3,清单记录仓库相对路径或绝对路径;已有仓库不会隐式转换。未封存自定义输出仍由调用方管理。
pip install asterstore==0.4.1
pip install 'asterstore[polars]==0.4.1'

验证:80 项回归测试通过;GPT-6.1 Sol 独立评审及复核无剩余发现。Python 3.11/3.12、六组 Polars 兼容性组合、构建与隔离安装均通过。

发行演练及正式上传成功。PyPI wheel/sdist 与正式流程 CI 制品逐字节一致。源码目录外的全新 Python 3.11 核心安装、Python 3.12 Polars extra 安装及 sdist 构建安装通过,实际执行了路径接管、指定位置写入、发布、回退、清理和扫描示例。

发行提交:f6e4bde3ef18a995d04710bc8fa4625d1b66d4e8;PR #27。附件为与 PyPI 相同的已验证制品及 SHA-256 清单。生产数据未修改;断电边界采用故障模型验证。

asterstore 0.4.0

Choose a tag to compare

@huangbogeng huangbogeng released this 14 Oct 09:44
213122b

AsterStore 0.4.0 提供数据集级别的不可变文件管理、原子发布、一次回退和维护清理。

  • 每个数据集独立维护 current 与 rollback;发布成功后,上一次 current 成为回退版本。
  • 支持成员复用、替换、删除,以及数据和业务元数据一起发布。
  • 支持发布前候选检查、revision 冲突检测和维护窗口清理。
  • 核心无第三方运行依赖;可选 Polars 适配器支持固定成员扫描。
  • README 和文档完整覆盖读取、发布、回退、清理、API 与磁盘协议。

安装:

pip install asterstore==0.4.0
pip install 'asterstore[polars]==0.4.0'

要求 Python 3.11+ 和支持 POSIX 文件锁、硬链接及原子替换的文件系统。清理前须协调全部相关读取结束,已封存文件保持不可变。

验证完成:

  • Publish 演练与正式上传均通过。
  • Python 3.11/3.12 完整测试、六组 Polars 兼容性检查、wheel/sdist 构建与隔离安装通过。
  • 从 PyPI 下载的 wheel 和 sdist 与正式上传流程的 CI 制品逐字节一致。
  • 从 PyPI 在全新 Python 3.11 环境安装核心包、Python 3.12 环境安装 Polars extra,发布、回退、清理和扫描示例通过;下载的 sdist 独立构建安装也通过。

发行提交:213122be6bf3054635b6ebf0bc303489b6e5c5cd。附件是本次 CI 验证并上传 PyPI 的同一组制品。

asterstore 0.3.0

Choose a tag to compare

@huangbogeng huangbogeng released this 14 Oct 01:33
cfcbadd

asterstore 0.3.0

读、写与运维治理分别决定检查时机。0.3.0 增加整批数据集下线及控制历史归档,默认读取仍保持短路径,核心无第三方运行依赖。

新增能力

  • 可选读写检查:open、register、恢复登记与 commit 支持 none/existence/format/checksum,默认 none;DataCheckError 明确报告提交和持久化状态。
  • 显式候选盘点:inspect_candidate 报告缺失和未知条目,不自动认领或删除文件。默认提交不再递归盘点额外文件,声明新文件的最低安装约束仍保留。
  • 控制历史归档:compact 在显式维护窗口压缩终态控制正文,固定 checkpoint 支持中断恢复;保留 current、历史身份与提交重试语义。
  • 整批下线:decommission 固定 dataset_id 与 generation,逐个原子生效;提供状态与恢复接口,恢复时不下线已推进的新版本。
  • 下线与 GC 分离:retention、未结束候选继续保护对象,registered 外部文件不获得删除权,历史声明保留供审计。

升级边界

  • 保持 format_version=1。仅显式调用 compact/decommission 才启用 control_archive/dataset_decommission 必要功能;启用前须升级所有客户端,旧客户端会拒绝新 feature,不能删 feature 降级。
  • 下线永久结束 dataset_id 的生命周期,不提供重新上线或名称复用。批次不是整体原子事务;complete 只表示没有 pending,调用方还须检查 conflicts。
  • 已有 Binding 不会被撤销,也不保护文件;持续消费者须显式使用对象 retention。collect 是全仓回收,不限于刚下线的批次。
  • 稳定态默认 current open 仍读取 marker/current 两份控制记录。首次下线的并发交错路径可能额外刷新一次 marker;Binding.files 不增加 I/O。

验证

本地 427 项测试通过,独立复审发现的归档检查和首次下线读竞态问题均已修复。覆盖进程中断恢复、保留/回收、协议和旧客户端拒绝;发行流程另外验证 Python 3.11/3.12、Polars 兼容矩阵、wheel/sdist 独立安装及制品哈希。验证范围为本地 Linux/POSIX,不代表真实断电或 NFS 资格。

安装:pip install asterstore==0.3.0;Polars:pip install 'asterstore[polars]==0.3.0'。

参见 读写检查、下线指南和控制历史归档。

发布核验

  • 发布演练与正式发布均通过,目标提交 cfcbadd。
  • PyPI wheel/sdist 的 SHA-256 与正式工作流制品一致;本 Release 附件为同一组文件。
  • 独立 PyPI 安装验证通过:可选检查、数据集下线、控制归档和 Polars 示例。
  • 关联 PR #23;#21 中 current 全量重写、身份记录累积和全量 GC 的剩余扩展性工作保持开放。

asterstore 0.2.0

Choose a tag to compare

@huangbogeng huangbogeng released this 12 Oct 10:13
8cf733c

asterstore 0.2.0

本次发布增加显式治理诊断、单任务进度查询和 Polars 2.x 支持。普通读取仍直接使用已绑定文件路径,不自动检查数据、不隐式保留或刷新。

新增能力

  • governance.inspect():查看发布、候选、保留引用和维护任务,并解释对象为何受保护。
  • governance.check():显式检查元数据、文件存在性、调用方提供的格式校验,或基于可信 SHA-256 的内容一致性。检查只读,不修复、不删除。
  • collection_status() / cleanup_status():查询一个固定任务的进度,不扫描无关历史。
  • 完成态 GC 重试仅核对原任务证据并重新同步完成记录;不重新删除对象。新 GC 和未完成恢复仍验证完整控制关系。
  • 可选 Polars 支持 >=1.32,<3,兼容测试覆盖 Python 3.11/3.12 与 Polars 1.32.0、1.44.2、2.0.0。

安装与升级

uv add 'asterstore==0.2.0'
# 使用 Polars:
uv add 'asterstore[polars]==0.2.0'

磁盘格式保持 format_version=1,已有 0.1.0 仓库无需迁移;核心仍无第三方运行依赖。诊断类型从 asterstore.governance.inspection 导入。

诊断无法取得稳定观察时,四个接口统一抛 RepositoryBusyError。其他检查发现由 check() 汇总进报告,查询接口则抛出遇到的错误。registered 数据检查需显式提供资源映射;checksum 检查需调用方提供可信基准。Polars 自身的 schema/解码语义由引擎版本决定。

验证与范围

发行流程验证 Python 3.11/3.12 的测试、静态和协议检查、示例、基准 smoke,以及 wheel/sdist 重建后的隔离安装。CI 还下载真实构建制品,验证版本、文件名、大小和 SHA-256;PyPI 上传复用同次流程验证的制品。

不承诺首次 GC 提速。控制历史压缩、checkpoint/manifest 重构,以及读、写、运维治理进一步分离的设计仍由 #21 跟踪,不属于本次交付。支持范围仍是本地 Linux/POSIX,不扩展为 NFS 写入或真实断电资格。

完整变更记录 · 诊断契约

发布验证

发布提交:8cf733cb8208d475df38c3ad4e915f466d68e83f。

正式发布流程全部通过;PyPI wheel、sdist 与该流程验证产物逐字节一致,SHA-256 已核对。发布后从 PyPI 独立安装,核心生命周期检查和 Polars 2.0 示例通过。