Skip to content
zit Update of ”Home”
Login

Update of ”Home”

Overview

Artifact ID: 089fb6daa775e64d2e0034c03f2e4bc176ae6a6543fac1b30084d765e39a0914
Page Name:Home
Date: 2026-07-20 15:37:45
Original User: dmestas
Mimetype:text/x-markdown
Parent: 1f178738ebc562eb2becc36c55fc3721f9df48f5f8347319d24b92a77a0ce10f (diff)
Next 59fc0d71b8816fb7ad5914d12821b766919bf9ff41d62e7c67d24e68e164dd0c
Content

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.0 for macOS 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