[LLVMdev] Windows strategy?

Mikael Lyngvig mikael at lyngvig.org
Mon Jun 11 10:52:49 PDT 2012


Hi,

[Synopsis: Mikael thinks Windows support is overlooked and that this is a
strategic error.  You can skip to the next mail now, if you'd like :-)
 Long, long, long mail follows.]

Before I go on, I'd like to informally apologize for my many postings to
this mailing list.  I have no intentions of spamming it, but I still feel a
need to grasp certain things that seem to be implied by the documentation
or perhaps not described at all.  Also, as a self-appointed LLVM/Clang
Windows Evangelist, I'd like to keep Windows in your mental horizon so that
we one day have full support for at the very least both 32-bit and 64-bit
variants of Clang using the respective version of MinGW.

Very briefly put, I came from a background of Windows tools: OpenWatcom C++
(used to be the best optimizer on Windows), Microsoft Visual C++, and back
in the ancient days of early DOS and NT, JPI, Borland, and Metaware C++.  I
had next to no experience with the MinGW toolchain and had only very little
experience with actual use of GCC.  So everything was pretty overwhelming
at first.  I started using C++ in 1990 so I am not exactly a newbie.  I
have been off the C++ path for a decade, though, because better languages
have popped up (Python, then C#).  I knew nothing about CMake and was, like
most Windows users are going to be, a stranger to the whole ordeal of
Unix-on-Windows (incl. Cygwin and MinGW).

I have so far tried pretty much every path in the maze that LLVM's support
of Windows is: I*ve tried building with MSVC, I've tried building with
Mingw64, I've tried building with a 64-bit edition of Clang, and now I am
down to the last desirable choice: 32-bit MinGW.  My 32-bit Clang++ is
building as we speak.  I tried with a 64-bit build of Clang, built using
MinGW64, but it fails on some linker errors (the report about that
erronously sent to this mailing list earlier today), so I hope, pray, and
expect that at the very least, the 32-bit Clang++ built from MinGW32 will
work as expected (that is, it is possible to compile and link and execute a
non-trivial program using Clang32).

But the past two weeks have been spent on setting up a Windows 7 x64
MinGW64 buildbot slave and then working a bit on my own project (I'm
translating 25 KLOC of C# to C++ so as to be able to use LLVM as my
backend) and then playing around with Clang.

My view is that the aspiring Clang++ Windows user is in for a nightmare
reverse walk through a night time minefield with both eyes shut.

So, I am wondering if there is anything that can be done to help this
situation?   I'd love great ideas from you guys, even though I am getting
rather used to getting no responses to my mails ;-)  I am willing to invest
considerable amount of time into helping with this, I just cannot do
serious C++ coding at this point because I am yet too rusty in C++ and
because I am busy, busy, busy with my own project (a compiler that uses
LLVM as its backend).

I propose these things:

1. Priority is put into making MinGW64 work, if the problem I reported
earlier today is related to LLVM/Clang (link time errors related to some
section).  This is not that important, though.
2. If nobody (including licenses) object to it, I'd like to make two
unofficial Windows distributions of Clang: clang-3.2-win32 and
clang-3.2-win64.  Both would make use of the MinGW toolchains and both
would be shipped as ready-made 7-zip archives that could be extracted
anywhere and used directly from there without further installations.  I am
thinking of including the MinGW header files (once the warnings reported
when they are included are gone) so as to produce a complete retail product
that can be used without any technical knowledge of the LLVM and Clang
components. I think this would bring lots and lots of attention to LLVM and
Clang, and then hopefully pay off in skilled developers joining the cause.
 I am also thinking of setting up an automated build system so that they
can be built once a day and automatically be published on my own website.
3. I will eagerly hunt down every opportunity to document Windows specifics
a bit more.  I have received no feedback, whatsoever, on my Windows build
document so I take it that it is not to the dev group's liking.  So be it.
 Life goes on.  But how about a Windows section in the FAQ?  The word
Windows isn't even mentioned?!  Most of the stuff I've ran into ought to be
easy to describe over the course of a couple of hours and then newcomers
would save days and weeks of frustrations, dead ends, and mines exploding
around them.
4. Please give me your ideas for how I can contribute to the Windows
support without actually hacking on LLVM and Clang (yet)!

I know that you guys are awesomely skilled and are really great at what you
are doing.  No doubt about that.  But I think you lack marketing/strategic
thinking.  Think of it a bit like I do:

1. 97.7 percent of the world's computer users are Windows users.
2. 2 percent of the world's computer users are Linux users.
3. 0.3 percent of the world's computer users use other Unices.

The numbers are grasped out of thin air so as to illustrate my point:
Windows ought to be a very high priority because it will eventually pay off
handsomely by increasing the size of the developer group by a factor of
ten, if only you play the cards right and offer neat, easy-to-use,
convenient Windows support.  Besides, it is my impression that the
non-Windows support is in general pretty mature.  Clang could very well
step in as THE alternative to Microsoft Visual C++.  OpenWatcom is slowly
dying (very poor ISO C++ support) and Intel's C++ compiler is only used by
specialists, as far as I can tell.

I suspect that some of you might hold the view that Windows users are noobs
(something I've worked hard to confirm ;-) and that the really great guys
are all doing Unix.  Not so.  Statistically speaking, the vast majority of
coders out there are on Windows, so statistically speaking, the vast
majority of the truly brilliant dev people are on Windows.  So it makes a
lot of sense trying to attract them!  Not that I am implying that I myself
are anywhere near brilliant.  I'm just saying that overlooking Windows
might be the greatest strategical debt you have incurred yet.

P.S. Please think of the above as a wake-up call and my dedication to the
great future that LLVM/Clang should have.


Cheers,
Mikael
-- Love Thy Frog (yes, frogs are worth loving, even though most people
don't seem to grok that).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120611/642740a0/attachment.html>


More information about the llvm-dev mailing list