Boost logo

Boost :

Subject: Re: [boost] [clang] Using clang in Windows
From: Edward Diener (eldiener_at_[hidden])
Date: 2014-07-15 13:37:38


On 7/15/2014 11:16 AM, Paul A. Bristow wrote:
>
>
>> -----Original Message-----
>> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Edward Diener
>> Sent: 15 July 2014 15:48
>> To: boost_at_[hidden]
>> Subject: Re: [boost] [clang] Using clang in Windows
>>
>> On 7/15/2014 5:01 AM, Paul A. Bristow wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of
>>>> Edward Diener
>>>> Sent: 14 July 2014 22:08
>>>> To: boost_at_[hidden]
>>>> Subject: Re: [boost] [clang] Using clang in Windows
>>>>
>>>> On 7/14/2014 1:35 PM, Paul A. Bristow wrote:
>>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of
>>>>>> Edward Diener
>>>>>> Sent: 14 July 2014 08:06
>>>>>> To: boost_at_[hidden]
>>>>>> Subject: [boost] [clang] Using clang in Windows
>>>>>>
>>>>>> Just a note to everybody about using clang in Windows
>
> <snip>
>
>>> Perhaps we have to wait for Microsoft to produce an (presumably)
>>> optional 'correct' pre-processor?
>>
>> I recall some post about this related to one of the Boost developers talking
> to Herb
>> Sutter about the non-standard VC++ preprocessor and getting a verbal promise
> that
>> Microsoft would finally produce a standard conforming C++ preprocessor for
> VC++.
>> But I believe that Microsoft has made similar "noises" in that direction over
> the years
>> and nothing has ever happened so I am not sanguine about it happening anytime
>> soon.
>
> Can we produce any collective Boost wish to help this to happen?

Abracadabra <g> !

or

"When you wish upon a star it makes no difference who you are, your
dreams come true." <g><g> !

My sense of humor comes out when I think that the technical know-how of
even very good programmers is going to change the motivation of the
richest software company in the world to do anything technically that
does not increase its profits in the long run. This is not a knock on
Microsoft per se but just an acknowledgment of the reality of capitalism
in the world I live in. You have to prove to them that by not doing
something correctly which they have done in their own way which
apparently "works" for them that they will lose customers ( developers
in this case ). Considering that Visual Studio is almost certainly the
most popular development environment for Windows programming and that
there is probably less competition in that area than there has ever
been, I have a hard time seeing this happening. Of course if a C++ guru
like Herb Sutter makes this happen, all the better, but haven't we all
heard this sort of thing before ?

>
>>> This wait will not be what *you* want, of course!
>>
>> What I do not want is to have to try to hack Boost PP in order to make clang
>> targeting VC++ work. To clang's credit when I ran the Boost PP tests, which I
> have
>> largely expanded, in the 'develop' branch against the clang VC++
> implementation,
>> only a single test failed due to clang emulating VC++ preprocessor bugs.
>>
>> I have argued vehemently in the clang developer mailing list that, although I
> do now
>> understand that clang targeting VC++ has to emulate some of VC++'s
> preprocessor
>> bugs in order to compile the VC++ header files, clang targeting VC++ should
>> otherwise be a C++ standard conforming preprocessor for all other code. This
> could
>> be done pretty nicely via a pragma. But it does not seem to have made much of
> an
>> impression on others there. Many clang developers/users are so happy that they
> can
>> use clang in place of VC++ in the VS IDE that they cannot understand what a
> poor
>> C++ preprocessor VC++ is when one goes beyond fairly simple macro expansion
>> techniques, as of course Boost PP does.
>
> I think you may appear to the Clangers to be a 'lone' (perhaps loony? ;-) PP
> enthusiast.

Most probably. But on a practical basis many Boost libraries use Boost
PP so if there are problems in Boost PP for a particular compiler it
could easily affect an end-user's ability to use a Boost library. That
was my larger concern with arguing about clang for VC++'s unfortunate
consequence of emulating VC++ preprocessor bugs.

>
> Can we produce any collective Boost wish to help this to happen?
>
> Although it is a can of worms, there must be some way to meet peoples needs, as
> you explain above.

I made my pitch on the clang developers mailing list for a pragma to
control either correct or VC++-like macro expansion. I also said for
myself, in no uncertain terms, that I am not willing to hack Boost PP
further for a compiler which emulates some subset of VC++ preprocessor
bugs. I highly doubt if Paul Mensonides will either. Even if VC++ were
to announce that starting this minute their latest VC++ implementation
has a completely C++ standard-conforming preprocessor, I am sure clang
using VC++ would still support the emulation bugs they have incorporated
in it in order to support already existing versions of VC++.

My own point of view regarding clang in Windows is that their use of
gcc/mingw works fine and I have little practical use for substituting
clang in place of VC++ in the Visual Studio IDE.


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