Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 24 May 2023 10:30:26 -0400
From: Rich Felker <dalias@...c.org>
To: Jₑₙₛ Gustedt <jens.gustedt@...ia.fr>
Cc: musl@...ts.openwall.com
Subject: Re: [C23 divers headers 15/17] C23: add the unreachable macro

On Wed, May 24, 2023 at 04:26:43PM +0200, Jₑₙₛ Gustedt wrote:
> Rich,
> 
> on Wed, 24 May 2023 10:21:05 -0400 you (Rich Felker <dalias@...c.org>)
> wrote:
> 
> > On Wed, Apr 19, 2023 at 08:38:04AM +0200, Jens Gustedt wrote:
> > > ---
> > >  include/stddef.h | 2 ++
> > >  1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/include/stddef.h b/include/stddef.h
> > > index f25b8639..09be5fb6 100644
> > > --- a/include/stddef.h
> > > +++ b/include/stddef.h
> > > @@ -24,4 +24,6 @@
> > >  #define offsetof(type, member) ((size_t)( (char *)&(((type
> > > *)0)->member) - (char *)0 )) #endif
> > >  
> > > +#define unreachable() __builtin_unreachable()
> > > +
> > >  #endif
> > > -- 
> > > 2.34.1  
> > 
> > This is a namespace violation unless protected by a C version check.
> 
> That would have been my first take also. I changed these things after
> you (I think it was you) telling me that generally interfaces that are
> added in newer versions of C need not be protected for older
> version. I probably misunderstood something. Can you please clarify
> under which circumstances you want feature tests and when not?

OK, I agree it's a little bit unclear, but here it's a case of a very
minimalist header (stddef.h) defining a new, plain-english-word macro
that's very likely to conflict with existing code.

I'm not sure where exactly the cutoff point for whether it matters
should be -- this is something community should probably discuss. But
I think this is a really clear case where the namespace should not be
stomped.

Cases where it's almost surely OK, OTOH, are things like promoting
common existing functions to standard -- existing code is almost
surely already avoiding conflicts with these (e.g. the time.h stuff).

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.