On Thursday, 25 May 2017 at 16:16:19 UTC, Patrick Schluter wrote:
On Thursday, 25 May 2017 at 14:36:43 UTC, Jonathan M Davis
wrote:
[...]
Could someone please explain why people talk always of ABI
compatibilty while what is described would imo better
classified as API compatibilty. ABI is the way parameter are
passed to functions i.e. which parameters go to which register
and is defined by the platform, while the API is the set of
signature of a library. I find it a bit disturbing that at each
release the ABI would change, while that is generally something
which is (should) be extremely stable.
The only time I have been confronted with an ABI (C) change
within a platform was in the transition from Solaris 9 to
Solaris 10 where the way structs were returned from functions
changed.
TL;DR is there a confusion between ABI and API or does the
calling conventions change at every release?
The calling convention is only one aspect of an ABI:
https://dlang.org/spec/abi.html
For example, David notes in that Debian thread that every time
attributes are added to druntime functions, their mangling
changes, ie the ABI changes.