Skip to content

Update Julia Solver Dependencies and NLR API Key Environment Variables - #731

Merged
Bill-Becker merged 10 commits into
masterfrom
update-julia-deps-aug26
Aug 26, 2026
Merged

Bill-Becker merged 10 commits into
masterfrom
update-julia-deps-aug26

Conversation

@Bill-Becker

@Bill-Becker Bill-Becker commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Equivalent PR that was approved here (which I merged and then reverted, so same):

This pull request makes two unrelated updates:

  1. Upgrades several dependencies in the Julia environment (julia_src folder) for the optimization solver stack (HiGHS, JuMP, MathOptInterface). We had found peculiar optimization results for a scenario with tiered rates where it was solving with a negative NPV of larger magnitude than the tolerance. The solver stack upgrade fixed it. It also removes some unused dependencies.
  2. Environment variable names related to the NREL/NLR developer API key and email. The changes help align the API codebase with new naming conventions of REopt.jl API key environment variable names.

Environment variable renaming:

  • Changed all references of NREL_DEVELOPER_API_KEY and NREL_DEVELOPER_EMAIL to NLR_DEVELOPER_API_KEY and NLR_DEVELOPER_EMAIL in the julia_src dirctory .env file and http.jl which uses that. This affects how API keys and emails are loaded and set for requests. [1] [2] [3] [4]

Dependency updates and removals:

  • Upgraded key dependencies in Manifest.toml, including HiGHS (from 1.15.0 to 1.24.1), HiGHS_jll, JuMP (from 1.25.0 to 1.31.1), and MathOptInterface (from 1.39.0 to 1.52.0), and added new dependencies such as MathOptIIS. [1] [2] [3]
  • Removed unused dependencies: BenchmarkTools, JSON3, Profile, and StructTypes from Manifest.toml, cleaning up the dependency tree. [1] [2] [3] [4]

Reopened from #729, which was merged prematurely. The merge commit was rolled back off master and release v3.22.2 was removed so this can be validated on staging first.

wbecker and others added 4 commits August 25, 2026 09:33
Running `Pkg.update()` in julia_src failed to precompile with:

    could not load library ".../libproj.so"
    libsqlite3.so.0: cannot open shared object file

Root cause is a SONAME break in SQLite_jll, not a version-resolution
problem. PROJ_jll 900.100.0 records `DT_NEEDED libsqlite3.so.0`, but:

    SQLite_jll 3.48.0 -> SONAME libsqlite3.so.0        (works)
    SQLite_jll 3.51.2 -> SONAME libsqlite3.so.3.51.2   (breaks)
    SQLite_jll 3.53.2 -> SONAME libsqlite3.so.3.53.2   (breaks)

Both artifacts install valid symlinks on disk, so the failure is only
visible via `readelf -d`. Julia's resolver cannot catch this because JLL
compat bounds track package versions, not sonames, and PROJ_jll itself
never changed version.

Adds SQLite_jll as a direct dependency so a `[compat]` bound applies
(compat entries are ignored for indirect deps), pinned to "~3.48",
mirroring the existing PROJ_jll pin.

With the pin in place `Pkg.update()` completes with 0 errors. Notable
bumps: Cbc 1.2.0 -> 1.3.0, HTTP 1.10.16 -> 1.11.0, JuMP 1.31.1 -> 1.31.2,
MathOptInterface 1.52.0 -> 1.53.0, MutableArithmetics 1.6.4 -> 1.8.0,
SCIP 0.12.3 -> 0.12.8, Xpress 0.17.1 -> 0.18.2, GDAL_jll 300.500.101 ->
300.500.200, plus transitive updates.

HiGHS 1.24.1 / HiGHS_jll 1.15.1 are unchanged by this update, so it has
no effect on the analytic-centre solve-time regression tracked separately.

Verified: precompile clean, runtime module load, a HiGHS solve, julia
container /health returns 200, and reoptjl tests pass.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Since the solver upgrades may affect the model solve time and results, bumping minor version instead of just patch
@Bill-Becker
Bill-Becker merged commit a4e8d44 into master Aug 26, 2026
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