Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Oct 2022 11:16:22 -0700
From:      Xin LI <delphij@gmail.com>
To:        Alexey Dokuchaev <danfe@freebsd.org>
Cc:        Xin LI <delphij@freebsd.org>, src-committers@freebsd.org,  dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: af3c78886fd8 - main - Alter the prototype of qsort_r(3) to match POSIX, which adopted the glibc-based interface.
Message-ID:  <CAGMYy3sFJuNO3ebEGOsuOqruTMV9AUGrKZeEjBr%2Bu=vUbLjd8Q@mail.gmail.com>
In-Reply-To: <Y0AlrfmliBbu/t73@FreeBSD.org>
References:  <202209302230.28UMUq4I029171@gitrepo.freebsd.org> <Y0AlrfmliBbu/t73@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Fri, Oct 7, 2022 at 6:12 AM Alexey Dokuchaev <danfe@freebsd.org> wrote:

> On Fri, Sep 30, 2022 at 10:30:52PM +0000, Xin LI wrote:
> > commit af3c78886fd8d4ca5eebdbe581a459a6f6d29d6a
> >
> >   Alter the prototype of qsort_r(3) to match POSIX, which adopted the
> >   glibc-based interface.
> >
> >   Unfortunately, the glibc maintainers, despite knowing the existence
> >   of the FreeBSD qsort_r(3) interface in 2004 and refused to add the
> >   same interface to glibc based on grounds of the lack of standardization
> >   and portability concerns, has decided it was a good idea to introduce
> >   their own qsort_r(3) interface in 2007 as a GNU extension with a
> >   slightly different and incompatible interface.
> >
> >   With the adoption of their interface as POSIX standard, let's switch
> >   to the same prototype, there is no need to remain incompatible.
>
> What a sad story, and so unfair to FreeBSD as we now have to deal with
> compatibility hacks (as mandree@ had said, having to parenthesize a
> function name is an abomination).  Can you elaborate on technical side of
> things a bit?  Is GNU qsort_r(3) interface, while incompatible, better
>

They only have to parenthesize when they are utilizing C language features
to accomplish a special goal (e.g. to detect if the prototype matches
exactly in a configure script) which have a better alternative (by enabling
strict type checks), or are doing something wrong (e.g. not including the
correct header file).

No normal usages of qsort_r(3) required parenthesize, unless they are
already broken.


> than ours in 1-to-1 comparison, leaving the grief of not going with our
> older one aside?  Thanks,
>

It's already explained in the commit message.

Cheers,

[-- Attachment #2 --]
<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 7, 2022 at 6:12 AM Alexey Dokuchaev &lt;<a href="mailto:danfe@freebsd.org">danfe@freebsd.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Sep 30, 2022 at 10:30:52PM +0000, Xin LI wrote:<br>
&gt; commit af3c78886fd8d4ca5eebdbe581a459a6f6d29d6a<br>
&gt; <br>
&gt;   Alter the prototype of qsort_r(3) to match POSIX, which adopted the<br>
&gt;   glibc-based interface.<br>
&gt; <br>
&gt;   Unfortunately, the glibc maintainers, despite knowing the existence<br>
&gt;   of the FreeBSD qsort_r(3) interface in 2004 and refused to add the<br>
&gt;   same interface to glibc based on grounds of the lack of standardization<br>
&gt;   and portability concerns, has decided it was a good idea to introduce<br>
&gt;   their own qsort_r(3) interface in 2007 as a GNU extension with a<br>
&gt;   slightly different and incompatible interface.<br>
&gt; <br>
&gt;   With the adoption of their interface as POSIX standard, let&#39;s switch<br>
&gt;   to the same prototype, there is no need to remain incompatible.<br>
<br>
What a sad story, and so unfair to FreeBSD as we now have to deal with<br>
compatibility hacks (as mandree@ had said, having to parenthesize a<br>
function name is an abomination).  Can you elaborate on technical side of<br>
things a bit?  Is GNU qsort_r(3) interface, while incompatible, better<br></blockquote><div><br></div><div><div class="gmail_default" style="font-family:monospace,monospace">They only have to parenthesize when they are utilizing C language features to accomplish a special goal (e.g. to detect if the prototype matches exactly in a configure script) which have a better alternative (by enabling strict type checks), or are doing something wrong (e.g. not including the correct header file).</div></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">No normal usages of qsort_r(3) required parenthesize, unless they are already broken.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
than ours in 1-to-1 comparison, leaving the grief of not going with our<br>
older one aside?  Thanks,<br></blockquote><div><br></div><div class="gmail_default" style="font-family:monospace,monospace">It&#39;s already explained in the commit message.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Cheers,<br></div></div></div>

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGMYy3sFJuNO3ebEGOsuOqruTMV9AUGrKZeEjBr%2Bu=vUbLjd8Q>