MagneticResonanceImaging / MRIReco.jl

Julia Package for MRI Reconstruction
https://magneticresonanceimaging.github.io/MRIReco.jl/latest/
Other
85 stars 22 forks source link

MRIReco v0.8 not working with Julia 1.6 LTS #170

Closed beorostica closed 6 months ago

beorostica commented 7 months ago

MRIReco v0.8 is experiencing compatibility issues with Julia 1.6 LTS, despite claiming compatibility in the Project.toml file.

Here's a Minimal Working Example (MWE):

(@v1.6) pkg> add MRIReco @0.8
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package LinearOperatorCollection [a4a2c56f]:
 LinearOperatorCollection [a4a2c56f] log:
 ├─possible versions are: 1.0.0-1.1.1 or uninstalled
 ├─restricted by julia compatibility requirements to versions: uninstalled
 └─restricted by compatibility requirements with MRIOperators [fb1137e3] to versions: 1.1.0-1.1.1 — no versions left
   └─MRIOperators [fb1137e3] log:
     ├─possible versions are: 0.1.0-0.2.0 or uninstalled
     └─restricted by compatibility requirements with MRIReco [bdf86e05] to versions: 0.2.0
       └─MRIReco [bdf86e05] log:
         ├─possible versions are: 0.1.0-0.8.0 or uninstalled
         └─restricted to versions 0.8 by an explicit requirement, leaving only versions 0.8.0

Additionally, it's worth noting that the Continuous Integration (CI) tests seem to only cover the latest Julia version. Is MRIReco not supported in the LTS version of Julia?

tknopp commented 7 months ago

Yes, the minimum version is 1.9 because we use package extensions in LinearOperatorCollections.

beorostica commented 7 months ago

So, LinearOperatorCollections has Julia 1.9 compatibility because it is using 'extensions.'

I know that the package PackageExtensionCompat allows backward compatibility with versions prior to 1.9 while maintaining 'extensions' functionality. The steps for setting this up are pretty straightforward, and I have confirmed that it is working locally by making these changes to the LinearOperatorCollections package. Would you be willing to add Julia backward compatibility for extensions to LinearOperatorCollections? (We should probably have this conversation in the LinearOperatorCollections repo)

tknopp commented 7 months ago

I am not really sure about this one. There are quite some packages which already moved to 1.9 compat like Flux.jl. So what is the motivation behind this. Are there actual users who care or is this only to support the latest LTS (which is 1.6). I expect 1.10 to be released soon (RC2 was already out) and it will likely be the next LTS.

beorostica commented 7 months ago

Hi Tobias, thanks for the response.

I agree that it is a good idea to drop compatiblity with Julia 1.6 (as the LTS is going to change soon). Nevertheless, it appears that that in this case the required changes to mantain the compat are minimal, so "why not" mantain it. Essentially, it would involve adding the following lines of code at the end of the module definition:

using PackageExtensionCompat
function __init__()
    @require_extensions
end

Unless the package is using other features implemented after Julia 1.6 that we overlooked, such as new syntax or features, I would argue that keeping the LTS support is a good thing. If any additional effort/change is required, it makes sense to move to 1.9. We are not too attached to 1.6 anyway, so whatever you decide is fine.

Independant of all this, do you think the julia compat in the Project.toml should change to 1.9?

cncastillo commented 6 months ago

Hi, I think that moving to Julia 1.9 is fine, so this issue can be closed :).

Independant of all this, do you think the Julia compat in the Project.toml should change to 1.9?

As LinearOperatorCollections.jl is the package restricting the compat (julia = "1.9"), this is not necessarily an issue of MRIReco.jl. @beorostica we can suggest this change to LinearOperatorCollections.jl in a pull request if we have time.