April 22
https://issues.dlang.org/show_bug.cgi?id=24517

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #1 from Dlang Bot <dlang-bot@dlang.rocks> ---
@jmdavis created dlang/dmd pull request #16405 "Fix bugzilla issue 24517: druntime tests crash on FreeBSD 14" fixing this issue:

- Fix bugzilla issue 24517: druntime tests crash on FreeBSD 14

  FreeBSD 14 changed the signature of qsort_r to be POSIX-compliant with
  POSIX, making it so that our binding for it no longer matches, resulting
  in a crash when it's used.

  This implements a fix similar to what the FreeBSD headers do to avoid
  breaking code (they provide a static inline extern(C++) overload for the
  old signature). This provides a deprecated extern(D) overload for the
  old signature. The extern(C) overload now matches the new signature. The
  changes have been versioned so that they only affect FreeBSD 14 and
  newer.

  Technically, if someone used Cmp when declaring their function for
  qsort_r, this would still break them (though with a compilation error
  that should be easy to fix rather than silent breakage or a crash), but
  I don't really see a way around that, and Cmp is not part of the POSIX
  API, so no one would have a clue that it was a thing without digging
  through the bindings. Arguably, we should make it private, since it's
  not part of POSIX, but I haven't done anything with that in this commit.
  My guess is that in reality, no D programs are both written to use
  qsort_r and run on FreeBSD (outside of the druntime tests), but this
  way, they won't break unless they use Cmp to declare their comparator
  function. They'll just get a deprecation message that they should update
  their code.

  Regardless, we have to change the signature for FreeBSD 14 for it to
  work, and this does that.

https://github.com/dlang/dmd/pull/16405

--
April 22
https://issues.dlang.org/show_bug.cgi?id=24517

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Dlang Bot <dlang-bot@dlang.rocks> ---
dlang/dmd pull request #16405 "Fix bugzilla issue 24517: druntime tests crash on FreeBSD 14" was merged into master:

- df9a56d192579a92cffd237fb81707c65240ee46 by Jonathan M Davis:
  Fix bugzilla issue 24517: druntime tests crash on FreeBSD 14

  FreeBSD 14 changed the signature of qsort_r to be POSIX-compliant with
  POSIX, making it so that our binding for it no longer matches, resulting
  in a crash when it's used.

  This implements a fix similar to what the FreeBSD headers do to avoid
  breaking code (they provide a static inline extern(C++) overload for the
  old signature). This provides a deprecated extern(D) overload for the
  old signature. The extern(C) overload now matches the new signature. The
  changes have been versioned so that they only affect FreeBSD 14 and
  newer.

  Technically, if someone used Cmp when declaring their function for
  qsort_r, this would still break them (though with a compilation error
  that should be easy to fix rather than silent breakage or a crash), but
  I don't really see a way around that, and Cmp is not part of the POSIX
  API, so no one would have a clue that it was a thing without digging
  through the bindings. Arguably, we should make it private, since it's
  not part of POSIX, but I haven't done anything with that in this commit.
  My guess is that in reality, no D programs are both written to use
  qsort_r and run on FreeBSD (outside of the druntime tests), but this
  way, they won't break unless they use Cmp to declare their comparator
  function. They'll just get a deprecation message that they should update
  their code.

  Regardless, we have to change the signature for FreeBSD 14 for it to
  work, and this does that.

https://github.com/dlang/dmd/pull/16405

--