The big missing features were VLAs (those will never be implemented) and _Generic (implemented now in VS2019).
_Generic has only been added very recently in VS2019, and MS recently has pledged C11 and C17 support (but it will never be a C99 compiler because VLAs will not be implemented, that's fine though, VLAs should never have made it into the standard).
There is no rule that ISO C++ compilers should be C compilers as well.
In fact, I bet they only backtraced on their position on their C compiler due to WSL, IoT and devices like Azure Sphere.
Lots of legacy targets have shoddy-at-best C99, or new, support.
You'll find that a fair amount of single-header C libraries that are explicitly C89-supporting are in use by game developers.
Is that true? I thought low-level game development was almost entirely in C++. Why is there resistance to using libraries written in the same language as the rest of the program?
And this is the main reason why is written in a subset of C89, because is 100% source compatible with C++.
char* bytes = malloc(4);
is valid C89 but not valid C++. You have to restrict yourself to a kind-of subset of C89 if you want it to work with C++.Here's for example such an "implementation source file" example (using stb_image.h):
https://github.com/floooh/sokol-samples/blob/master/libs/stb...
...or for a whole collection of related single-file libraries:
https://github.com/floooh/sokol-samples/blob/master/libs/sok...
There are easy to integrate C++ libraries like Dear ImGui but they are in the minority, and (for instance) Dear ImGui uses a very restricted set of C++ features (it's essentially "C with namespaces and overloading", so it's not very far removed from a C library).