git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Is 'for (int i = [...]' bad for C STD compliance reasons?

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 14, 2021, 18:25 UTC
Message-ID
<211114.86zgq6si94.gmgdl@evledraar.gmail.com>
In-Reply-To
<xmqqilwulims.fsf@gitster.g>
On Sun, Nov 14 2021, Junio C Hamano wrote:
Show 56 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>>> Also, our code does not introduce a new variable in the first part
>>> of "for (;;)" loop control, so even if the original lacked decl for
>>> "i", the posted patch is not how we write our code for this project.
>>
>> Just curious: Out of preference, or for compatibility with older C
>> standards?
>
> The latter.
>
> cc0c4297 (CodingGuidelines: spell out post-C89 rules, 2019-07-16)
> adds a few "weather balloons say these are OK" together with this
> exact one as "not yet allowed".  We (at least, those of us who have
> enough knowledge and authority to propose changes to the guidelines)
> all know that particular feature is a nice thing to use if everybody
> we care about supports it [*1*].
>
> Here is the thread that resulted in the relevant part of the
> guideilne.
>
> https://lore.kernel.org/git/CAPUEspgjSAqHUP2vsCCjqG8b0QkWdgoAByh4XdqsThQMt=V38w@mail.gmail.com/
>
> The "another patch that tried to use it late last year" the thread
> refers to is
> https://lore.kernel.org/git/20181114004745.GH30222@szeder.dev/
>
> If I am not mistaken, Carlo added gcc-4.8 CI job to catch these
> recently?
>
> Now, "Centos 6 is no longer" cannot be called a good response to
> this message.  We stopped at seeing the first failure, and breakages
> on other platforms were not even counted back then.  To those whose
> compilers also barfed, it was sufficient that we pulled the plug
> after seeing a failure on Centos 6.
>
> But two years may be long enough for us to try again.  If we want to
> pursue it, we'd need to raise a weather balloon that would break
> compilers that have been happily grokking our code loudly by being
> in a central place that will never be conditionally compiled out,
> and is easy to back out by being in ultra-stable location.
>
> cbc0f81d (strbuf: use designated initializers in STRBUF_INIT,
> 2017-07-10) is an example that Peff found and used a great such
> location.
>
> I know you are capable of reading Documentation/CodingGuidelines and
> running "git blame" on it, and then use mailing list archive to dig
> to find the answer, and it was a bit of disappointment to see this
> was asked as a question, rather than a well researched "now after
> two years, let's try this again".
>
>
> [References]
>
> *1* https://lore.kernel.org/git/xmqqlgnrq9qi.fsf@gitster.mtv.corp.google.com/

The issue on CentOS 6 isn't one of incompatibility with C99, but that the version of GCC refuses to compile C99 code without -std=c99 or -std=gnu99. See [1] downthread of one of your links.

But yes, it would be the first C99 feature where we have a known compiler that needs an opt-in -std=* option to support the C99 feature, I think.

1. https://lore.kernel.org/git/20190717004231.GA93801@google.com/
Previous: Junio C HamanoNext: Carlo Arenas
Message 7 of 22 in “MyFirstContribution.txt: fix undeclared variable i in sample code”
  1. MyFirstContribution.txt: fix undeclared variable i in sample codeSaksham Mittal, Nov 13, 2021
  2. Johannes AltmanningerNov 13, 2021
  3. Saksham MittalNov 13, 2021
  4. Junio C HamanoNov 14, 2021
  5. Is 'for (int i = [...]' bad for C STD compliance reasons? (was: [PATCH] MyFirstContribution.txt: fix undeclared variable i in sample code)Ævar Arnfjörð Bjarmason, Nov 14, 2021
  6. Junio C HamanoNov 14, 2021
  7. Ævar Arnfjörð BjarmasonNov 14, 2021
  8. Carlo ArenasNov 14, 2021
  9. brian m. carlsonNov 14, 2021
  10. Carlo ArenasNov 14, 2021
  11. revision: use C99 declaration of variable in for() loopJunio C Hamano, Nov 15, 2021
  12. Martin ÅgrenNov 15, 2021
  13. Junio C HamanoNov 16, 2021
  14. brian m. carlsonNov 15, 2021
  15. Phillip WoodNov 17, 2021
  16. Ævar Arnfjörð BjarmasonNov 17, 2021
  17. SZEDER GáborNov 17, 2021
  18. Junio C HamanoNov 18, 2021
  19. Phillip WoodDec 7, 2021
  20. Junio C HamanoDec 7, 2021
  21. Removing -Wdeclaration-after-statement (was: [PATCH] revision: use C99 declaration of variable in for() loop)Ævar Arnfjörð Bjarmason, Dec 8, 2021
  22. Junio C HamanoDec 8, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.