Skip to content
zit Update of ”Home”
Login

Update of ”Home”

Overview

Artifact ID: 60457e87f7aef7151580e0422a53098329dff997304a9a85d961553cf67bd354
Page Name:Home
Date: 2026-07-10 19:32:48
Original User: dmestas
Mimetype:text/x-markdown
Next 1f178738ebc562eb2becc36c55fc3721f9df48f5f8347319d24b92a77a0ce10f
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.

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