Skip to content
zit zit 0.14.0
Login

zit 0.14.0

zit 0.14.0 lets a repository's owner erase a version of a file on every peer that syncs, and makes annotate -n and the history of one file cheaper on a forge.

This release is from trunk. Stores, caches and the daemon protocol version are unchanged from 0.13.0; nothing is rebuilt on upgrade.

Signed erasures

Until now zit shun --force erased a version on one store only; other devices, the server and old clones still held the bytes and could sync them back. An erasure the owner signs now reaches every peer that syncs, directly or through a server, and every peer refuses the bytes afterwards.

The sync protocol draft describes the row format and the rules in a new section 9.3.1.

annotate -n

annotate -n N now answers from the blame cache when that file's cache holds an answer from an earlier unlimited annotate, so a file annotated once in full costs about the same at any limit. On a 32,500-line file, annotate -n 50 went from 0.68 s to 0.09 s. The answer is the same as walking the versions, byte for byte. The cache cannot stand in for the walk where a version inside the limit has its primary parent outside it and a merge parent inside it; that walk runs as before. A limited annotate does not fill the cache on a long history.

log for a path

zit log PATH walks the ancestry with bit sets instead of hash tables. A 200-row page of a 11,000-version history costs about 0.09 s instead of 0.19 s.

Daemon

A stopping zit daemon lets go of its store's lock as soon as it stops listening, before it writes its caches. A new daemon whose socket nothing answers on waits up to 2 seconds for the lock, so a restart right after a stop is no longer refused. A daemon that is serving is still refused at once.

Compatibility

Stores, check-ins, the sync protocol and the daemon protocol version are unchanged, and no cache changes format.

A signed erasure row reads, to an older zit, as an ordinary shun with an unusual reason: it refuses the bytes at once, with no delay and no cancel. Until every peer runs 0.14.0, give --now or expect older peers to apply an erasure early.

Qualification

The release manifest records native qualification against the exact tagged source archive on macOS ARM64, Linux x86-64 and Linux ARM64, using the pinned Zig 0.17.0 toolchain. Publication is gated on unit and end-to-end tests, Git differentials, deterministic simulation, seeded fuzzing, and Fossil interoperability checks on every distributed target.

For the basis of the conformance claim, see the 0.1.0 release notes.