Skip to content

Make EnzymeCore.jl a strong dependency of OrdinaryDiffEqCore.jl#3032

Merged
ChrisRackauckas merged 1 commit intoSciML:masterfrom
JoshuaLampert:enzymecore-dep
Feb 4, 2026
Merged

Make EnzymeCore.jl a strong dependency of OrdinaryDiffEqCore.jl#3032
ChrisRackauckas merged 1 commit intoSciML:masterfrom
JoshuaLampert:enzymecore-dep

Conversation

@JoshuaLampert
Copy link
Contributor

@JoshuaLampert JoshuaLampert commented Feb 3, 2026

Checklist

  • Appropriate tests were added
  • Any code changes were done in a way that does not break public API
  • All documentation related to code changes were updated
  • The new code follows the
    contributor guidelines, in particular the SciML Style Guide and
    COLPRAC.
  • Any new documentation only uses public API

Additional context

This fixes #3025 and closes #3031. As noted by @devmotion (edit: #3031 (comment)), it does not make sense to make EnzymeCore.jl only a weak dependency of OrdinaryDiffEqCore.jl because OrdinaryDiffEqCore.jl depends on EnzymeCore.jl via DiffEqBase.jl. I verified locally that this also fixes the circular dependency issue on Julia v1.10.

@ChrisRackauckas
Copy link
Member

because OrdinaryDiffEqCore.jl depends on EnzymeCore.jl via DiffEqBase.jl

It does not.

@JoshuaLampert
Copy link
Contributor Author

because OrdinaryDiffEqCore.jl depends on EnzymeCore.jl via DiffEqBase.jl

It does not.

But how do you explain that:

(jl_trc7s7) pkg> why EnzymeCore
  OrdinaryDiffEqCore  DiffEqBase  BracketingNonlinearSolve  NonlinearSolveBase  EnzymeCore

(jl_trc7s7) pkg> st
Status `/tmp/jl_trc7s7/Project.toml`
  [bbf590c4] OrdinaryDiffEqCore v3.4.0

(jl_trc7s7) pkg> st -m
Status `/tmp/jl_trc7s7/Manifest.toml`
  [47edcb42] ADTypes v1.21.0
  [7d9f7c33] Accessors v0.1.43
  [79e6a3ab] Adapt v4.4.0
  [4fba245c] ArrayInterface v7.22.0
  [62783981] BitTwiddlingConvenienceFunctions v0.1.6
  [70df07ce] BracketingNonlinearSolve v1.6.2
  [2a0fbf3d] CPUSummary v0.2.7
  [fb6a15b2] CloseOpenIntervals v0.1.13
  [38540f10] CommonSolve v0.2.6
  [f70d9fcc] CommonWorldInvalidations v1.0.0
  [34da2185] Compat v4.18.1
  [a33af91c] CompositionsBase v0.1.2
  [2569d6c7] ConcreteStructs v0.2.3
  [187b0558] ConstructionBase v1.6.0
  [adafc99b] CpuId v0.3.1
  [864edb3b] DataStructures v0.19.3
  [2b5f629d] DiffEqBase v6.200.0
  [a0c0ee7d] DifferentiationInterface v0.7.16
  [ffbed154] DocStringExtensions v0.9.5
  [4e289a0a] EnumX v1.0.6
  [f151be2c] EnzymeCore v0.8.18
  [e2ba6199] ExprTools v0.1.10
  [55351af7] ExproniconLite v0.10.14
  [7034ab61] FastBroadcast v0.3.5
  [9aa1b823] FastClosures v0.3.2
  [a4df4552] FastPower v1.3.1
  [1a297f60] FillArrays v1.16.0
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v0.1.3
  [46192b85] GPUArraysCore v0.2.0
  [615f187c] IfElse v0.1.1
  [3587e190] InverseFunctions v0.1.17
  [82899510] IteratorInterfaceExtensions v1.0.0
  [ae98c720] Jieko v0.2.1
  [10f19ff3] LayoutPointers v0.1.17
  [e6f89c97] LoggingExtras v1.2.0
  [1914dd2f] MacroTools v0.5.16
  [d125e4d3] ManualMemory v0.1.8
  [bb5d69b7] MaybeInplace v0.1.4
  [2e0e35c7] Moshi v0.3.7
  [46d2c3a1] MuladdMacro v0.2.4
  [be0214bd] NonlinearSolveBase v2.11.2
  [bac558e1] OrderedCollections v1.8.1
  [bbf590c4] OrdinaryDiffEqCore v3.4.0
  [f517fe37] Polyester v0.7.18
  [1d0040c9] PolyesterWeave v0.2.2
  [d236fae5] PreallocationTools v1.1.2
  [aea7be01] PrecompileTools v1.3.3
  [21216c6a] Preferences v1.5.1
  [3cdcf5f2] RecipesBase v1.3.4
  [731186ca] RecursiveArrayTools v3.47.0
  [189a3867] Reexport v1.2.2
  [ae029012] Requires v1.3.1
  [7e49a35a] RuntimeGeneratedFunctions v0.5.17
  [94e857df] SIMDTypes v0.1.0
  [0bca4576] SciMLBase v2.136.0
  [19f34311] SciMLJacobianOperators v0.1.12
  [a6db7da4] SciMLLogging v1.8.0
  [c0aeaf25] SciMLOperators v1.15.1
  [431bcebd] SciMLPublic v1.0.1
  [53ae85a6] SciMLStructures v1.10.0
  [efcf1570] Setfield v1.1.2
  [aedffcd0] Static v1.3.1
  [0d7ed370] StaticArrayInterface v1.8.0
  [1e83bf80] StaticArraysCore v1.4.4
  [10745b16] Statistics v1.11.1
  [7792a7ef] StrideArraysCore v0.5.8
  [2efcf032] SymbolicIndexingInterface v0.3.46
  [8290d209] ThreadingUtilities v0.5.5
  [a759f4b9] TimerOutputs v0.5.29
  [781d530d] TruncatedStacktraces v1.4.0
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.12.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [de0858da] Printf v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [6462fe0b] Sockets v1.11.0
  [f489334b] StyledStrings v1.11.0
  [fa267f1f] TOML v1.0.3
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.3.0+1
  [4536629a] OpenBLAS_jll v0.3.29+0
  [8e850b90] libblastrampoline_jll v5.15.0+0

@ChrisRackauckas
Copy link
Member

Okay then say it's NonlinearSolveBase 😅

@wsmoses is there a way to do https://github.com/SciML/NonlinearSolve.jl/blob/ed96792bf00e5d42c7a01ea7da676d78ea37489a/lib/NonlinearSolveBase/src/autodiff.jl#L7-L17 without the dep?

@ChrisRackauckas ChrisRackauckas merged commit 6d15d48 into SciML:master Feb 4, 2026
506 of 549 checks passed
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.

Circular dependency in OrdinaryDiffEqCore.jl on Julia v1.10

3 participants