public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: JeanHeyd Meneide <wg14@soasis.org>
To: Joseph Myers <joseph@codesourcery.com>
Cc: Alejandro Colomar <alx.manpages@gmail.com>,
	Florian Weimer <fweimer@redhat.com>,
	 libc-alpha@sourceware.org, JeanHeyd Meneide <wg14@soasis.org>
Subject: Re: [PATCH] inttypes.h: imaxabs(3): Implement as a macro
Date: Wed, 14 Sep 2022 15:03:19 -0400	[thread overview]
Message-ID: <CACqA6+nOefuPfq=X5gM9mXh6p8+pacODWov+mnmVM2SdjWufOA@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2209141638530.3132611@digraph.polyomino.org.uk>

Dear Alejandro, Joseph,

On Wed, Sep 14, 2022 at 12:41 PM Joseph Myers <joseph@codesourcery.com> wrote:
>
> On Wed, 14 Sep 2022, Alejandro Colomar via Libc-alpha wrote:
>
> > > intmax_t was discussed at length in WG14, and while there was agreement on
> > > reducing its uses (hence the change to floating-point return types for
> > > fromfp functions, for example, see bug 28327), there was not agreement on
> > > any particular form of obsolescence.  And it *is* useful in practice for
> > > printing types such as off_t or mode_t with no corresponding printf
> > > formats; those could just do with appropriate constraints to be no wider
> > > than intmax_t when a future POSIX revision is based on C2x.
> >
> > Yes, and yet the same can be said about long long.  intmax_t is one less
> > character (both in the type name, and in "j"), but apart from that, no much
> > benefit.
>
> It provides a clearer statement of intent to readers of the code than long
> long does.
>
> As I noted in the WG14 discussions of a few proposed obsoletions, just
> because some language feature is not useful for *all* the things some
> people might like to be able to use it for isn't a reason for obsoletion
> when it's still useful for *some* of those things.


     I agree here. I have a proposal to fix this, based on the
assembly labels and similar existing practice found on a lot of
compilers, and based on what BSDs such as NetBSD have been using for
25+ years to provide ABI stability despite shifting architectures and
types: https://thephd.dev/_vendor/future_cxx/papers/C%20-%20Transparent%20Aliases.html

     I would rather we not fall back to macros for all the reasons
Joseph and others mentioned (the standard library #undef macro reason
is also listed in the above-linked paper). I personally view the
exemptions we made for the upcoming C2x (C23) standard as stop-gaps to
allow important evolution and implementation work from, but not
general-purpose solutions. I think transparent aliases is a generic
solution to the problem and would achieve much of what we need to do,
but it will not be in until C2y/C3a (the next revision of the C
standard) if I work hard at it and polish the wording while surfacing
implementations. I also found a few embedded folks who similarly
suffered drawbacks because their platform's compiler could not deal
with the asm("") labels for ABIs, and broke the entire build on their
machine. So even for non-large systems, there's a real need for a
language-level indirection mechanism that has all the same properties
as normal functions.

     I hope that we can still make do with implementation extensions
while I (and others?) work to make proper strides in implementation.
And I apologize it took me this long to come up with these things; I
certainly do wish I was "faster on the draw" to solving these
problems, so to speak.

Best Wishes,
JeanHeyd

  reply	other threads:[~2022-09-14 19:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-13 15:18 Alex Colomar
2022-09-13 15:28 ` Alejandro Colomar
2022-09-13 15:34 ` Alejandro Colomar
2022-09-13 18:27 ` Joseph Myers
2022-09-13 18:47   ` Paul Eggert
2022-09-13 19:30     ` Joseph Myers
2022-09-13 20:59       ` Paul Eggert
2022-09-13 22:43   ` Alejandro Colomar
2022-09-13 22:56     ` Joseph Myers
2022-09-13 23:43       ` Alejandro Colomar
2022-09-14 16:41         ` Joseph Myers
2022-09-14 19:03           ` JeanHeyd Meneide [this message]
2022-09-15 12:33             ` Alejandro (Alex) Colomar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACqA6+nOefuPfq=X5gM9mXh6p8+pacODWov+mnmVM2SdjWufOA@mail.gmail.com' \
    --to=wg14@soasis.org \
    --cc=alx.manpages@gmail.com \
    --cc=fweimer@redhat.com \
    --cc=joseph@codesourcery.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).