Meta( title: "Yak Shaving", summary: None, published: None, tags: [ "software", "programming", "rust", ], ) --- It's funny the little tangents I'll go on sometimes when I'm working on a project. I have a bad NIH complex at times which is getting worse in relation to Rust. Often this is spurred on because I actually care about binary sizes and dependency graphs, so I will gladly reinvent a few wheels in order to trim out some bloat in both of those regards. I've gotten my little archiver, Haggis, working pretty well now. At least the Rust implementation is working and pretty well tested. I have a tested C library called SeaHag which is fairly complete, just in need of a binary to complete the proof of concept. I also have a Zig implementation which is nearly as complete as the C one, which is to say I've spent way too much time farting around. But I did actually begin working a bit more towards building my package manager for HitchHiker, which was after all the goal here. Then I went down another rabbit hole. I wanted some really flexible versioning for my package manager. You can *mostly* count on open source projects to use SemVer, but there are jackasses like Mozilla who like to just give you a single number as the version, and there's even a few shops that like to give you a four number version of SemVer. Then there's the need account for pre-releases, and properly order them. I went so far as to enable using a Git revision as a pre-release, and that's when the rabbit hole opened up again.