Repository navigation
fix(#882): stop recommending using ExaModels, add export-collision canary - #892
Merged
Merged
Conversation
…canary ExaModels 0.12 newly exports `objective` and `constraint`; OptimalControl exports both as accessors. A user who writes `using ExaModels` next to `using OptimalControl` then hits `UndefVarError` on the next `objective(sol)`. The docs fix already landed in e22fc00 — `:exa` needs no `using ExaModels` at all. This adds a regression canary so the next colliding upstream export lands as a red test rather than a user bug report. Also finalises the changelog: `[2.1.0-beta]` is dated (the GitHub release of 2026-07-30, no longer "unreleased"), and a new `[2.2.0-beta]` entry covers the #884 dependency realignment (CTBase 0.29 / CTModels 0.18 / CTSolvers 0.5 / CTFlows 0.17 / CTParser 0.9 / CTLie 0.2 / ExaModels 0.12) and the docs-site rewrite. `BREAKING.md` gets a non-breaking note for the `using ExaModels` clash. Project version bumped to 2.2.0-beta. Full suite: 2243 pass, 2 broken (the deliberate @test_skip GPU sites, #883). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Closes #882.
Context
ExaModels 0.12 (pulled in by the #884 compat realignment) newly exports
objectiveandconstraintas oracle builders. OptimalControl exports both names as accessors. A user who writes a bareusing ExaModelsnext tousing OptimalControl— as two doc pages used to instruct — then getsUndefVarErroron the nextobjective(sol), the ambiguity Julia refuses to resolve.The
using ExaModelsis not even needed:src/imports/examodels.jlalready does@reexport import ExaModels: ExaModelsand ExaModels is a hard[deps]entry, so:exasolves fine fromusing OptimalControlalone.What this PR does
The documentation fix already landed in
e22fc006(docs/src/solve/gpu.md,docs/src/getting-started/installation.mdno longer import ExaModels, andgpu.mdexplains the clash). What remained:test/suite/reexport/test_examodels.jl: pinsintersect(names(ExaModels), names(OptimalControl)), filtered to genuine binding clashes, to[:constraint, :objective]. The next upstream export that collides now lands as a red test rather than a user bug report (issue's proposed fix fix range #3).:ExaModels(same module object) is excluded automatically.[2.1.0-beta]dated2026-07-30(it is the GitHub release, not "unreleased"); its dependency line is left as what that tag actually shipped.[2.2.0-beta] — 2026-08-28entry covering the chore(deps): realign on the released ecosystem #884 dependency realignment (CTBase 0.29 / CTModels 0.18 / CTSolvers 0.5 / CTFlows 0.17 / CTParser 0.9 / CTLie 0.2 / ExaModels 0.12) and the documentation-site rewrite.[2.1.0-beta]/[2.2.0-beta]compare-links added to the footer.BREAKING.md:## Non-breaking note (2.2.0-beta)—using ExaModelsclash,Before/Afterblock, cross-ref to CTParser#230.Project.toml:version = "2.2.0-beta".Not in scope
objective/constraintexports — owning them as thin wrappers (the disabledsrc/imports/redefine.jl) would not fix the clash: Julia still sees two packages exporting the name.docs/make.jl:20(using ExaModels, feedsnames(ExaModels)only) left as-is.Verification
suite/reexportgreen —test_examodels.jlnow 4 passes (was 3).@test_skipGPU sites, GPU device loss fails loudly in one test file and silently in the other #883).[:constraint, :objective], matching the issue.🤖 Generated with Claude Code