Boost logo

Boost :

Subject: Re: [boost] [clang][preprocessor] Testing of clang emualting the VC++ preprocessor on Windows
From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2016-04-01 16:52:26


On 4/1/2016 12:25 AM, degski wrote:
> On 1 April 2016 at 06:47, Paul Mensonides <pmenso57_at_[hidden]> wrote:
>
> Why do they need support? Compiler != platform.
>>
>
> You're right, approaching it this way. vs2015 Update 2 is the only compiler
> that "needs" support, as it will compile code that runs on W7SP1, W8.1 and
> W10 (as they are the M$ supported OSes). In a world of open source and free
> (as in beer) compilers/OSes, this is not an issue, just upgrade to the
> latest and greatest.

C++ code should target the C++ Standard. Compilers should target the
C++ Standard. C++ code should not have to target any compiler at all.

> VC++ being the "de facto" compiler on the platform is a huge part of the
>> problem.
>
>
> I don't really see what you intend to say here. Their platform, their
> compiler.

Their platform, yes, but only VC++ is their compiler. A compiler is
just software running on some platform that produces executables
compatible with another (possibly the same) platform. IOW, Windows is
their platform, but the notion of "C++ compiler that runs on Windows or
produces Windows executables" is not owned by Microsoft, nor should they
be involved in it in any way (including not being "owner" of "the" C++
ABI on Windows) except maybe that of defining the executable file format
(and even that is tenuous and could also be irrelevant with better QoL
design in the Windows system).

What all of the compilers that run on any platform (e.g. Windows: VC++,
mingw, clang) should be doing is attempting to target the Standard, not
copying each other's crap.

> Boost doesn't have to support VC++ either, correct, but it does it's best
> to do so.

Unfortunately. Boost used to be a bastion of ingenuity and cutting edge
practice. It is now mired in its own legacy of bending over backward
(and forward) to support garbage.

> Code should target the standard. Compilers should target the standard.
>> Any temporary workarounds for bugs or missing features should be exactly
>> that: temporary.
>
>
> AFAIK that's what M$ is working at. Windows pre-dates Linux by over 5
> years, i.e. no gcc/clang whatever. Windows predates "The Standard", you are
> referring to, by 13 years. The bugs and missing features ARE temporary,
> their time-frame differs from yours, though.

Sure. What does that have to do with any other compiler? Microsoft
owns Windows and owns VC++. It doesn't own clang, mingw, or any other
C++ compiler that runs on Windows. Nor does it own C++. Microsoft does
not get to decide what C++ is. The C++ standard committee decides that.
  Where VC++ is good or bad with respect to the conformance should be
irrelevant to all other compilers. The standard each of them is
measured against is not each other but, well, the Standard. That breeds
competition rather than lock-in, and it is that competition that
provides the motivation that ultimately yields improved time frames.

> M$ suffers from legacy code like any other company. Being commmercial and
> supporting a huge user base, I can see that they don't re-write the OS in
> one go, i.e. they depend on the bad choices of the past.

So, "untouchable" code written in the past was compiled by a compiler in
the past. Where did that compiler go? It is not like every software
project depends on all of the trillions of lines of code previously
written in every other project ever.

-Paul


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk