Packaging
Source ready to distribute
2 min A source release can include generated C, headers, and version data without requiring those artifacts to live in the original checkout.
Why not ZIP?
1 min In the packaging discussion I favored ZIP’s mechanics and Python’s existing use of it; the source-distribution contract chose tar.gz.
Static Python
7 min zippy: a PGO-built CPython with every C extension statically folded in, the application zipped onto the tail of the binary, and the interpreter treated as just another dependency.
Quotes for the next parser
2 min A Distil build exposed two separate needs: keep the compiler argument together, and preserve the quotes inside its C macro value.
Building against the metadata
5 min Distlib and Distil exposed the practical edges of a static Python build: incompatible local candidates, ZIP resources, changing schemas, and executable build steps.
A logo that was a glyph
2 min Drawing the pyjs logo into a font, then losing it during conversion.
Relocatable Python with $ORIGIN
3 min A runtime library path relative to the executable lets a built interpreter move as a tree—verified in the ELF policy and the loader’s result.
The shape of a successful build
1 min Comparing file lists and sizes between successful builds can catch packaging regressions that exit codes never will.
A Dependency Edit Does Not Change an ABI
1 min Changing package metadata changes what the package manager accepts; it does not establish that a compiled artifact can run against a new interpreter.