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

Update to IntervalArithmetic v0.22, drop IntervalBox #205

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

schillic
Copy link
Member

@schillic schillic commented Nov 29, 2024

Closes #181.

Background

I tried to upgrade IntervalArithmetic.jl together with IntervalBoxes.jl, just to see how far it goes. Spoiler: not far.
There are two problems (already discussed in #181):

  1. One cannot depend on IntervalBoxes without enforcing a new version of IntervalArithmetic (v0.22.12).
  2. Three optional dependencies are not (yet) compatible with IntervalArithmetic v0.22 (as discussed above already) and thus would become not usable.

Two of these optional dependencies have not been maintained in a long time, so I am not hopeful that this will change anytime soon.
It seems silly to rely on the optional dependencies (then they are not really optional), but dropping support and tests for three backends at once would also make this package much less useful and more fragile.

This PR

As an alternative, I tried to remove IntervalBox (and instead use AbstractVector{<:Interval}) in this PR. But I did not really manage. All this PR does to the actual library is allow to use the new version of IntervalArithmetic, which works fine if only one-dimensional Intervals are used. (There is one catch: multiple enclosure methods cannot yet be combined.)

Note that the tests (and docs) still use the old version where IntervalBox is used, so the new version is currently untested. I created a second (nested) test folder with a separate Project.toml file to test the new version as well. This script essentially skips all tests with these optional dependencies and IntervalBox.

If we want to go with this change, I suggest to add a second CI test script to run those tests as well (not yet done here).

(The additional invalidations come from loading PkgVersion and should be ignored.)

@schillic schillic force-pushed the schillic/intervalarithmetic branch from bf40330 to 2ac94b6 Compare November 30, 2024 07:34
@schillic schillic force-pushed the schillic/intervalarithmetic branch from 2ac94b6 to 3c4a0ac Compare November 30, 2024 07:45
@schillic schillic marked this pull request as ready for review November 30, 2024 08:14
@OlivierHnt
Copy link

Sorry to see that upgrading RangeEnclosures.jl to IA 0.22 is so difficult 😞.

Why is it so hard to replace IntervalBox with AbstractVector{<:Interval}? Are we missing some features?

For reference, TaylorModels.jl compatibility with IA depends on this PR JuliaDiff/TaylorSeries.jl#345 which I hope will be merged soon.

I do not know about the other two libraries, but I can look into upgrading them. NB: you probably already know, but IA v0.22 requires Julia 1.9+.

If I can help, let me know!

(cc @Kolaru)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Supporting more recent IntervalArithmetic versions
2 participants