Hi,

I'm just adding my two cents here because I happened to come across this issue.

On Sun, 25 May 2025 12:26:21 +0200 Bill Allombert <[email protected]> wrote:
nlohmann-json3-dev 3.12 is breaking xeus ABI in a way that cannot be fixed because nlohmann-json3-dev hardcode the version in type names which appear as function argument of C++ symbols in the library.
nlohmann-json3 upstream messed up their ABI versioning: by encoding the *API* version in the inline namespace, they effectively do an *ABI* bump with each release, because the exported symbol names will always change.

The correct approach would have been an independently versioned inline namespace that gets bumped exactly like you would bump a library SONAME.
Since upstream is unwilling to address the ABI problem, see <https://github.com/jupyter-xeus/xeus/issues/381>, I offer the following path forward.

For each upstream version $VER of nlohmann-json a new source package "nlohmann-json$VER" and a new binary "nlohmann-json$VER-dev" is added to Debian.

When Xeus upstream bump the ABI, we also move xeus to the latest nlohmann-json$VER-dev version so older ones can be removed from Debian.

I would suggest you start by uploading nlohmann-json3.12.0 and reuploading 3.11.3 as nlohmann-json3-dev version 3.12.0_really_3.11.3 to allow xeus to build correctly with the right ABI.
It would be nice if upstram could be convinced of a more reasonable versioning scheme for their ABI namespace. Failing that, this probably as good a solution as it gets.


Cheers
Timo

--
⢀⣴⠾⠻⢶⣦⠀   ╭────────────────────────────────────────────────────╮
⣾⠁⢠⠒⠀⣿⡁   │ Timo Röhling                                       │
⢿⡄⠘⠷⠚⠋⠀   │ 9B03 EBB9 8300 DF97 C2B1  23BF CC8C 6BDD 1403 F4CA │
⠈⠳⣄⠀⠀⠀⠀   ╰────────────────────────────────────────────────────╯

Attachment: signature.asc
Description: PGP signature

Reply via email to