Release OrdinaryDiffEqCore 4.18.0 - #4590
Merged
Merged
Conversation
The despecialized callback paths call `DiffEqBase.find_first_continuous_callback(integrator, ::AbstractVector)` and `DiffEqBase.apply_discrete_callback!(integrator, ::AbstractVector)`, both added alongside them in #4376 and first released in DiffEqBase 7.21.2. The monorepo sources DiffEqBase from `lib/DiffEqBase`, so CI never resolves the floor: with 7.19-7.21.1 the callback is never erased and callback despecialization silently does nothing. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Agent-Harness: Claude Code 2.1.278 Agent-Model: claude-opus-5[1m] Agent-Session: https://claude.ai/code/session_01Wt79fZeNaZxiwQ3LagMYXH Claude-Session: https://claude.ai/code/session_01Wt79fZeNaZxiwQ3LagMYXH
Version bump only; no code changes in this commit. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Agent-Harness: Claude Code 2.1.278 Agent-Model: claude-opus-5[1m] Agent-Session: https://claude.ai/code/session_01Wt79fZeNaZxiwQ3LagMYXH Claude-Session: https://claude.ai/code/session_01Wt79fZeNaZxiwQ3LagMYXH
|
Comments on pull requests will not trigger Registrator, as it is disabled. Please try commenting on a commit or issue. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Do not merge yet — #4589 is a regression in one of the two commits this would release. Everything else is ready; the decision this PR needs is whether that finding blocks the release.
Bumps
OrdinaryDiffEqCore4.17.4 → 4.18.0 and raises itsDiffEqBasefloor to7.21.2.Why this release exists
OrdinaryDiffEqCorehas not been registered since 4.17.4 (2026-09-14). Two commits are unreleased inlib/OrdinaryDiffEqCore:#4376's DiffEqBase and DelayDiffEq halves are already out (DiffEqBase 7.21.2, DelayDiffEq 6.4.1), so
OrdinaryDiffEqCoreis the only package still holding callback despecialization back from the registry.Why minor rather than patch
#4376 changes what the integrator stores: at
AutoSpecialize,AutoDespecializeandNoSpecialize,integrator.opts.callbackbecomes vector-backed withFunctionWrappersWrapper-wrapped condition/affect functions rather than tuple-backed with the user's own closures. Anything reading those fields sees different types —lib/DelayDiffEq/src/solve.jlneeded a one-line update in the same commit — so a patch bump understates it.The compat floor, and why it is in this PR rather than its own
Core's new code calls two methods that exist only from DiffEqBase 7.21.2, both added by #4376's DiffEqBase half in
lib/DiffEqBase/src/callbacks.jl:DiffEqBase.find_first_continuous_callback(integrator, callbacks::AbstractVector)DiffEqBase.apply_discrete_callback!(integrator, callbacks::AbstractVector)The floor was
DiffEqBase = "7.19". The monorepo's[sources]points DiffEqBase atlib/DiffEqBase, so CI always resolves the in-tree copy and never exercises the floor.It does not error on an older DiffEqBase — the erasure itself happens in
DiffEqBase.get_concrete_problem, so the callback simply is never erased, the vector methods are never reached, and the feature silently does nothing. Registering 4.18.0 with the old floor would therefore publish a version whose headline feature is absent on any resolve that picks DiffEqBase < 7.21.2, which is why the floor raise cannot be split into a PR that merges afterwards.Measured on the same dev'd
OrdinaryDiffEqCore(this branch), changing only the registered DiffEqBase version.Tsit5,ODEProblem{true, AutoDespecialize}, compile seconds charged tosolveper newDiscreteCallbackclosure type:discrete_callbacksstorageaffect!type"7.19"floor)TupleArrayFunctionWrappersWrapperWhat the release delivers
Registered 4.17.4 versus this branch, compile seconds per new callback closure type, mean of closure types 2–6 (a fixed
f,u0,p,tspanandTsit5— only the callback type varies):FullSpecializeis unchanged, as intended.Verification
julia 1.12.6, aarch64-linux,--startup-file=no, this branch:GROUP=InterfaceII— passed.Despecialized Parameters92/92,AutoSparse Detection4/4,Get du34/34,Testing OrdinaryDiffEq tests passed.GROUP=Integrators_I— 7 failures, all intest/Integrators_I/ode_event_tests.jl(lines 166, 168, 171, 198, 200, 203, 398).Events Tests | 50 pass, 7 fail.The failures are not caused by this PR's two lines: they reproduce with an unmodified checkout at #4376's own merge commit, and disappear with the registered 4.17.4 in the same environment. Cause and a standalone reproducer are in #4589 — at
AutoSpecializethe wrapped condition moves the located event time by ~17 ULP (3.192754284070527 vs 3.1927542840705194), and those assertions compare event times exactly.Not verified: x86-64 —
Integrators_I (julia 1, ubuntu-latest)was green on #4376, so the event-time shift may be aarch64-only and I cannot check that here. No other test group was run locally; no downstream package (SciMLSensitivity, StochasticDiffEq, DiffEqCallbacks beyond whatIntegrators_Icovers) was tested against this branch.After merging
Registration is a commit comment on the merge commit, as for 4.17.4:
🤖 Posted by an AI agent — harness: Claude Code 2.1.278 · model: claude-opus-5[1m]
Conversation: https://claude.ai/code/session_01Wt79fZeNaZxiwQ3LagMYXH