Pre-RFC: target extension (dealing with breaking changes at OS level)

if I correctly understood the Status Update, the ABI compatibility isn't 100% guarantee for executable compiled for FreeBSD 11 and running on FreeBSD 12:

For instance, third-party APIs which pass struct stat around are broken in backward and forward-incompatible way. [...] Due to expansion of the basic types dev_t, ino_t and struct dirent, the impact is not limited to one part of the system, but affects:

  • kernel/userspace interface (syscalls ABI, mostly stat(2), kinfo and more)
  • libc interface (mostly related to the readdir(3), FTS(3))
  • collateral damage in other libraries that happens to use changed types in the interfaces. See, for instance, libprocstat, for which compat was provided using symbol versioning, and libutil, which shlib version was bumped.