From: Alejandro Colomar <alx.manpages@gmail.com>
To: JeanHeyd Meneide <wg14@soasis.org>
Cc: Ingo Schwarze <schwarze@usta.de>, linux-man@vger.kernel.org
Subject: Re: [PATCH] Various pages: SYNOPSIS: Use VLA syntax in function parameters
Date: Fri, 2 Sep 2022 23:02:07 +0200 [thread overview]
Message-ID: <491a930d-47eb-7c86-c0c4-25eef4ac0be0@gmail.com> (raw)
In-Reply-To: <CACqA6+mfaj6Viw+LVOG=nE350gQhCwVKXRzycVru5Oi4EJzgTg@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 3856 bytes --]
Hi JeanHeyd!
I'm forwarding your email to the mailing list, from my post-1996 mail
client ;)
I hope all of your content is kept (even if slightly degraded).
Cheers,
Alex
-------- Forwarded Message --------
Subject: Re: [PATCH] Various pages: SYNOPSIS: Use VLA syntax in
function parameters
Date: Fri, 2 Sep 2022 16:56:00 -0400
From: JeanHeyd Meneide <wg14@soasis.org>
To: Alejandro Colomar <alx.manpages@gmail.com>
CC: Ingo Schwarze <schwarze@usta.de>, linux-man@vger.kernel.org
Hi Alejandro and Ingo,
Just chiming in from a Standards perspective, here. We discussed,
briefly, a way to allow Variable-Length function parameter declarations
like the ones shown in this thread (e.g., char *getcwd(char buf[size],
size_t size );).
In GCC, there is a GNU extension that allows explicitly
forward-declaring the prototype. Using the above example, it would look
like so:
char *getcwd(size_t size; char buf[size], size_t size);
(Live Example [1])
(Note the `;` after the first "size" declaration). This was brought
before the Committee to vote on for C23 in the form of N2780 [2], around
the January 2022 timeframe. The paper did not pass, and it was seen as a
"failed extension". After the vote on that failed, we talked about other
ways of allowing places whether there was some appetite to allow
"forward parsing" for this sort of case. That is, could we simply allow:
char *getcwd(char buf[size], size_t size);
to work as expected. The vote for this did not gain full consensus
either, but there were a lot of abstentions [3]. While I personally
voted in favor of allowing such for C, there was distinct worry that
this would produce issues for weaker C implementations that did not want
to commit to delayed parsing or forward parsing of the entirety of the
argument list before resolving types. There are enough abstentions
during voting that a working implementation with a writeup of complexity
would sway the Committee one way or the other.
This is not to dissuade Alejandro's position, or to bolster Ingo's
point; I'm mostly just reporting the Committee's response here. This is
an unsolved problem for the Committee, and also a larger holdover from
the removal of K&R declarations from C23, which COULD solve this problem:
// decl
char *getcwd();
// impl
char* getcwd(buf, size)
char buf[size];
size_t size;
{
/* impl here */
}
There is room for innovation here, or perhaps bolstering of the
GCC original extension. As it stands right now, compilers only very
recently started taking Variably-Modified Type parameters and Static
Extent parameters seriously after carefully separating them out of
Variable-Length Arrays, warning where they can when static or other
array parameters do not match buffer lengths and so-on.
Not just to the folks in this thread, but to the broader
community for anyone who is paying attention: WG14 would actively like
to solve this problem. If someone can:
- prove out a way to do delayed parsing that is not implementation-costly,
- revive the considered-dead GCC extension, or
- provide a 3rd or 4th way to support the goals,
I am certain WG14 would look favorably upon such a thing eventually,
brought before the Committee in inclusion for C2y/C3a.
Whether or not you feel like the manpages are the best place to
start that, I'll leave up to you!
Thanks,
JeanHeyd
[1]: https://godbolt.org/z/dv1G3qGa3 <https://godbolt.org/z/dv1G3qGa3>
[2]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2780.pdf
<https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2780.pdf>
[3]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2991.pdf
<https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2991.pdf> - search
for n2780
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2022-09-02 21:02 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-26 21:07 [PATCH] Various pages: SYNOPSIS: Use VLA syntax in function parameters Alejandro Colomar
2022-08-27 11:10 ` Ingo Schwarze
2022-08-27 12:15 ` Alejandro Colomar
2022-08-27 13:08 ` Ingo Schwarze
2022-08-27 18:38 ` Alejandro Colomar
2022-08-28 11:24 ` Alejandro Colomar
[not found] ` <CACqA6+mfaj6Viw+LVOG=nE350gQhCwVKXRzycVru5Oi4EJzgTg@mail.gmail.com>
2022-09-02 21:02 ` Alejandro Colomar [this message]
2022-09-02 21:57 ` Alejandro Colomar
2022-09-03 12:47 ` Martin Uecker
2022-09-03 13:29 ` Ingo Schwarze
2022-09-03 15:08 ` Alejandro Colomar
2022-09-03 13:41 ` Alejandro Colomar
2022-09-03 14:35 ` Martin Uecker
2022-09-03 14:59 ` Alejandro Colomar
2022-09-03 15:31 ` Martin Uecker
2022-09-03 20:02 ` Alejandro Colomar
2022-09-05 14:31 ` Alejandro Colomar
2022-11-10 0:06 ` Alejandro Colomar
2022-11-10 0:09 ` Alejandro Colomar
2022-11-10 1:33 ` Joseph Myers
2022-11-10 1:39 ` Joseph Myers
2022-11-10 6:21 ` Martin Uecker
2022-11-10 10:09 ` Alejandro Colomar
2022-11-10 23:19 ` Joseph Myers
2022-11-10 23:28 ` Alejandro Colomar
2022-11-11 19:52 ` Martin Uecker
2022-11-12 1:09 ` Joseph Myers
2022-11-12 7:24 ` Martin Uecker
2022-11-12 12:34 ` Alejandro Colomar
2022-11-12 12:46 ` Alejandro Colomar
2022-11-12 13:03 ` Joseph Myers
2022-11-12 13:40 ` Alejandro Colomar
2022-11-12 13:58 ` Alejandro Colomar
2022-11-12 14:54 ` Joseph Myers
2022-11-12 15:35 ` Alejandro Colomar
2022-11-12 17:02 ` Joseph Myers
2022-11-12 17:08 ` Alejandro Colomar
2022-11-12 15:56 ` Martin Uecker
2022-11-13 13:19 ` Alejandro Colomar
2022-11-13 13:33 ` Alejandro Colomar
2022-11-13 14:02 ` Alejandro Colomar
2022-11-13 14:58 ` Martin Uecker
2022-11-13 15:15 ` Alejandro Colomar
2022-11-13 15:32 ` Martin Uecker
2022-11-13 16:25 ` Alejandro Colomar
2022-11-13 16:28 ` Alejandro Colomar
2022-11-13 16:31 ` Alejandro Colomar
2022-11-13 16:34 ` Alejandro Colomar
2022-11-13 16:56 ` Alejandro Colomar
2022-11-13 19:05 ` Alejandro Colomar
2022-11-14 18:13 ` Joseph Myers
2022-11-28 22:59 ` Alex Colomar
2022-11-28 23:18 ` Alex Colomar
2022-11-29 0:05 ` Joseph Myers
2022-11-29 14:58 ` Michael Matz
2022-11-29 15:17 ` Uecker, Martin
2022-11-29 15:44 ` Michael Matz
2022-11-29 16:58 ` Uecker, Martin
2022-11-29 17:28 ` Alex Colomar
2022-11-29 16:49 ` Joseph Myers
2022-11-29 16:53 ` Jonathan Wakely
2022-11-29 17:00 ` Martin Uecker
2022-11-29 17:19 ` Alex Colomar
2022-11-29 17:29 ` Alex Colomar
2022-12-03 21:03 ` Alejandro Colomar
2022-12-03 21:13 ` Andrew Pinski
2022-12-03 21:15 ` Martin Uecker
2022-12-03 21:18 ` Alejandro Colomar
2022-12-06 2:08 ` Joseph Myers
2022-11-14 17:52 ` Joseph Myers
2022-11-14 17:57 ` Alejandro Colomar
2022-11-14 18:26 ` Joseph Myers
2022-11-28 23:02 ` Alex Colomar
2022-11-10 9:40 ` G. Branden Robinson
2022-11-10 10:59 ` Alejandro Colomar
2022-11-10 17:47 ` Alejandro Colomar
2022-11-10 18:04 ` MR macro 4th argument (was: [PATCH] Various pages: SYNOPSIS: Use VLA syntax in function parameters) Alejandro Colomar
2022-11-10 18:11 ` Alejandro Colomar
2022-11-10 18:20 ` Alejandro Colomar
2022-11-10 19:37 ` Alejandro Colomar
2022-11-10 20:41 ` Alejandro Colomar
2022-11-10 22:55 ` G. Branden Robinson
2022-11-10 23:55 ` Alejandro Colomar
2022-11-11 4:44 ` G. Branden Robinson
2022-11-10 22:25 ` [PATCH] Various pages: SYNOPSIS: Use VLA syntax in function parameters G. Branden Robinson
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=491a930d-47eb-7c86-c0c4-25eef4ac0be0@gmail.com \
--to=alx.manpages@gmail.com \
--cc=linux-man@vger.kernel.org \
--cc=schwarze@usta.de \
--cc=wg14@soasis.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