Skip to content

V2.7.2mod: dynamic loading for HSL + improved build#771

Open
jgillis wants to merge 8 commits into
cvanaret:mainfrom
jgillis:v2.7.2mod
Open

V2.7.2mod: dynamic loading for HSL + improved build#771
jgillis wants to merge 8 commits into
cvanaret:mainfrom
jgillis:v2.7.2mod

Conversation

@jgillis

@jgillis jgillis commented Jun 11, 2026

Copy link
Copy Markdown

Hi Charlie!

Finally found some time to get Uno into casadi..

I did some minor modifications to get it more in line with expected behavior from ipopt.
I'm happy to just roll with casadi-patches against your official releases, but you may also chose to merge some of this.

@cvanaret

Copy link
Copy Markdown
Owner

Hi Joris,
Thanks for the contribution! Great to see dynamic loading for the HSL solvers.
I will definitely add a reverse CI workflow to run Uno via CasADi, so that we know when changes break.

@amontoison could you have a look when you have a moment?

@amontoison

Copy link
Copy Markdown
Collaborator

Thanks @jgillis for the modifications and working on an interface for CasADi!

A few comments:

  • I am a big fan of the dynamic loader for HSL.
    For Julia, it is easy to do hot-swapping, so I precompile a dummy version of libHSL with the required symbols such that the
    linker is happy, and at runtime we call the routine LIBHSL_ISFUNCTIONAL() to check what is available. It works quite well when the
    user has access to the installation folder, because they can replace libhsl.$dlext on their own.
    So it's quite nice when the user downloads the precompiled artifacts from GitHub. Julia does that automatically too with HSL_jll.jl.
    But your approach is the best one if Uno is installed through some other way like PyPI, Homebrew, a Linux distribution, etc. We can't easily hot-swap the library.

  • For METIS, why are you not using -DAUXILIARY_LIBRARIES?
    It is dedicated to dependencies of dependencies for static builds.

  • For the header of SPRAL / SSIDS, Charlie made a modification to add a CMake variable but it never landed in main. Are these modifications enough for you?

@cvanaret cvanaret changed the title V2.7.2mod V2.7.2mod: dynamic loading for HSL + improved build Jun 12, 2026
@cvanaret

Copy link
Copy Markdown
Owner

The CMake variable SPRAL_INCLUDE_DIRis now available (see #779). I have updated the PR and simplified the CMake a bit.
As Alexis wrote, we can handle METIS via AUXILIARY_LIBRARIES. I'll do a proper read of the dynamic loader in the next few days.

@cvanaret

Copy link
Copy Markdown
Owner

Hi @jgillis, I have merged a separate PR (#792) to optionally build with OpenMP, and updated your branch.
I'm working on a paper review at the moment (due Thursday), so I'll have a look at the dynamic loader at the end of the week.

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.

3 participants