|
| 1 | +# OrdinaryDiffEq.jl v7 / DifferentialEquations.jl v8 Breaking Changes |
| 2 | + |
| 3 | +This release bumps to **SciMLBase v3**, **RecursiveArrayTools v4**, and includes breaking changes across **DiffEqBase**, **OrdinaryDiffEqCore**, and all solver sublibraries. It also coincides with the **DifferentialEquations.jl v8** umbrella release, which is itself a breaking change to the user-facing meta-package. |
| 4 | + |
| 5 | +## DifferentialEquations.jl v8: scope reduction |
| 6 | + |
| 7 | +**`DifferentialEquations.jl` v8 no longer re-exports the full SciML solver suite.** Previously, `using DifferentialEquations` pulled in `OrdinaryDiffEq`, `StochasticDiffEq`, `DelayDiffEq`, `BoundaryValueDiffEq`, `Sundials`, `JumpProcesses`, `SteadyStateDiffEq`, `LinearSolve`, `NonlinearSolve`, `Optimization`, etc. — a large default surface that drove up `using` time and made it unclear which package any given solver actually came from. |
| 8 | + |
| 9 | +In v8, `using DifferentialEquations` only loads `OrdinaryDiffEq`. **All other solver families have been removed from the umbrella.** If your code relied on `DifferentialEquations` for SDEs, DDEs, BVPs, jumps, steady states, or any non-ODE solver, you will need to add the topic-specific package to your project explicitly. |
| 10 | + |
| 11 | +### Migration |
| 12 | + |
| 13 | +Find the topic you need a solver for and add the corresponding sublib(s) directly. The [DiffEqDocs](https://docs.sciml.ai/DiffEqDocs/stable/) tutorials and solver pages now specify, per algorithm, which package it ships from. Common cases: |
| 14 | + |
| 15 | +| Topic | Old (DiffEq v7 umbrella) | New (DiffEq v8) | |
| 16 | +|---|---|---| |
| 17 | +| ODEs | `using DifferentialEquations` | `using OrdinaryDiffEq` (or `using OrdinaryDiffEqTsit5`, `OrdinaryDiffEqRosenbrock`, … for individual solver families) | |
| 18 | +| Stochastic ODEs | `using DifferentialEquations` | `using StochasticDiffEq` | |
| 19 | +| Delay ODEs | `using DifferentialEquations` | `using DelayDiffEq` | |
| 20 | +| Boundary value problems | `using DifferentialEquations` | `using BoundaryValueDiffEq` (or one of `BoundaryValueDiffEqMIRK`, `BoundaryValueDiffEqFIRK`, `BoundaryValueDiffEqShooting`, …) | |
| 21 | +| Jump processes | `using DifferentialEquations` | `using JumpProcesses` | |
| 22 | +| Steady state | `using DifferentialEquations` | `using SteadyStateDiffEq` | |
| 23 | +| DAEs (mass matrix or implicit) | `using DifferentialEquations` | `using OrdinaryDiffEq` (mass matrix), `using Sundials` (`IDA`), or topic sublib | |
| 24 | +| Sundials wrappers (CVODE, IDA, ARKODE) | `using DifferentialEquations` | `using Sundials` | |
| 25 | +| Linear / nonlinear / optimization | `using DifferentialEquations` | `using LinearSolve` / `using NonlinearSolve` / `using Optimization` | |
| 26 | + |
| 27 | +For ODE work specifically, prefer importing only the sublib you need (e.g. `using OrdinaryDiffEqTsit5: Tsit5`) rather than the umbrella `using OrdinaryDiffEq` — the v7 ecosystem split lets you trim `using` time substantially. The DiffEqDocs tutorials and solver index annotate every algorithm with its host sublib. |
| 28 | + |
| 29 | +### Why |
| 30 | + |
| 31 | +Removing the meta-package's broad re-exports lets each topic's package version cycle independently, eliminates the long `using DifferentialEquations` precompile chain for users who only need ODEs, and makes the dependency graph for any given script honest about what's actually being loaded. |
| 32 | + |
| 33 | +This change is independent of the `OrdinaryDiffEq` v7 changes below — `OrdinaryDiffEq` v7 ships with `DifferentialEquations` v8, but you can also use `OrdinaryDiffEq` v7 directly without the umbrella package at all. |
| 34 | + |
1 | 35 | # OrdinaryDiffEq.jl v7 Breaking Changes |
2 | 36 |
|
3 | 37 | This release bumps to **SciMLBase v3**, **RecursiveArrayTools v4**, and includes breaking changes across **DiffEqBase**, **OrdinaryDiffEqCore**, and all solver sublibraries. |
|
0 commit comments