Nice blog post! I also wrote a concurrent reference counted cycle collector in Rust (https://github.com/chc4/samsara, https://redvice.org/2023/samsara-garbage-collector/) though never published it to crates.io. It's neat to see the different choices that people made implementing similar goals, and dumpster works pretty differently from how I did it. I hit the same problems wrt concurrent mutation of the graph when trying to count in-degree of nodes, or adding references during a collection - I didn't even think of doing generational references and just have a RwLock...
Honest answer is mostly that I forgot; there was one more small TODO that I needed to fix before I wanted to publish it, and then I got busy and forgot about it.
You can always publish unfinished crates as 0.0.1 version
0.0.x crates are special in that they can have breaking changes even in minor versions (so 0.0.1 isn't compatible with 0.0.2), so they convey a level of stability that is even less than a typical 0.1.x crate
More generally, this is just semantic versioning. The first non-zero position is considered to have "major" impact, the following number is then a "minor" impact. https://docs.rs/semver/latest/semver/
Note that Cargo is a bit more strict than semver because Cargo consider that 0.1.2 must be compatible with 0.1.1 (for instance) but semver says that for any x and y, 0.x.y anything goes. However, 0.0.1 is not compatible with 0.0.2 (like semver)