Kaizen-3C infinity mark Kaizen-3C

Part 00 · Moving bzip2 to safe code · prologue

Prologue — a library that almost stopped

“The most dangerous phrase in the language is: we've always done it this way.”
— Grace Hopper

Moving critical C is necessary, and it is hard. This series is about the second half of that sentence — making the change less risky, one honest, diffable step at a time.

bzip2 didn’t arrive fully formed. Julian Seward released its predecessor, bzip, in 1996; software-patent trouble around its arithmetic coder forced a redesign, and bzip2 — arithmetic coding swapped out for Huffman — followed in 1997. Version 1.0 arrived in late 2000, and over the following decade bzip2 quietly became infrastructure: a default in package managers, archives, and scientific formats the world now depends on without thinking about it.

Then it went quiet. After 2010 the project sat without a release for nearly nine years — not broken, just unmaintained, which is the ordinary fate of load-bearing C. It took volunteers to end the drought: Federico Mena accepted maintainership in 2019 and shipped version 1.0.8, and Micah Snyder has maintained the project since 2021. Today the Trifecta Tech Foundation is helping carry that effort forward — including a ground-up Rust rewrite, the reference this series diffs against.

That arc — essential, then neglected, then revived — is the whole reason this series exists. The hard part of critical C was never writing it. It’s the decade someone has to keep it alive, and the risk that rides along with every change. De-risking that change is the story we’re here to tell.

Sources: Wikipedia: bzip2 · the bzip2 project · Trifecta’s libbzip2-rs.