On 4/20/23 19:18, Jessica Clarke wrote:
On 20 Apr 2023, at 18:17, Hans Petter Selasky <[email protected]> wrote:

The branch main has been updated by hselasky:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=bb8e8e230d94c9522bd9ff95c13dc9f5b1592929

commit bb8e8e230d94c9522bd9ff95c13dc9f5b1592929
Author:     Hans Petter Selasky <[email protected]>
AuthorDate: 2023-04-20 16:50:32 +0000
Commit:     Hans Petter Selasky <[email protected]>
CommitDate: 2023-04-20 17:16:14 +0000

    Revert "libc: Implement bsort(3) a bitonic type of sorting algorithm."

    Some points for the future:
     - libc is not the right place for sorting algorithms.
       Probably libutil is better suited for this purpose or
       a dedicated libsort. Should move all sorting algorithms
       away from libc eventually.

qsort is part of ISO C, so no.

Hi Jessica,

I know, and maybe it shouldn't be part of ISO C in the future.

     - CheriBSD uses capabilities for memory access, and could
       benefit from a standard memswap() function.
     - Do something about qsort() in FreeBSD's libc like:
       - Mark it deprecated on FreeBSD, as a first step,
         due to missing limits on CPU time.

Nobody’s saying that, quite the opposite. It’s in ISO C.

https://en.cppreference.com/w/c/algorithm/qsort

Quote:

"Despite the name, neither C nor POSIX standards require this function to be implemented using quicksort or make any complexity or stability guarantees."

This is the definition of chaos. ISO C says qsort() may be just anything? How can programmers rely on this?


       - Audit the use of qsort() in the FreeBSD base system
         and consider swapping to other existing sorting
         algorithms.

No. We’re saying to make the implementation better.

Someone interested needs to drive it. And it needs to be agreed what qsort() should really do - why not just call heapsort()? We are still in compliance with ISO C by doing that.

Anyway, my time budget on sorting problems is far exceeded, and I would like to suggest a general warning flag __may_be_slow, as appropriate for qsort(). Isn't that just what ISO C says about qsort() ?

I've put up a review here for you all:

https://reviews.freebsd.org/D39723

--HPS

Reply via email to