Skip to content
zit Artifact [df8da5bc64]
Login

Artifact [df8da5bc64]

Artifact df8da5bc64fdb7d7e489a0d73d734eef5f877fed96ba6814212f0fcde77ad794:


zit 0.6.0

zit 0.6.0 makes repeated repository reads cheaper, accepts incremental Git imports from shallow sources whose boundary commits are already imported, and negotiates sub-manifest support explicitly rather than inferring it from a peer's Fossil version.

This release is from trunk. Horizon clones, horizon cursors and the horizon-specific sparse-cone extensions are not included.

Repository reads

The read-only repository image and log index are mapped and queried in place. Opening either no longer requires reading and checksumming the whole cache or rebuilding its entries in memory. The log index uses fixed-width records and a digest-sorted directory, including for abbreviated artifact-name lookup.

cat and ls --under search the sorted file entries of a check-in rather than parsing every entry. Tree manifests open only the sub-manifests that can contain the requested path or prefix. A parsed baseline manifest can be retained in a disposable sidecar for subsequent reads.

ls --long records a blob's text/binary classification by artifact name. The first listing still reads that blob; later listings reuse its class and check its current availability and size. A shunned or absent blob is still reported as absent. --no-cache reads afresh and records nothing. The output columns and their meanings are unchanged.

These optimizations concern warm reads. A first open without derived caches still pays for their construction, and a full-tree listing still pays for the entries it emits.

Git imports

import-git --into accepts a shallow source when its boundary commits are already known to the destination. It establishes source identity from known commits and checks connectivity over the new range rather than requiring the source's complete history.

A fresh import no longer places a singleton symbolic branch-name tag on a main head already labelled by the propagating branch control. That singleton could stop the name propagating to later check-ins. This prevents new affected imports; it does not rewrite existing tag history.

Sub-manifest negotiation and settings

Peers announce support with pragma send-submanifests. A writer refuses S-bearing artifacts to a peer that has not announced support, regardless of its numeric version. An implementation that uses only the former version-based signal must be upgraded before exchanging sub-manifests with this release. Ordinary repositories without S-bearing artifacts continue using the existing Fossil-compatible protocol.

The draft and command help no longer describe sub-manifest repositories as disposable fixtures. The permanent compatibility rule remains: do not enable sub-manifests where any reader cannot understand them. Stock Fossil does not implement sub-manifests.

An in-range stored sub-manifest k remains pinned. An out-of-range stored value now requires an explicit in-range --k to replace it. The retune notice explains that the next check-in shares precisely those sub-manifests whose bytes are unchanged. Clone-time settings adoption, history-replay selection and session scope are clarified in the draft.

The obsolete provisional-format warning is removed from Git export. Its --quiet option remains accepted for compatibility but has no effect.

Format compatibility and drafts

D and E card fractional seconds accept any number of digits and truncate to milliseconds. A cancel tag's value remains on its stored row, matching Fossil. The deterministic-simulation oracle now follows leaf recheck events rather than assuming leaves are recomputed solely from graph shape.

The drafts remain draft-fossil-*-00, revised in place. Corrections are folded into their texts and listed in their Changes appendices. The applied erratum files have been retired from the tip; they remain in repository history. zit version identifies the target as RFC rev 00. This label change does not undo any correction.

Cache compatibility and integrity

The repository's append-only store and artifact formats are unchanged. The derived log index uses a new cache layout; an older or unreadable layout is rebuilt. The baseline and blob-class sidecars are disposable and are not synchronized.

An exact-match mapped image or index open checks its version, layout and log-tail identity, but does not verify its whole-file checksum. The full and extension paths retain checksum verification. Atomic replacement protects cache publication from partial writes, but it does not detect subsequent disk corruption. Bounds checks are not a substitute for that checksum: some corrupted derived values can be believed on a warm read. --no-cache bypasses derived caches when an authoritative reread is needed.

Qualification

The release manifest records the actual per-platform qualification results against the exact tagged source archive. Qualification uses the CI-pinned Zig 0.17.0, native macOS ARM64 and Linux x86-64/ARM64 builds, unit and end-to-end tests, Git differentials, deterministic simulation, the seeded fuzz sweep, and Fossil interoperability checks. Publication is gated on successful qualification of every distributed binary.

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