JuliaRegistries / RegistryCI.jl

Continuous integration (CI) tools for Julia package registries, including registry consistency testing, automatic merging (automerge) of pull requests, and automatic TagBot triggers
https://juliaregistries.github.io/RegistryCI.jl/stable
Other
31 stars 30 forks source link

Require `[compat]` for stdlib dependencies #516

Closed vchuravy closed 10 months ago

vchuravy commented 11 months ago

Fixes #515, by no longer treating stdlibs as special.


(Note: previously, this PR also added the requirement for JLL dependencies. That was removed from this PR.)

vchuravy commented 11 months ago

This may be to aggressive, but I do think that we need compat entries at least for every stdlib.

DilumAluthge commented 11 months ago

cc: @staticfloat @giordano (to take a quick look at the JLL-related changes)

ericphanson commented 11 months ago

This change makes sense to me, but when deployed, this should be accompanied by a discourse post announcing the change and the rationale. (Including what authors should do, e.g. how should they set compat bounds on stdlibs)

vchuravy commented 11 months ago

@ericphanson how about the following annoucement

PSA: Compat requirements in the General registry are changing.

Up until now standard libraries (and JLL's) have been excluded from the mandatory requirement of being listed in [compat]. Since the version of a standard library was tightly coupled to the version of Julia it was shipped with.

In Julia v1.11 (and to an lesser extend v1.10) we are moving towards upgradeable standard libaries, this means that Julia will still come with the same selection of standard libraries, but instead of waiting for a new Julia release, standard libraries will have their own release cycle. So it should be possible in the future to use Pkg v1.12 on Julia v1.11.

In effect standard libraries are becoming normal Julia packages, with the only difference that a version of them will be shipped with a default Julia install.

Now this means that version numbers of standard libraries and Julia are no longer coupled and one must manually declare [compat] requirements for standard libraries as well as Julia in your Project.toml. We will handle the registry side of things automatically, but developers will have to manually adjust their Project.toml the next time they release a version to the registry.

So a Project.toml like:

name = "TestStdlibMissingCompat"
uuid = "4a0d4eb6-ee8c-4d0f-9d49-1daa6f6c32cf"
authors = ["Valentin Churavy <v.churavy@gmail.com>"]
version = "0.1.0"

[deps]
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[compat]
julia = "1.9"

Would become:

name = "TestStdlibMissingCompat"
uuid = "4a0d4eb6-ee8c-4d0f-9d49-1daa6f6c32cf"
authors = ["Valentin Churavy <v.churavy@gmail.com>"]
version = "0.1.0"

[deps]
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[compat]
julia = "1.9"
Statistics = "1.9"
DilumAluthge commented 11 months ago

In your example Project.toml file, can you also add an example JLL dependency, just for purposes of illustration?

ericphanson commented 11 months ago

That sounds great to me, but I agree with Dilum we should mention more JLLs too, not just stdlibs, since we're changing both here. (We mentioned they were exempt but not that they are no longer exempt). Also as a tiny grammar nit,

Since the version of a standard library was tightly coupled to the version of Julia it was shipped with.

is kinda an incomplete sentence; maybe:

Stdlibs were exempt because the version of a standard library was tightly coupled to the version of Julia it was shipped with.

DilumAluthge commented 11 months ago

@vchuravy and/or @staticfloat - can you help @giordano out with https://github.com/JuliaPackaging/BinaryBuilderBase.jl/pull/314?

vchuravy commented 11 months ago

After a conversation with @DilumAluthge I would say let's back out the JLL change for now, that seems like a bigger change and the stdlib change needs to happen now. We are already likely to have some inconsistencies in the Registry.

DilumAluthge commented 11 months ago

https://discourse.julialang.org/t/psa-compat-requirements-in-the-general-registry-are-changing/104958?u=dilumaluthge

DilumAluthge commented 11 months ago

Let's call this breaking. I've bumped the major version number to 9.

DilumAluthge commented 11 months ago

bors try

bors[bot] commented 11 months ago

try

Build failed:

DilumAluthge commented 11 months ago

@vchuravy We need to fix several of the integration tests.

DilumAluthge commented 11 months ago

bors try

bors[bot] commented 11 months ago

try

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here. For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

DilumAluthge commented 10 months ago

bors merge

bors[bot] commented 10 months ago

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here. For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

DilumAluthge commented 10 months ago

This will be registered in https://github.com/JuliaRegistries/General/pull/94135.

DilumAluthge commented 10 months ago

This will be deployed by the combination of https://github.com/JuliaRegistries/General/pull/94141 and https://github.com/JuliaRegistries/General/pull/94142

vchuravy commented 10 months ago

I reran StdlibRegistryCompatUpdater for DelimitedFiles and Statistics https://github.com/JuliaRegistries/General/pull/94159