# zit 0.1.4
zit 0.1.4 is a repository-workflow and distribution release over 0.1.3. It
keeps the same Fossil RFC revision-00 scope while adding Git interchange,
sparse and multi-worktree operation, broader repository inspection, and a
release process that proves the published binaries run below the CPUs that
built them.
## Highlights
- Linux release binaries are portable across their declared architectures.
ReleaseFast builds name an explicit Zig target, and the packaged binaries
are executed under deliberately low-feature x86-64 and ARM64 CPU models
before publication.
- `import-git`, `export-git`, and `import-fossil` provide bounded, fail-closed
interchange. Fossil imports can preserve the original corpus byte-for-byte
or deliberately re-mint it as a sub-manifest history.
- Sparse repositories and checkouts carry explicit cones, fetch omitted
content on demand, and refuse clone requests a sparse origin cannot answer
completely.
- Detached worktrees share one store without sharing checkout state. Ignore
policy can be supplied through repository settings, `.zit-settings`, and
`.zitignore`.
- Repository reads use the derived repository image consistently. `log`, `ls`,
`cat`, `bisect`, `info`, `branch`, and `tag` no longer re-derive overlapping
views independently.
## Portable packaged binaries
The 0.1.3 Linux x86-64 archive was built for its Zen 4 release host rather than
for the architecture baseline. It therefore contained unconditional AVX-512
and SHA-NI instructions and exited with `SIGILL` on ordinary x86-64 machines,
including GitHub-hosted Ubuntu runners. The Linux ARM64 build had the same
class of defect through LSE and crypto-extension instructions.
The release workflow now materializes one source archive from the exact
`version-X.Y.Z` Fossil tag and supplies that archive to every build runner.
Each ReleaseFast build names its target explicitly: `aarch64-macos`,
`x86_64-linux`, or `aarch64-linux`. Packaging happens once after the full
release battery. The transferred archive is checksum-verified and its inner
binary is executed from the package, not from the build tree.
Linux x86-64 is run directly on GitHub-hosted Ubuntu and under QEMU's Nehalem
CPU model, which predates AVX. Linux ARM64 is run under QEMU's Cortex-A53 model,
which predates LSE. Publication consumes those already-qualified archives; it
does not rebuild them.
## Repository interchange and layout
`import-git` translates Git fast-export streams into zit history with explicit
limits, progress, rollback on failure, reference collision diagnostics, and
optional sub-manifest generation. `export-git` writes bounded incremental
fast-import streams, persists marks, preserves topology and identities, and
publishes mirrors without exposing partial state. `import-fossil --compatible`
preserves the source corpus in its original sync world; `--submanifest`
replays and verifies the whole history before atomically publishing a new
sub-manifest corpus and provenance map.
Sparse cones now apply across clone, open, update, merge, sync, and pack.
Elided artifacts remain distinct from shunned artifacts, a sparse store does
not request content outside its cone, and an origin that cannot satisfy a
requested cone returns a named refusal rather than an incomplete clone.
Detached worktrees can open or create additional checkouts over one store, and
`open --store` can deliberately re-point an existing worktree.
## Inspection, diagnostics, and performance
The new `frames` stream exposes verified raw artifacts after an opaque cursor,
and `annotate` resolves a version through the same name rules as other read
commands. `verify` performs an explicit repository integrity check. `grep -S`
and `grep -G` search historical file content and change sets. Help topics now
centralize name resolution, sparse behavior, repository selection, and exit
status instead of letting each verb restate a drifting subset.
Read-only store opening scans frame headers instead of materializing every
stored container. Pack, log, and repository-state construction reuse derived
adjacency, file sets, and delta-base reads. The shipped optimization mode is
now ReleaseFast and is pinned as project policy rather than left to a
packager's flags; validation of untrusted input remains explicit and is guarded
against being replaced by debug-only assertions.
## Qualification
Every published binary is built from the same checksum-pinned source archive
with Zig 0.16.0 in ReleaseFast mode. Each native target runs:
- formatting and an explicit-target ReleaseFast build;
- the complete unit and end-to-end suites;
- deterministic simulation, seed 1 for 1,000 steps;
- every registered fuzz target, seed 1 for 100 rounds; and
- Fossil 2.28 interoperability scenarios, repeated three times on macOS and
ten times on each Linux architecture.
The final package is checksum-verified after artifact transfer and executed on
a separate qualification runner. `release-manifest.json` records the exact
source identity, target names, archive and binary hashes, optimization mode,
and qualification performed.
## Compatibility
The command-line version string is:
```text
zit 0.1.4 (targets Fossil RFC rev 00)
```
Repositories written by 0.1.3 require no conversion. Existing dense checkouts
remain dense unless a sparse cone is selected explicitly. The 0.1.3 artifacts
remain published for provenance but should not be used on Linux; 0.1.4 is the
portable replacement.