#104849

Streamline retroactive compat bounds adjustment

OpenLilithHafneropened 2y ago

(the 4th item is likely excessive)

Activity

14
felixcremer2y ago
felixcremer2y ago
DilumAluthge2y ago
  • Document the compatibility specification format

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

DilumAluthge2y ago
  • Document the compatibility specification format

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

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

Let's move this to a separate issue on the Registrator.jl repo: https://github.com/JuliaRegistries/Registrator.jl/issues/436

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

Let's move this to a separate issue on the Registrator.jl repo: https://github.com/JuliaRegistries/Registrator.jl/issues/436

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

https://github.com/JuliaRegistries/RegistryCI.jl/pull/575

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

https://github.com/JuliaRegistries/RegistryCI.jl/pull/575

goerz1y ago

Could someone elaborate on what “ retroactive compat bounds adjustment” means, exactly? How would it not break reproducibility? (Cf https://github.com/JuliaRegistries/General/pull/119607#issuecomment-2491438890)

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

goerz1y ago

Could someone elaborate on what “ retroactive compat bounds adjustment” means, exactly? How would it not break reproducibility? (Cf https://github.com/JuliaRegistries/General/pull/119607#issuecomment-2491438890)

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

LilithHafner1y ago

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.

LilithHafner1y ago

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.

goerz1y ago

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!

goerz1y ago

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!