The v8 migration guide for DifferentialEquations.jl lives in another repository's NEWS.md
Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.
At a glance
- What is it?
- SciML/DifferentialEquations.jl is a Julia suite for numerically solving differential equations across fourteen equation families, with analysis tools for sensitivity, parameter estimation, and uncertainty. Most of what it lists is provided by a separate package in the same organisation, and the file documenting its own major-version upgrade lives in a different repository.
- Who is it for?
- DifferentialEquations.jl suits a Julia user who wants one entry point across equation families rather than one package per problem type, and the switching argument is sound, since comparing methods is supposed to be a one-line change. Two things to plan for.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 27 days ago.
- What is it written in?
- Mainly Julia, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- SciML/DifferentialEquations.jl3,178 ★ · +21
| Repository | 2026-09-24 | 2026-11-13 |
|---|---|---|
| SciML/DifferentialEquations.jl | 3.2k | 3.2k |
21 Stars in the last 50 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The v8 upgrade notes are a link into a different repository
The file opens with an update notice rather than a description, and the notice points somewhere else.
It says version 8 had many breaking changes, and that the complete migration story is detailed in a NEWS.md file inside the OrdinaryDiffEq.jl repository.
So the package whose version you are upgrading does not contain its own migration guide. The note about the largest set of breaking changes in the project's recent history lives in the changelog of the package that implements ordinary differential equations, which is a member of the same organisation and a dependency of this suite.
That is not unusual in a suite built by layering, and it is defensible, since the ODE solvers are where most of the breaking surface would be. It does mean that a reader who clones this repository, finds the notice, and follows it ends up reading another project's file to work out what changed in this one.
There is a NEWS.md at the root here as well, so the information exists in both places to some degree, and the README does not say how the two relate.
The releases themselves cluster in late August 2026: v8.1.1 on the 27th, and v8.1.0 and v8.0.3 both on the 23rd.
Two tags were published 81 seconds apart
The timestamps of the three most recent releases are worth looking at together.
v8.0.3 was published on 2026-08-23 at 20:57:02 UTC. v8.1.0 was published on 2026-08-23 at 20:58:42 UTC. That is eighty-one seconds apart, on the same evening. v8.1.1 followed four days later on the 27th.
Two releases of different version numbers cannot both describe new work. What this shape describes is a two-stage publication: a patch and a minor cut and pushed together, or a minor cut and a patch cut moments later so that the maintenance release is available on top of the feature release.
For anyone pinning a version, the ordering matters more than it looks. A script that takes the newest tag by version number gets v8.1.1, which is correct. A script that takes the newest tag by publication time also gets v8.1.1. A script that assumes the minor release supersedes the patch gets the right answer only by luck, because v8.0.3 was published first.
The last push to the master branch was on 2026-09-11, fifteen days after the newest tag, so there is work on the branch that no release covers.
Almost every capability on the list is a different package
The integration list has twelve entries and almost every one names a repository other than this one.
GPU acceleration comes through CUDA.jl and DiffEqGPU.jl. Automated sparsity detection is Symbolics.jl. Automatic Jacobian colouring, which is what makes sparse, tridiagonal, banded, and block-banded Jacobians fast, is SparseDiffTools.jl. Specifying a linear solver explicitly is LinearSolve.jl. There are links to JuliaGPU, SciMLStyle, and ColPrac as well.
The analysis features are the same pattern, six of them. Forward and adjoint sensitivity analysis through automatic differentiation is SciMLSensitivity. Parameter estimation and Bayesian analysis, global sensitivity analysis, and uncertainty quantification have their own documentation paths. Neural differential equations are DiffEqFlux.jl. And parallel ensemble simulations, described as automatic, distributed, multithreaded, and GPU, are a documentation page rather than a package in this tree.
What remains in this repository is the solver suite itself and the top-level namespace that ties these together.
That is a legitimate architecture, and the value of an umbrella package is that the user does not have to know which of a dozen packages owns a feature. It also means the capabilities can improve without this repository changing, and can break without this repository releasing anything.
One of the fourteen equation families is labelled experimental
The suite covers fourteen kinds of equation, from discrete maps through to partial differential equations.
The list runs from discrete equations, meaning function maps and Gillespie or Markov simulations, through ordinary differential equations, split and partitioned forms for symplectic integrators and IMEX methods, stochastic ordinary and stochastic differential equations, stochastic differential-algebraic equations, random differential equations, differential-algebraic equations, delay differential equations, and the neutral, retarded, and algebraic delay forms.
Exactly one of the fourteen carries a qualifier:
- Stochastic delay differential equations (SDDEs)
- Experimental support for stochastic neutral, retarded, and algebraic delay differential equations (SNDDEs, SRDDEs, and SDDAEs)So the stochastic neutral, retarded, and algebraic delay family is described as experimental support while the ordinary stochastic delay case next to it is not. That is a small but precise statement about where the maturity boundary sits, and it is the only place in a fourteen-item list where a reader is told that something might not be finished.
The last two entries widen the scope rather than the method list. Mixed discrete and continuous equations are named as hybrid equations and jump diffusions. And partial differential equations are included, with both finite difference and finite element methods.
The performance claims are here and the benchmarks are elsewhere
The file makes three claims about speed and then points at two other places for the evidence.
The first claim is that the solvers benchmark as some of the fastest implementations of classic algorithms. The second is that the suite includes algorithms from recent research which routinely outperform the standard C and Fortran methods. The third is the practical one: solving the same equation with methods from different languages and packages can be done by changing one line of code, which makes it easy to benchmark and confirm you are using the fastest method available.
None of that evidence is in this repository. Benchmarks live in SciMLBenchmarks.jl, a separate project. Tutorial notebooks live in SciMLTutorials.jl, also separate. And the file says that if you find any equation where there seems to be an error, please open an issue, which is the right way to handle a numerical library and also an admission that the correctness surface is open-ended.
The design point underneath the claims is the wrapping. The suite wraps common C and Fortran methods, and Sundials and Hairer's radau are both named, so you can switch to a reference implementation whenever necessary.
Two testing commitments are also stated: the algorithms are thoroughly tested to ensure accuracy via convergence tests, and they are continuously tested to show correctness.
The comparison document is from 2019 and lives on a personal blog
The last substantive section of the file offers a comparison, and two details about it are worth knowing.
It compares the suite against MATLAB, R, Julia, Python, C, Mathematica, Maple, and Fortran. Eight tools, which is a serious comparison to attempt.
The document is a PDF hosted on a personal site, and the path of its web address carries the year 2019. The blog post about it sits on the same site. Neither is under SciML control, and neither is versioned with the package.
The gap that matters is arithmetic. The comparison describes the state of the suite in 2019. Version 8, with its breaking changes, was released in August 2026. So the document compares against a generation of solvers that is seven years and one major version behind the one you would install today.
That does not make it wrong, only dated, and a comparison written before the current major version is exactly the kind of document a reader takes too seriously. The README offers it without a date in the visible text, so nothing signals the age at the point of use.
The rest of the closing material is current: a stable documentation site, an in-development version for unreleased features, developer documentation, and a Zulip channel for questions.
A typo checker sits in the root and the last heading has nothing under it
The repository root is small and, for a package of this size, unusually tidy.
It holds `.gitattributes`, `.gitignore`, a `.typos.toml`, `CITATION.bib`, `LICENSE.md`, `NEWS.md`, `Project.toml`, `README.md`, and four directories: `assets/`, `benchmark/`, `src/`, and `test/`.
Three of those are worth a note.
`.typos.toml` is a configuration file for a spell checker. Its presence in the root means the project runs a typo check over its own text, which is the sort of small guard that keeps a README written by thirty contributors from drifting. The README in fact still contains a wording slip or two, so the checker is evidently not applied to prose the way it is to code.
`benchmark/` sits in the root, and the README separately points to SciMLBenchmarks.jl as where benchmarks can be found. So there are two benchmark locations, one in-tree and one outside it, and the file does not say which one is current.
And the last heading in the README is Example Images, with nothing beneath it. The `assets/` directory is presumably where those images live, but the section of the file that should point at them is empty.
The license is unrecorded, and there are two files asking you to cite the work
The license field for this repository is not recorded, while the tree contains `LICENSE.md`.
So the same situation as a few other packages in this ecosystem: a license file is present and the metadata is silent about it. The file does not say which terms apply, and this article does not guess.
What the repository does do, twice, is ask for attribution rather than for a license.
There is a `CITATION.bib` at the root and a Zenodo badge linking to a DOI, and a section titled Supporting and Citing says the software in this ecosystem was developed as part of academic research. It asks readers to star the repository if they would like to help support it, on the grounds that such metrics may help secure funding, and says that anyone using the software for research or teaching would be grateful if they could cite the work, with a link to a citation page for guidelines.
So the funding model is stated as stars and citations rather than as licences or contracts, which fits an academic research consortium and tells you something about who the intended users are.
The badges make the same picture concrete: a Zulip chat stream, coverage reporting, continuous integration, contribution practices, a style guide, and the Zenodo DOI.
Editorial conclusion
DifferentialEquations.jl suits a Julia user who wants one entry point across equation families rather than one package per problem type, and the switching argument is sound, since comparing methods is supposed to be a one-line change. Two things to plan for. Version 8 broke things and the migration notes are not in this repository, so budget time to find them and to read the downstream packages' own changelogs, because most of the capabilities on the list are maintained elsewhere. And the speed claims are asserted here with the benchmarks hosted in a separate repository, so judge the methods against your own problem rather than against the summary in this file.
Frequently asked questions
What does DifferentialEquations.jl cover?
Fourteen kinds of numerical equation: discrete function maps and Gillespie or Markov simulations, ODEs, split and partitioned ODEs for symplectic integrators and IMEX methods, stochastic ODEs and SDEs, stochastic DAEs, random differential equations, DAEs, delay differential equations, neutral, retarded and algebraic delay forms, stochastic delay equations, experimental stochastic neutral, retarded and algebraic delay equations, hybrid equations and jump diffusions, and partial differential equations with finite difference and finite element methods.
What changed in DifferentialEquations.jl v8?
The README states that version 8 had many breaking changes and points to a NEWS.md file in the SciML/OrdinaryDiffEq.jl repository for the complete migration story. The repository also carries its own NEWS.md at the root, and the README does not say how the two relate.
Which languages can DifferentialEquations.jl be used from?
The README describes it as a suite for numerically solving differential equations written in Julia and available for use in Julia, Python, and R. The repository itself is a Julia package with a Project.toml, and the Python and R routes are not described in this file.
Does DifferentialEquations.jl support GPU and arbitrary precision?
Yes. GPU acceleration comes through CUDA.jl and DiffEqGPU.jl, parallel ensemble simulations are described as automatic, distributed, multithreaded and GPU, and arbitrary precision arithmetic is supported with BigFloats and a second arbitrary-precision float library. Arbitrary array types, distributed arrays, and unit-checked arithmetic with Unitful are also listed.
Which analysis tools come with DifferentialEquations.jl?
Six: forward and adjoint sensitivity analysis through automatic differentiation, parameter estimation and Bayesian analysis, neural differential equations through DiffEqFlux.jl, automatic parallel ensemble simulations, global sensitivity analysis, and uncertainty quantification. Each is provided by a separate package rather than by code in this repository.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/sciml-differentialequations-jl)Star history chart for your README
[](https://hysenlabs.com/projects/sciml-differentialequations-jl)Was this useful?