How does this interact with packages that depend (strictly) on ign-math2 and use ignition math object in their headers, such as ign-msgs ?
If there is an ABI breakage between ign-math2 and ign-math3, ign-msgs functions would use ign-math2's ABI, while Gazebo would use ign-math3's ABI, with runtime errors when Gazebo is calling ign-msgs functions that use ignition::math objects.
I see risk here yes. I confirmed that we are exporting a lot of symbols present in both libigniton-math2.so and libignition-math3.so. In runtime, if we mix libraries and executable binaries linked against different major versions of the library, if I'm not wrong, the loader would load both (no conflict resolution in the loader) and use the symbols from the first one. As Silvio mentioned, if one of those symbols has changed (breaking the ABI) we could be in problems.