[PATCH] D7642: Introduce the idea of a minimum libc version

David Majnemer via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 13 20:57:50 PDT 2015

majnemer added a comment.

In http://reviews.llvm.org/D7642#224225, @compnerd wrote:

> AIUI, ucrt is absolutely relevant since msvcrt itself has been split out into the ucrt.  msvcrt is the "shared" common bits, while the ucrt is more "platform" specific bits.
> But really, the point is: supporting an older version with a newer compiler is what doing this the way I suggest enables.  You can use a newer compiler but still allow the generated binary to target an alternative environment.

Er, I see it a bit differently.  UCRT is the boring, unchanging part of the CRT which is supposed to provide binary compatibility across versions.  It has everything it needs to make junk like `FILE *` stable through time and the definition of `fopen`.  AFAICT, UCRT provides functionality equivalent to C99 + some random MS-specific stuff.

Correct me if I'm wrong but VS 2013 seemed to have provided all of the functions that TLI cares about and 2015 refactored those functions into UCRT.  The UCRT's interface can never shrink which means we can rely on this support indefinitely for all future versions of _MSC_VER.

I think an argument could be made if we believed it to be likely that further interesting library functionality might be exposed through UCRT that the compiler might care about.  I'd rather cross that bridge when we get there.



More information about the cfe-commits mailing list