znippy-common — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The shared core of the znippy workspace — plugin trait, Arrow-IPC index/manifest schema, codec, decompress engine, and the native package handlers all live here.
- Does: Defines the
ZnippyPlugin/ArchiveTypePlugintrait and metadata model (plugin.rs), the on-disk.znippyindex/manifest/footer schema and reader/writer (index.rs,archive.rs), theArchiveMetaSinkabstraction with its defaultArrowIpcSink(meta_sink.rs,meta_sink_append.rs), the OpenZL/zstd codec (codec.rs), the decompress path (decompress.rs), the slot-pool CUT POLICY (poolplan.rs— the pool itself is upstream,znippy_zoomies::chunk_revolver), typed query views over sub-indexes (views.rs), and the native handlers underplugins/(cargo, npm, gem, conda, rpm, deb, wasm_loader, skeletons). Optionalsignfeature adds detached CMS provenance signatures. - Key deps:
arrow/arrow-array/arrow-select58 (index schema, re-exported so plugins compile against the exact version),openzl-sys-rs(codec),blake3(checksums),crossbeam-channel,fst; optional host-decompressors pull sibling zoomies cratesljar/lgz/lbzip2pluslzma-rs/ruzstd/tar; optionalwasmtimefor WASM plugins; RustCrypto stack behindsign. - Shape: lib, ~9.4k LOC, largest modules
views.rs(1462),sign.rs(1200),index.rs(1061),meta_sink_append.rs(860), plus aplugins/subtree of native handlers. - Observed role in the workspace: Foundation crate — depended on by znippy-compress, znippy-decompress, all plugins, znippy-iceberg, and the CLI. It re-exports
arrowand owns the format contract everyone else implements against.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: