Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Streamline retroactive compat bounds adjustment #104849

Open
1 of 5 tasks
LilithHafner opened this issue Apr 13, 2024 · 7 comments
Open
1 of 5 tasks

Streamline retroactive compat bounds adjustment #104849

LilithHafner opened this issue Apr 13, 2024 · 7 comments
Labels
help wanted Extra attention is needed

Comments

@LilithHafner
Copy link
Member

LilithHafner commented Apr 13, 2024

(the 4th item is likely excessive)

@felixcremer
Copy link

The compat format is described here: https://pkgdocs.julialang.org/v1/registries/#Registry-Compat.toml

@DilumAluthge
Copy link
Member

  • Document the compatibility specification format

https://pkgdocs.julialang.org/v1/registries/#Registry-Compat.toml

@DilumAluthge
Copy link
Member

  • Add some highly automated @JuliaRegistrator set_compat_bounds(...) invocation

Let's move this to a separate issue on the Registrator.jl repo: JuliaRegistries/Registrator.jl#436

@DilumAluthge
Copy link
Member

  • Add CI checks to verify that specifications are properly formatted (and only run checks on edited files)

JuliaRegistries/RegistryCI.jl#575

@goerz
Copy link
Member

goerz commented Nov 21, 2024

Could someone elaborate on what “ retroactive compat bounds adjustment” means, exactly? How would it not break reproducibility? (Cf #119607 (comment))

I wasn't aware that we allow the compat bounds of releases to be changed retroactively, e.g., in #115069. Are there guidelines on how/when to do this? Maybe I'm just not thinking this through correctly.

@LilithHafner
Copy link
Member Author

Could someone elaborate on what “ retroactive compat bounds adjustment” means, exactly?

It's exactly what it says on the tin. Changing the compat bounds of a released version of a package after its release. This is almost always a reduction in declared compatibility (an increase can be declared by releasing a new version with wider compat bounds). The reduction is often done to indicate incompatibility with a version of a different package (or Julia) that did not exist at the time the original was registered. This does not alter the behavior of the package at all, simply informs Pkg (or any other Julia package manager you might be using) that this version of the registered package is not compatible with some versions of some other packages.

How would it not break reproducibility?

Yanked packages can still be instantiated from manifests and I would hope the same is true for packages with unsatisfied compat bounds. If you're going for reproducibility using a Manifest.toml, it should continue to work; if you're going for reproducibility and only have Project.toml, then you may end up with different—symver-compatible—versions of any packages you depend on, even without retroactive compat bounds adjustment.

Are there guidelines on how/when to do this?

I think it's appropriate to adjust compat bounds as an alternative to yanking in the second category of yank candidates on the readme:

That special category is when the compat bounds have been set too wide. i.e. say v2.10.0 was released using a feature not on julia v1.6 but the compat entry for julia was not raised in the release.

@goerz
Copy link
Member

goerz commented Nov 21, 2024

Yanked packages can still be instantiated from manifests and I would hope the same is true for packages with unsatisfied compat bounds

That's the part that wasn't obvious to me. If that works, all should be fine. And I guess we've been doing these adjustments routinely, given that there's a compat fix tag, and nothing seems to have blown up 😉

I'm certainly learning a lot of new things about the registry these last couple of days!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants