Skip to content

v0.3 VersionSet trait

No due date 55% complete

The main driver for v0.3 is replacing the Version trait with the VersionSet trait, making it a more flexible adaptation of our current Range.

This change moves some of the implementation burden for set operations outside of the pubgrub library. So it is important that we provide better tools for helping users testing their implementations. This is especia…

The main driver for v0.3 is replacing the Version trait with the VersionSet trait, making it a more flexible adaptation of our current Range.

This change moves some of the implementation burden for set operations outside of the pubgrub library. So it is important that we provide better tools for helping users testing their implementations. This is especially true for the ordering of versions, which can generate hard to solve bugs. We can probably delay test helper tooling to version 0.3.1 though to avoid blocking release for an infinite duration.

Considering v0.3 is a breaking change, we might want to revise our error handling story. Might be especially interesting to look at recent changes mentioned by Josh Triplett in its latest keynote at RustConf 2022 https://youtu.be/37yASSgrdGE
However, just like for better testing tools, this reflection can be postponed for later, say v0.4 since it's not critical to the main feature we want to introduce in v0.3.

Finally, we want to decide if we get rid of interior mutability in the API, for the sake of simpler reasoning and implementations.