Skip to content

4.0.0 prerelease - #282

Open
mrmundt wants to merge 338 commits into
mainfrom
4.0.0-prerelease
Open

4.0.0 prerelease#282
mrmundt wants to merge 338 commits into
mainfrom
4.0.0-prerelease

Conversation

@mrmundt

@mrmundt mrmundt commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Fixes #274

Summary

This is probably as complete as we need it to be for the major release. There will always be room for improvement, we know this, but this is as good a save state as any!

Updates include...

  • Entirely updated toolchain (boost, PETSc, HSL, etc.)
  • HSL support for Mac Intel
  • NO Metis support for MacOS Apple Silicon due to compatibility issues
  • Builds for ubuntu 20.04, 22.04, 24.04, el8, el9, (x86_64 and aarch64), mac (x86_64 and arm64), and windows (x86_64 only)
  • Reorganized tarball layout to use a more standard bin/lib/share structure:
    • Old layout:
      • idaes-lib-*.tar.gz - various libraries and helm_data/.
        - idaes-solvers-*.tar.gz - various solver executables and libraries.
      • idaes-petsc-*.tar.gz - petsc executable and petscpy/.
    • New layout:
      • New idaes-functions-*.tar.gz tarball:
        • lib/ - libraries from idaes-lib-*
        • lib/helm_data/ - from idaes-lib-*
      • idaes-solvers-*.tar.gz now contains:
        • bin/ - solver and petsc executables (all executables)
        • lib/ - shared libraries from idaes-solvers-*, petscpy/, and (NEW) pkgconfig/
        • share/ - documentation
    • The separate idaes-lib-*.tar.gz and idaes-petsc-*.tar.gz tarballs are no longer produced;
      their contents have been folded into idaes-functions-*.tar.gz and idaes-solvers-*.tar.gz.
      The tarballs can be unpacked in one directory, causing the two separate lib folders to merge contents.
  • Release no longer includes ipopt_l1 and ipopt_sens_l1
  • Updated Dockerfiles and documentation
  • Updated build scripts
  • No longer make the hash_extensions something that has to come from IDAES because I don't get why that was done in the first place

New File Structure

$ tree ~/.idaes/
~/.idaes/
├── bin
│   ├── bonmin
│   ├── cbc
│   ├── clp
│   ├── couenne
│   ├── dot_sens
│   ├── ipopt
│   ├── ipopt_sens
│   ├── k_aug
│   └── petsc
├── idaes-functions-darwin-arm64.tar.gz
├── idaes-solvers-darwin-arm64.tar.gz
├── include
│   └── coin-or
│       ├── IpAlgBuilder.hpp
│       ├── IpAlgStrategy.hpp
│       ├── IpAlgTypes.hpp
│       ├── IpAugSystemSolver.hpp
│       ├── IpBlas.hpp
│       ├── IpCachedResults.hpp
│       ├── IpCompoundMatrix.hpp
│       ├── IpCompoundSymMatrix.hpp
│       ├── IpCompoundVector.hpp
│       ├── IpConvCheck.hpp
│       ├── IpDebug.hpp
│       ├── IpDenseVector.hpp
│       ├── IpDiagMatrix.hpp
│       ├── IpEqMultCalculator.hpp
│       ├── IpException.hpp
│       ├── IpExpansionMatrix.hpp
│       ├── IpGenTMatrix.hpp
│       ├── IpHessianUpdater.hpp
│       ├── IpIdentityMatrix.hpp
│       ├── IpIpoptAlg.hpp
│       ├── IpIpoptApplication.hpp
│       ├── IpIpoptCalculatedQuantities.hpp
│       ├── IpIpoptData.hpp
│       ├── IpIpoptNLP.hpp
│       ├── IpIterateInitializer.hpp
│       ├── IpIteratesVector.hpp
│       ├── IpIterationOutput.hpp
│       ├── IpJournalist.hpp
│       ├── IpLapack.hpp
│       ├── IpLibraryLoader.hpp
│       ├── IpLinearSolvers.h
│       ├── IpLineSearch.hpp
│       ├── IpMatrix.hpp
│       ├── IpMuUpdate.hpp
│       ├── IpNLP.hpp
│       ├── IpNLPScaling.hpp
│       ├── IpObserver.hpp
│       ├── IpoptConfig.h
│       ├── IpOptionsList.hpp
│       ├── IpOrigIpoptNLP.hpp
│       ├── IpPDSystemSolver.hpp
│       ├── IpReferenced.hpp
│       ├── IpRegOptions.hpp
│       ├── IpReturnCodes_inc.h
│       ├── IpReturnCodes.h
│       ├── IpReturnCodes.hpp
│       ├── IpReturnCodes.inc
│       ├── IpScaledMatrix.hpp
│       ├── IpSearchDirCalculator.hpp
│       ├── IpSlackBasedTSymScalingMethod.hpp
│       ├── IpSmartPtr.hpp
│       ├── IpSolveStatistics.hpp
│       ├── IpSparseSymLinearSolverInterface.hpp
│       ├── IpStdAugSystemSolver.hpp
│       ├── IpStdCInterface.h
│       ├── IpSumSymMatrix.hpp
│       ├── IpSymLinearSolver.hpp
│       ├── IpSymMatrix.hpp
│       ├── IpSymScaledMatrix.hpp
│       ├── IpSymTMatrix.hpp
│       ├── IpTaggedObject.hpp
│       ├── IpTimedTask.hpp
│       ├── IpTimingStatistics.hpp
│       ├── IpTNLP.hpp
│       ├── IpTNLPAdapter.hpp
│       ├── IpTNLPReducer.hpp
│       ├── IpTripletHelper.hpp
│       ├── IpTripletToCSRConverter.hpp
│       ├── IpTSymLinearSolver.hpp
│       ├── IpTSymScalingMethod.hpp
│       ├── IpTypes.h
│       ├── IpTypes.hpp
│       ├── IpUtils.hpp
│       ├── IpVector.hpp
│       ├── IpZeroSymMatrix.hpp
│       ├── SensAlgorithm.hpp
│       ├── SensApplication.hpp
│       ├── SensBacksolver.hpp
│       ├── SensMeasurement.hpp
│       ├── SensPCalculator.hpp
│       ├── SensRegOp.hpp
│       ├── SensSchurData.hpp
│       ├── SensSchurDriver.hpp
│       ├── SensSimpleBacksolver.hpp
│       ├── SensStepCalc.hpp
│       └── SensUtils.hpp
├── lib
│   ├── cubic_roots.dylib
│   ├── functions.dylib
│   ├── general_helmholtz_external.dylib
│   ├── helm_data
│   │   ├── co2_expressions_eos.nl
│   │   ├── co2_expressions_st.nl
│   │   ├── co2_expressions_tcx.nl
│   │   ├── co2_expressions_visc.nl
│   │   ├── co2_parameters.json
│   │   ├── co2.json
│   │   ├── co2.py
│   │   ├── h2o_expressions_eos.nl
│   │   ├── h2o_expressions_st.nl
│   │   ├── h2o_expressions_tcx.nl
│   │   ├── h2o_expressions_visc.nl
│   │   ├── h2o_parameters.json
│   │   ├── h2o.json
│   │   ├── h2o.py
│   │   ├── helmholtz_parameters.py
│   │   ├── r1234ze_expressions_eos.nl
│   │   ├── r1234ze_expressions_st.nl
│   │   ├── r1234ze_expressions_tcx.nl
│   │   ├── r1234ze_expressions_visc.nl
│   │   ├── r1234ze_parameters.json
│   │   ├── r1234ze.json
│   │   ├── r1234ze.py
│   │   ├── r125_expressions_eos.nl
│   │   ├── r125_expressions_st.nl
│   │   ├── r125_parameters.json
│   │   ├── r125.json
│   │   ├── r125.py
│   │   ├── r134a_expressions_eos.nl
│   │   ├── r134a_expressions_st.nl
│   │   ├── r134a_expressions_tcx.nl
│   │   ├── r134a_expressions_visc.nl
│   │   ├── r134a_parameters.json
│   │   ├── r134a.json
│   │   ├── r134a.py
│   │   ├── r227ea_expressions_eos.nl
│   │   ├── r227ea_expressions_st.nl
│   │   ├── r227ea_parameters.json
│   │   ├── r227ea.json
│   │   ├── r227ea.py
│   │   ├── r32_expressions_eos.nl
│   │   ├── r32_expressions_st.nl
│   │   ├── r32_parameters.json
│   │   ├── r32.json
│   │   └── r32.py
│   ├── libgcc_s.1.1.dylib
│   ├── libgfortran.5.dylib
│   ├── libgomp.1.dylib
│   ├── libipopt.3.dylib
│   ├── libipopt.dylib -> libipopt.3.dylib
│   ├── libipopt.la
│   ├── libpynumero_ASL.dylib
│   ├── libpynumero_ASL.tbd
│   ├── libquadmath.0.dylib
│   ├── libsipopt.3.dylib
│   ├── libsipopt.dylib -> libsipopt.3.dylib
│   ├── libsipopt.la
│   ├── libstdc++.6.dylib
│   ├── petscpy
│   │   ├── petsc_conf.json
│   │   ├── petsc_conf.py
│   │   ├── PetscBinaryIO.py
│   │   └── PetscBinaryIOTrajectory.py
│   └── pkgconfig
│       └── ipopt.pc
├── LICENSE_FUNCTIONS.md
├── LICENSE.md
├── sha256sum_4.0.0rc2.txt
├── share
│   └── doc
│       └── ipopt
│           ├── AUTHORS
│           ├── ChangeLog.md
│           ├── LICENSE
│           └── README.md
├── testing
├── VERSION_FUNCTIONS.md
└── VERSION_SOLVERS.md

12 directories, 171 files

For comparison... This was the old file structure:

$ tree ~/.idaes/
~/.idaes/
├── bin
│   ├── bonmin
│   ├── cbc
│   ├── clp
│   ├── couenne
│   ├── cubic_roots.dylib
│   ├── dot_sens
│   ├── functions.dylib
│   ├── general_helmholtz_external.dylib
│   ├── helm_data
│   │   ├── co2_expressions_eos.nl
│   │   ├── co2_expressions_st.nl
│   │   ├── co2_expressions_tcx.nl
│   │   ├── co2_expressions_visc.nl
│   │   ├── co2_parameters.json
│   │   ├── co2.json
│   │   ├── co2.py
│   │   ├── h2o_expressions_eos.nl
│   │   ├── h2o_expressions_st.nl
│   │   ├── h2o_expressions_tcx.nl
│   │   ├── h2o_expressions_visc.nl
│   │   ├── h2o_parameters.json
│   │   ├── h2o.json
│   │   ├── h2o.py
│   │   ├── helmholtz_parameters.py
│   │   ├── r1234ze_expressions_eos.nl
│   │   ├── r1234ze_expressions_st.nl
│   │   ├── r1234ze_expressions_tcx.nl
│   │   ├── r1234ze_expressions_visc.nl
│   │   ├── r1234ze_parameters.json
│   │   ├── r1234ze.json
│   │   ├── r1234ze.py
│   │   ├── r125_expressions_eos.nl
│   │   ├── r125_expressions_st.nl
│   │   ├── r125_parameters.json
│   │   ├── r125.json
│   │   ├── r125.py
│   │   ├── r134a_expressions_eos.nl
│   │   ├── r134a_expressions_st.nl
│   │   ├── r134a_expressions_tcx.nl
│   │   ├── r134a_expressions_visc.nl
│   │   ├── r134a_parameters.json
│   │   ├── r134a.json
│   │   ├── r134a.py
│   │   ├── r227ea_expressions_eos.nl
│   │   ├── r227ea_expressions_st.nl
│   │   ├── r227ea_parameters.json
│   │   ├── r227ea.json
│   │   ├── r227ea.py
│   │   ├── r32_expressions_eos.nl
│   │   ├── r32_expressions_st.nl
│   │   ├── r32_parameters.json
│   │   ├── r32.json
│   │   └── r32.py
│   ├── idaes-lib-darwin-aarch64.tar.gz
│   ├── idaes-local-darwin-arm64.tar.gz
│   ├── idaes-solvers-darwin-aarch64.tar.gz
│   ├── ipopt
│   ├── ipopt_l1
│   ├── ipopt_sens
│   ├── ipopt_sens_l1
│   ├── k_aug
│   ├── libgcc_s.1.1.dylib
│   ├── libgfortran.5.dylib
│   ├── libgomp.1.dylib
│   ├── libipopt.3.dylib
│   ├── libipopt.dylib
│   ├── libpynumero_ASL.dylib
│   ├── libquadmath.0.dylib
│   ├── libsipopt.3.dylib
│   ├── libsipopt.dylib
│   ├── libstdc++.6.dylib
│   ├── license_lib.txt
│   ├── license.txt
│   ├── sha256sum_3.4.2.txt
│   ├── version_lib.txt
│   └── version_solvers.txt
└── testing

4 directories, 75 files

@ksbeattie

Copy link
Copy Markdown
Member

I presume this is waiting for IDAES/idaes-pse#1768, correct?

@mrmundt

mrmundt commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Directly linked to #274

@ksbeattie

Copy link
Copy Markdown
Member

Wating on funding

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Priority:High High Priority Issue or PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PEP] Binary Release Process - Update Notes

3 participants