Skip to content

Restore OrdinaryDiffEqNonlinearSolve solver-author public API#3946

Closed
singhharsh1708 wants to merge 1 commit into
SciML:masterfrom
singhharsh1708:restore-nonlinearsolve-public-api
Closed

Restore OrdinaryDiffEqNonlinearSolve solver-author public API#3946
singhharsh1708 wants to merge 1 commit into
SciML:masterfrom
singhharsh1708:restore-nonlinearsolve-public-api

Conversation

@singhharsh1708

Copy link
Copy Markdown
Contributor

Bug

#3832 ("Split public and developer API docs") removed most of OrdinaryDiffEqNonlinearSolve's public block, keeping only the three algorithm types (NLNewton, NLFunctional, NLAnderson, plus HomotopyNonlinearSolveAlg added later). But the solver-author extension API it dropped — build_nlsolver, nlsolve!, nlsolvefail, compute_step!, initial_η, markfirststage!, du_alias_or_new, anderson, anderson! — is still directly imported by every downstream solver sublibrary that implements an implicit method: OrdinaryDiffEqPDIRK, OrdinaryDiffEqStabilizedIRK, OrdinaryDiffEqIMEXMultistep, OrdinaryDiffEqFIRK, DelayDiffEq, StochasticDiffEqImplicit, StochasticDiffEqLeaping. Their all_explicit_imports_are_public QA check fails on every one of them as a result.

Fix

Restore exactly the set #3832 removed (confirmed via git blame on e1db9b0), plus the type.jl docstring cross-reference to anderson/anderson! it also stripped. HomotopyNonlinearSolveAlg, added after #3832 in #3876, is untouched.

Scope note

This is a different owning package from #3940 (which restores OrdinaryDiffEqDifferentiation's block) — not a duplicate. No open PR currently covers this piece; the two prior attempts at the full set (#3872, #3874) were closed without merging.

Verification

  • ExplicitImports.check_all_explicit_imports_are_public(OrdinaryDiffEqPDIRK) on Julia 1.12.6 (matching CI): all names from this restoration (build_nlsolver, markfirststage!, nlsolve!, nlsolvefail, du_alias_or_new) no longer flagged. The one remaining flag (_unwrap_val, owned by SciMLBase) is unrelated to this change.
  • Checked every downstream consumer's qa.jl for these 9 names in an ignore/ei_broken list — none has one, so restoring them can't flip anything to an unexpected-pass failure.
  • Package loads and a basic TRBDF2() solve succeeds (Success retcode) against a full local dev-path checkout.
  • A public declaration cannot change runtime dispatch or behavior — it is visibility/tooling-only — so this carries no runtime regression risk by construction.
  • Runic clean.

AI Disclosure

Claude assisted with this work.

SciML#3832 dropped build_nlsolver, nlsolve!, nlsolvefail, compute_step!,
initial_η, markfirststage!, du_alias_or_new, anderson, anderson!
from the public block, keeping only the three algorithm types.
Downstream solver sublibraries (PDIRK, StabilizedIRK, IMEXMultistep,
FIRK, DelayDiffEq, StochasticDiffEqImplicit/Leaping) still import
these names directly, so their all_explicit_imports_are_public QA
check fails on every one of them.

Restores exactly the removed set (git blame e1db9b0, "Split public
and developer API docs") plus the type.jl docstring cross-reference
it also dropped. HomotopyNonlinearSolveAlg, added after SciML#3832,
is unaffected and stays in the block.

No open PR currently covers this piece: SciML#3940 restores
OrdinaryDiffEqDifferentiation's public block (a different owner),
and the two prior attempts at the full set (SciML#3872, SciML#3874) were
closed without merging.
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.

1 participant