- Package:
- nlohmann-json3-dev
- Source:
- nlohmann-json3-dev
- Submitter:
- Bill Allombert
- Date:
- 2025-09-02 19:37:04 UTC
- Severity:
- normal
Package: nlohmann-json3-dev Version: 3.12.0 Severity: important Dear Gianfranco and Hubert, 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. 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. Cheers,
reassign 1106446 nlohmann-json3-dev reassign 1106447 nlohmann-json3-dev reassign 1106448 nlohmann-json3-dev quit Dear Gianfranco and Hubert, I am reassigning the FTBFS to nlohmann-json3-dev. The FTBFS need to be fixed by a new version of nlohmann-json3-dev that restore the ABI, not by breaking the ABI of the Xeus packages, see #1106511. At this point of the freeze there is no purpose uploading new xeus packages to bump the Xeus ABI. Thanks for your understanding, Cheers,
Hi, I'm just adding my two cents here because I happened to come across this issue. 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. 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