libprima / PRIMA.jl

a Julia interface to PRIMA, a Reference Implementation for Powell's methods with Modernization and Amelioration
MIT License
21 stars 5 forks source link

Upgrade to new C API of PRIMA #28

Open emmt opened 5 months ago

emmt commented 5 months ago

@zaikunzhang and @amontoison

I can see that the C interface has changed quite substancially since PRIMA_jll version 0.7.1 onto which the current JUlai interface is based. Maybe it is time to build a new PRIMA_jll version. To me, the new C API is not backward compatible so, according to semantic versionning rules, the highest non-zero version number shall change which yields at least 0.8.0 for PRIMA_jll.

In the mean time, I can push a new releas of PRIMA.jl since they have been several commited changes in this code.

What do you think?

amontoison commented 5 months ago

@emmt In general, we only compile a new JLL when the upstream package has a new release. As soon as an official version 0.8.0 of PRIMA is released, I will upgrade the artifact with Yggdrasil. The rule for artifacts (JLL) is to use the same number the package if we can. So it will be also 0.8.0 for PRIMA_jll.jl.

But I have something in mind before that the new version is released. My plan is to generate the updated PRIMA_jll.jl on my fork and setup a branch here such that we use it for CI (only for this specific branch). We can start to update PRIMA.jl and do the asociated modifications on this branch. It also gives the opportunity to check for some issues before the official release 0.8.0.

I was thinking of that since last month. I will setup that before the end of the week.

emmt commented 5 months ago

@amontoison I can see that the C API has already changed in libprima 0.7.2 while the last PRIMA_jll is for libprima 0.7.1 (unless the two version numbers are not synchromized). So why not publish now an official PRIMA_jll package for libprima 0.7.2? This would leave some time to finalize the 0.8.0 version.

amontoison commented 5 months ago

Because if we do that, we will break all releases of PRIMA.jl that were working with PRIMA_jll 0.7.1. We didn't set a strong constraint (like an =) on the version of PRIMA_jll.jl in the Project.toml: https://github.com/libprima/PRIMA.jl/blob/main/Project.toml So all version in.[0.7.1, 0.8.0[ can.be installed. We don't expect a breaking change in the C interface.

As soon as I merge the associated pull request in Yggdrasil, PRIMA_jll.jl 0.7.2 will be used by default by all users that have PRIMA.jl installed.

We need to update the General registry directly to add the constraint on the version number of PRIMA_jll.jl if we do that.

emmt commented 5 months ago

@amontoison

Because if we do that, we will break all releases of PRIMA.jl that were working with PRIMA_jll 0.7.1. We didn't set a strong constraint (like an =) on the version of PRIMA_jll.jl in the Project.toml: https://github.com/libprima/PRIMA.jl/blob/main/Project.toml So all version in.[0.7.1, 0.8.0[ can.be installed. We don't expect a breaking change in the C interface.

You're right, I didn't realize that!