On 2026-01-21 2:35 AM, Miro Hrončok wrote:
One thing that I'd like to get clarified: If this is released in the next expat version and we add the --enable-symvers configure flag, do we need to rebuild everything that links to libexpat, or not?


Standard SemVer semantics apply: Symbol versions is a backward-compatible feature, so library with the feature continues to support old binaries. Removing the feature is a breaking change, so a library without the feature will no longer support binaries that were built to support and require the feature.

The thing I want to add to the earlier replies is that under SemVer, some types of features raise the minimum version explicitly. If Python is built with expat 2.7.2, it detects features introduced in 2.7.2 and builds a binary that uses those features. It has opted-in to 2.7.2 as a minimum requirement. Some types of features, however, are implicit. For example, Qt includes a symbol named "qt_version_tag" and every minor release of Qt introduces a new version of that symbol. So every Qt executable implicitly requires the minor version of Qt that was present during its build, whether or not it has used any new APIs in that version.

The initial introduction of symbol versioning creates an implicit minimum. If libexpat were built with symvers in RHEL, for example, then any executable programs built *after* that point would require expat with versioned symbols. No one needs to manually add that information to packages, the existing rpm elfdeps will generate appropriate dependency expressions.

It's safe to do, but if it were done, then a system that had expat(post symbol versioning) and Python(post expat symbol versioning) could not downgrade expat, in the same way that a system that has expat(> 2.7.2) and Python(post expat-2.7.2) cannot downgrade expat to something older than 2.7.2.

That's true for expat and Python because Python's minimum is explicit, but it might not be true for other applications that link to expat if they don't use the APIs introduced in 2.7.2. But the initial introduction of versioned symbols would set a new minimum for *everything* that links to expat, because that is an implicit minimum.

--
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to