Lots of people keep saying this on this thread, but why would you want GNU tools on Windows ? Have you ever wanted to put Apple's runtime on your Linux box? Or MSVC runtimes on your Linux machine?
I'm not interested specifically with GNU's tools, just standard Unix tools in general; Microsoft could easily use Cygwin (for example) as a reference point for porting/packaging the BSD userland to/for Windows, for example.
> Have you ever wanted to put Apple's runtime on your Linux box?
Not in that sense, but a Linux + BSD userland would be neat. Apple's runtime is basically that minus Linux plus Mach/XNU plus Cocoa.
> Or MSVC runtimes on your Linux machine?
Good God no.
> Weirdly, everyone wants the opposite.
Not universally true if you count Wine as "MSVC runtimes on your Linux machine".
And said software is typicaly bloated and buggy relative to its Unix counterparts. The MVSC runtimes are popular solely because Windows is popular.
Wine is a stopgap for software that's still reliant on Windows. The preferred approach would be for that software to instead be properly ported, which would include using a proper libc and executable package format (like ELF).
That said, my opinions aren't representative of everyone in the world. There are projects like Wine and (more interestingly) winelib that implement the MSVC, and those are popular projects (the former more popular, though the latter closer to being solely MSVC on Linux).
So are you saying the C++ STL under Windows is poorly implemented and causes sudden executable growth?
(Admittedly, std::max has performance problems under VC2010 but that's kind of old)
Software bloat has nothing to do with the runtimes. It's how people use the runtimes that's the problem. Saying that the runtimes cause software bloat is a massive generalisation.
When I use the MSVC runtimes my software isn't bloated. I compile the same code under OSX and Linux and it also isn't bloated there. In fact, under OSX it uses far more RAM, and I have to bundle along dylibs with the executable inside the .app itself in order for it to be usable. This makes my OSX app far far larger than my Windows binary, which just relies on the MSVC runtimes.
Interestingly, my software doesn't crash either. If the MSVC runtimes were "bloated and buggy" then I would be crashing all the time, but my programs don't....
The executable format under Windows was originally designed to be portable - hence PE (portable executable). Just because they abandoned the other platforms (outside Intel land) does not make the binary unportable.
Weirdly, everyone wants the opposite.