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

Microsoft's C language policy (was: [PATCH 0/1] Add a test balloon for C99)

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 30, 2021, 20:43 UTC
Message-ID
<211130.86o861cqnu.gmgdl@evledraar.gmail.com>
In-Reply-To
<20211114212437.1466695-1-sandals@crustytoothpaste.net>
On Sun, Nov 14 2021, brian m. carlson wrote:
[Replying to this tidbit in the v1 CL, which isn't in the V2 one]
Show 24 quoted lines
> Unfortunately, Microsoft for many years refused[1] to support C99 in
> MSVC, and still does not officially do so.  However, they recently added
> support for C11 and C17, which are sufficient for modern programming.
> These require a newer version of MSVC, including an updated SDK.  The
> SDK update is available for download free of charge, and most public CI
> systems have support for both the updated MSVC and the SDK update.
>
> Even for users who would like to target an older version of Windows,
> such as the no longer supported Windows 7, GCC and Clang are available.
> The LLVM suite, including Clang, is available pre-compiled for download
> free of charge.  Using a different compiler is specifically proposed by
> Microsoft staff[1] as a solution for users who wish to build modern
> programs for MSVC versions which do not support modern C.
>
> As such, we can assume that Git can be safely compiled with C99 or C11
> support on all operating systems which receive security support, and
> even some which do not.  Our CI confirms that this series passes all
> tests.  Let's introduce a test balloon which checks for this support and
> fails with an error message if it is absent.
>
> [0] The reader will note that there are people working professionally in
> this industry who were not yet born at the time C99 was ratified.  Thus,
> this occurred quite a long time ago indeed.
> [1] https://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/

I hadn't seen that blog post before I'd read it when going over your series. I'd assumed that Microsoft was just dragging their feed on C language support, but that post indicates (from what seems to be as official of a source as anyone's going to get) that they're intending to not support C at all, but just some pseudo-C that happens to be a convenient subset of C++.

However that post is from 2012, and you indicate that they've since added (full?) support for C11 and C17.

So is this "policy" of supporting some arbitrary subset of C++ at all current as far as MSVC today goes?

Aside: I just remembered we had a (seemingly abandoned) effort to get git's sources to
compile with a C++ compiler[1], which would be another possible way
forward to using more modern C features that happened to overlap with
C++. Another one would be some sort of coccinelle-powered refactoring or
other source pre-processing...
1. https://lore.kernel.org/git/20180129223728.30569-1-bmwill@google.com/
Previous: Jeff KingNext: brian m. carlson
Message 28 of 32 in “Add a test balloon for C99”
  1. 0/1 Add a test balloon for C99brian m. carlson, Nov 14, 2021
  2. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Nov 14, 2021
  3. Ævar Arnfjörð BjarmasonNov 15, 2021
  4. brian m. carlsonNov 15, 2021
  5. Eric SunshineNov 15, 2021
  6. brian m. carlsonNov 16, 2021
  7. Johannes SchindelinNov 22, 2021
  8. brian m. carlsonNov 14, 2021
  9. Junio C HamanoNov 15, 2021
  10. brian m. carlsonNov 15, 2021
  11. Junio C HamanoNov 16, 2021
  12. brian m. carlsonNov 17, 2021
  13. 0/1 Add a test balloon for C99 supportbrian m. carlson, Nov 16, 2021
  14. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Nov 16, 2021
  15. Jeff KingNov 16, 2021
  16. Ævar Arnfjörð BjarmasonNov 16, 2021
  17. Jeff KingNov 16, 2021
  18. brian m. carlsonNov 17, 2021
  19. Jeff KingNov 17, 2021
  20. brian m. carlsonNov 17, 2021
  21. Carlo ArenasNov 17, 2021
  22. Ævar Arnfjörð BjarmasonNov 18, 2021
  23. Junio C HamanoNov 18, 2021
  24. Junio C HamanoNov 17, 2021
  25. Phillip WoodNov 16, 2021
  26. brian m. carlsonNov 17, 2021
  27. Jeff KingNov 17, 2021
  28. Microsoft's C language policy (was: [PATCH 0/1] Add a test balloon for C99)Ævar Arnfjörð Bjarmason, Nov 30, 2021
  29. brian m. carlsonNov 30, 2021
  30. 0/1 Add a test balloon for C99 supportbrian m. carlson, Dec 1, 2021
  31. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Dec 1, 2021
  32. Johannes SchindelinDec 2, 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.