El 01/09/2026 a las 3:26, Andrey Semashev via Boost escribió:
Note that symbols with default visibility may still be hidden with linker scripts. The scripts may be part of the user's build setup, so he would have to update the script to export the symbols. Which means, the symbols must be documented and not just an implementation detail.
Ok, understood, thanks!
Also, this new approach to process-wide globals requires that all TUs (including in different shared objects) are compiled against the same Boost with the same settings to maintain binary compatibility. With a compiled shared library, this was somewhat easier to do. I'm not sure if you're checking for ABI mismatch in the new implementation, but if not, I think you should, and there should be a reasonable behavior in case of ABI mismatch. Otherwise, ABI mismatch issues can be very difficult to debug, especially if some parts of the application are not written by the user (e.g. when he uses a third party library that he doesn't know how it was compiled and with what Boost version).
Good point. Only a size difference on the global is triggered as error on the Windows size, so it's probably a good idea to implement some additional ABI mismatch guarantees, both for the ELF and Windows approaches. Best, Ion