All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx+linux-man@kernel.org>
To: Martin Uecker <uecker@tugraz.at>
Cc: Christopher Bazley <chris.bazley.wg14@gmail.com>,
	 "Michael Kerrisk (man7.org)" <mtk@man7.org>,
	linux-man@vger.kernel.org,
	 Michael Kerrisk <mtk.manpages@gmail.com>,
	Sam James <sam@gentoo.org>, Carlos O'Donell <carlos@redhat.com>,
	 "Joseph S. Myers" <josmyers@redhat.com>,
	corbet@lwn.net
Subject: Re: [PATCH] man/: SYNOPSIS: Remove GNU forward-declarations of parameters for lengths of array parameters
Date: Sun, 25 Oct 2026 08:38:55 +0100	[thread overview]
Message-ID: <at2vv1isjbPZ6-34@debian> (raw)
In-Reply-To: <dd9ca27e6b4c227c08cd707aab9b0b5d495c203c.camel@tugraz.at>

[-- Attachment #1: Type: text/plain, Size: 4556 bytes --]

Hi Martin,

> Date: 2026-10-25 08:22:23+0100
> From: Martin Uecker <uecker@tugraz.at>
>
> Am Sonntag, dem 25.10.2026 um 07:59 +0100 schrieb Alejandro Colomar:
> > Hi Martin,
> > 
> > > Date: 2026-10-24 20:11:10+0200
> > > From: Martin Uecker <uecker@tugraz.at>
> > > 
[...]
> > > [static ...] implies that the pointer is not null, this is
> > > a standard compliant way to express this (it implies a bit
> > > more as nonnull, but compilers do not support more).  Still,
> > > it gives you a real practical security benefit.
> > 
> > I know you can get usefulness out of it, but the fact that you must
> > express a bound and that it doesn't mean what everyone would expect it
> > to mean makes it a broken feature, unless and until we fix the second
> > bullet by making [static n] mean the same as [[gnu::nonnull]] [n], which
> > is n3801 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3801.txt>.
> 
> I know. Is this on the agenda?

No; it has wording issues pointed out by Joseph, and I don't have the
time or energy to address them at the moment.  See [SC22WG14.36403] in
the mailing list.

Feel free to take over the paper if you have a good idea for those.
I plan to come back to it, but not this year.

[...]
> > > > > > The committee was clearly confused when they added this feature.
> > > > > > It was around the time when 'restrict' was added, which is another
> > > > > > historical mistake of the committee.  In general, every feature they
> > > > > > added thinking of optimizations (and that includes these two) has
> > > > > > resulted in a mistake.
> > > 
> > > It was not a mistake, it was a different set of priorities
> > 
> > It was a mistake.  They thought it would provide room for optimizations,
> > but nobody checked whether it was actually useful in the real world.
> > This seems to me a clear example of a design looking for users, which is
> > precisely what the C Committee should *not* do.
> 
> I would assume it came from cray and they had real world
> use case for this at that time.

What is 'cray'?

[...]
> > > I think the idea of limiting access to the rest of the array did
> > > not occur to them, as this feature was only for optimization.
> > 
> > And that's what I call a mistake; a big one.
> > 
> > > > And indeed, I agree.  This seems a case of bad design, wishing that it
> > > > might eventually be optimizable, while it wasn't and still isn't, and
> > > > also while ignoring the safety issues caused by it.  We should just
> > > > pretend that the feature doesn't exist.
> > > 
> > > It would potentially be useful for optimization, but I think there
> > > was a chicken-and-egg problem.  Nobody used [static] and then
> > > people worked on instead optimizations more useful for existing code,
> > > so [static] also never become useful for programmers.
> > 
> > That's the right approach.
> > 
> > > Much later it become useful to express non-null pointers.
> > 
> > It still hasn't.  It will once we get rid of the bound.  That is, it
> > will be useful when one can do [static] or [static *].  And even then,
> > the fact that it can't be used on function pointers makes it a bad patch
> > in the language.  We need a feature that is consistent.
> 
> Yes, but we do not even have a proposal and [static 1] exists today.

Actually, we do have one: n3803.
<https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3803.txt>

The wording on this one is good.  I think I forgot some trivial
duplication of the diff for both the non-abstract and the abstract
declarators, but I can fix that when I arrive home, so we could have it
in time for the next meeting.

> > 
> > And we also have the issue that it changes the meaning of the bound.
> > It's just terrible.
> 
> The bound in [1] has no meaning in parameters,

This is not true.  ISO C is just toilet paper in this regard.
It has a meaning in SDCC and GCC, and every programmer that ever wrote
[1] assigned a meaning to it.  Moreover, I'm using [1] myself to express
pointers to exactly 1 element.

> so [static 1] changes
> the meaning only in a sense that that it has a stricter meaning
> that is still only a subset of what we want. 

This is just not true.  The standard is meaningless when it clashes with
reality and common sense.  As Capt. Barbossa would say, "the [standard]
is more what you'd call "guidelines" than actual rules.  Welcome aboard
the Black Pearl, Miss Turner!"


Cheers,
Alex

-- 
<https://www.alejandro-colomar.es>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2026-10-25  7:39 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-22 16:44 [PATCH] man/: SYNOPSIS: Remove GNU forward-declarations of parameters for lengths of array parameters Alejandro Colomar
2026-10-22 17:11 ` Martin Uecker
2026-10-22 20:01   ` Alejandro Colomar
2026-10-22 20:27     ` Alejandro Colomar
2026-10-22 17:37 ` Christopher Bazley
     [not found] ` <CAEHU8x9jET+vcrR0NpDz6t57egQG8TZqx5XtV52srH9ZRvdxSQ@mail.gmail.com>
2026-10-22 19:54   ` Alejandro Colomar
2026-10-23 11:53     ` Michael Kerrisk (man7.org)
2026-10-23 12:42       ` Alejandro Colomar
2026-10-23 15:51       ` Christopher Bazley
2026-10-24 12:45         ` Michael Kerrisk (man7.org)
2026-10-24 13:38           ` Alejandro Colomar
2026-10-24 16:16             ` Christopher Bazley
2026-10-24 16:37               ` Alejandro Colomar
2026-10-24 18:11                 ` Martin Uecker
2026-10-25  6:59                   ` Alejandro Colomar
2026-10-25  7:22                     ` Martin Uecker
2026-10-25  7:38                       ` Alejandro Colomar [this message]
2026-10-25  8:29                         ` G. Branden Robinson
2026-10-25  8:40                         ` Martin Uecker
2026-10-25  8:57                           ` Alejandro Colomar
2026-10-25  9:05                             ` Martin Uecker
2026-10-23 12:11     ` Alejandro Colomar
2026-10-22 22:03 ` Mark Harris
2026-10-23  9:43   ` Alejandro Colomar
2026-10-23 19:32     ` Mark Harris
2026-10-23 20:06       ` Alejandro Colomar
2026-10-24  7:53   ` Martin Uecker

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=at2vv1isjbPZ6-34@debian \
    --to=alx+linux-man@kernel.org \
    --cc=carlos@redhat.com \
    --cc=chris.bazley.wg14@gmail.com \
    --cc=corbet@lwn.net \
    --cc=josmyers@redhat.com \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=mtk@man7.org \
    --cc=sam@gentoo.org \
    --cc=uecker@tugraz.at \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.