Repository navigation
feat: support Python 3.12–3.14 and Windows x64 - #19
Conversation
ReallocAll
left a comment
There was a problem hiding this comment.
Review and fix follow-up for the Python 3.12–3.14 / Windows compatibility PR.
Fixed directly on feat/python312-windows-compat (latest head dee5501d):
- Windows SIDECAR extraction was still writing arbitrary bytes through a CRT descriptor without
O_BINARY. This could corrupt recoveredlevel.dator other sidecar files even when LevelDB staging and cloning were byte-exact. The restore writer now opens in binary mode and has an arbitrary-byte round-trip regression test. - Staging and SIDECAR extraction could call
mkdirbefore confirming their resolved parent stayed within the designated destination. Validate paths before filesystem mutations, reject nonportable Windows drive/ADS/backslash paths, and require all staged files to belong to the manifest's world prefix. - Added negative-path regression tests and fixed import/format lint issues.
Verification: the latest standard Build (lint, formatting, tests, package and offline smoke) passed: https://github.com/ReallocAll/endkeep/actions/runs/37973225784 . The latest six-combination compatibility workflow has not completed yet: https://github.com/ReallocAll/endkeep/actions/runs/37973226010 .
Release/merge gates remain: stable and license-compliant distribution/installation of CPython 3.12/3.13 Amulet wheels, verification of the Amulet Team License notices, real Endstone/BDS backup/restore tests on Linux and Windows, and explicit review of NTFS crash/directory-metadata persistence semantics. A green CI matrix is necessary but not sufficient for those guarantees. No merge or release was performed.
…on Python 3.12/3.13
Summary
Support Python 3.12, 3.13 and 3.14 on Linux x86-64 and Windows x64, including a verified single-Wheel EndKeep installation on the supported six combinations.
py3-none-any.whl.vX.Y.Ztags because the separate Amulet compatibility Release tag otherwise breaks builds.Validation
https://github.com/ReallocAll/endkeep/actions/runs/37976573011
https://github.com/ReallocAll/bds-test-lab/actions/runs/37977425842
92d32c50cc076ea5d4f3b82caabf2a081e5648c3, Build and compatibility checks in progress.Known boundaries
uv lockversions reject extreme numeric version metadata from upstreamamulet-compiler-version. The supported developer setup usesuv pip install; the existinguv.lockis stale pending an upstream fix.The original experimental branch
experiment/amulet-leveldb-cp311-cp314remains unchanged. This PR may be squash-merged after the final CI checks succeed. EndKeep release will follow the merge as a separate versioned change.