The Great C Runtime Refactoring
blogs.msdn.com
blogs.msdn.com
Herb Sutter already stated this multiple times.
He was very clear that C99 support was only was is required by the C++ standard and to allow specific well known open source projects, which he referred to, to be ported to Windows.
If that's barely enough to move Sutter into action, I wonder what would be an actually compelling case to him. The heavens open and a booming voice commands him to implement features X, Y and Z?
I read somewhere that Microsoft settled on C89 for the Windows kernel etc. so as far as their primary language goes their compiler implements it just fine.
As of Windows 8 is possible to use C++ for kernel code (vc++ got a new flag /kernel).
http://events.visualstudio.com/eng/visual-studio-2013-launch...
At minute 18:51. Focus is C++, there are no plans for C conformance.
https://github.com/rbultje/c99-to-c89
http://git.chromium.org/gitweb/?p=chromium/third_party/ffmpe...
Entitled Windows users have absolutely no right to complain when programming language communities treat them as second class citizens.
The actual commit: http://git.libav.org/?p=libav.git;a=commit;h=16381923fb7b908...
And if you want your project to truly treat Windows as first class, you have to recruit people who know, love, and use Windows.
HN rumor has it that these creatures are mythical ;)
Or did I miss your point?
I consider myself a Windows user and developer, but I have no love for MSVC. I'd much rather have everything I use compile under MinGW GCC.
We must run in different circles.
"As part of this work, we've completely rewritten the core implementations of the printf and scanf functions (now with no #ifdefs!). This has enabled us to implement the remaining C99 features for the stdio library, to improve correctness checks in the library, and to fix many conformance bugs and quirks"
I've been using clang-cl ( http://llvm.org/builds/ ) for my personal stuff.
Pros:
* creates binaries that link to the platform CRT (no need for any redistributable) as long as you keep within C99 or C11
Cons:
* not officially supported yet
* doesn't yet support enough C++ to be useful for anybody wanting that
* while the C99/C11 language is available, you still need to rely on the Windows header files and libraries, so you have variable length arrays, declare anywhere, compound initializers, _Generic, but not snprintf, fenv.h, etc.
Sometimes you just have to use a binary library that you cannot recompile. If it is C++, you are limited with your compiler choices due to ABIs.
I hope the various sanitizers are ported as well!
Not sure if that is true in general - the few proper benchmarks I found indicate that there is no clear winner. (Except for the Intel compiler, which beats both)
Also anecdotally, I wrote a software renderer a few months ago that ran almost 50% faster when compiled with MSVC 2013 than with MingW 64 (gcc 4.8), all optimizations enabled. This might not be true for other types of programs though.
FYI... The author of the blog post (James McNellis) also has an excellent video presentation that explains that paragraph in more detail.
http://channel9.msdn.com/events/TechDays/Techdays-2014-the-N...
Also finally things like Python, Perl, etc. can stick on one runtime and not care for a very long time.
Great stuff Microsoft! I really really can't wait for it. I don't care even if no new C++ features are implemented - only this is that important.
+1 I love it.
But snark aside, this is going to help GCC and CLang which will be able to target the stable runtimes. It doesn't matter than VCRuntime will continue to be versioned since each compiler will provide its own startup and EH (they already do). In fact, I wonder if this is a move to begin officially supporting alternate compilers. Is VCExpress going to be replaced with a LLVM-based package?
Will it be possible to create a shim msvcrt.dll that forwards to the new libraries? Then old programs can finally take advantage of bug fixes.
MinGW relies on the CRT that ships with every Windows since Win95 (and Visual Studio 6).
Microsoft could fix this situation by merging the CRT that ships with Windows (the original one) and Visual Studio (the forked of version madness) together. A simple Windows update for Windows NT 5.x+ would be great (of course it should be backward compatible).
*headdesk*
Even the original implementation did that:
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/libc...
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/libc...