| Artifact ID: | 7d3fba9a7425e31936f2d2c48bbf05290095c438c03697c96febd0b557d42078 |
|---|---|
| Page Name: | Home |
| Date: | 2026-07-23 17:45:04 |
| Original User: | dmestas |
| Mimetype: | text/x-markdown |
| Parent: | 59fc0d71b8816fb7ad5914d12821b766919bf9ff41d62e7c67d24e68e164dd0c (diff) |
| Next | e7ca430525b7dbd240467df7471f01bc1cc4cb54f10f2e6356452cebf9f9055f |
zit
Fossil, reimplemented from its specifications, in Zig.
zit is a clean-room implementation of the Fossil version-control formats
and sync protocol. The deliverable is a reusable library — a Zig
counterpart to libfossil — with the zit command as a thin consumer.
Nothing is ported from C: every rule, byte layout, and rejection
condition is taken from four Internet-Drafts frozen in this repository,
and every test cites the clause it covers.
Download
Download Zit 0.1.2 for macOS ARM64 or Linux x86-64/ARM64, or get the source archive.
The specifications
The drafts under docs/rfcs are the sole authority. Expected values in tests come from the spec text and its worked examples, never from observing another implementation.
| Layer | Draft | Specifies |
|---|---|---|
delta |
draft-fossil-delta-format-00 | byte-level delta encoding: copy/literal segments, base-64 integers, mod-2³² checksum |
artifact |
draft-fossil-artifact-format-00 | card-structured manifests and control artifacts, content addressing (SHA-1 / SHA3-256), checksums |
repostate |
draft-fossil-repo-state-00 | branch, tag, and leaf state derived from the append-only artifact set |
sync |
draft-fossil-sync-protocol-00 | HTTP replication of the artifact set between repositories |
Each layer depends only on the layers before it:
delta -> artifact -> repostate -> sync
That ordering is also the implementation order, and src mirrors it module for module.
Scope
zit implements the version-control substrate: check-in manifests, clusters, and tag/control artifacts are parsed and interpreted. The collaboration artifact types — wiki, ticket, forum, attachment, technote — are carried opaquely: stored, named, and synchronized by hash, never interpreted.
Building
Requires Zig 0.16 or later.
zig build # produce zig-out/bin/zit
zig build run -- version
zig build test # unit tests, one cited test per RFC clause
Finding your way
- Timeline — current activity and history
- Source tree — browse the code at trunk
- README — checkout and build notes
- docs/rfcs — the four frozen drafts