Hacker News
Show HN: 6cy – Experimental streaming archive format with per-block codecs
I’ve been experimenting with archive format design and built 6cy as a research project.
The goal is not to replace zip/7z, but to explore: • block-level codec polymorphism (different compression per block) • streaming-first layout (no global seek required) • better crash recovery characteristics • plugin-based architecture so proprietary codecs can exist without changing the format
Right now this is an experimental v0.x format. The specification may still change and compatibility is not guaranteed yet.
I’m mainly looking for feedback on the format design rather than performance comparisons.
Thanks for taking a look.
fwip
|next
[-]
It might also be nice to provide a mechanism to advertise the required codecs toward the beginning of the stream, in case the consumer does not have the necessary codecs and wishes to abort the transfer.
yihac1
|root
|parent
[-]
The current u8 codec ID is mainly there to keep the block header very small and fast to parse, but it’s not meant to be the global identifier. The idea is to map that ID to something globally unique (most likely a UUID) through the plugin/manifest layer, so we can avoid collisions without bloating the on-disk format.
I also like the suggestion about advertising required codecs early in the stream. That would make it much nicer for a reader to fail fast if it doesn’t support something, especially for streaming use cases. We’re exploring adding a small capability section near the beginning for exactly that reason.
Since the format is still experimental, this kind of feedback is really helpful before we lock things down.