[cfe-dev] [libcxx] Handling multi-platform configuration.

Martin Sebor msebor at gmail.com
Sat Dec 11 13:31:59 PST 2010


The stdcxx configuration machinery is very simple and quite
powerful. The library itself has been ported to dozens of
compiler and operating system combinations (including Cygwin).
Portability was one of the major goals of the implementation
back when Rogue Wave was selling it and I think we did a good
job there.

Unfortunately, the library hasn't been touched in a couple of
years and there are only beginnings of C++ 0x support. I've
been busy with my day job and the ASF process makes it hard
for new people to start contributing changes to it (you have
to submit seveal substantial patches over a period of weeks
or even months to get commit privileges).

The C++ 0x effort is substantial, but it's far from a complete
rewrite. The iostream and localization libraries alone are
multi-year projects (as a data point, IIRC, a complete locale
rewrite took Rogue Wave close to 2 years to finish). That said
it's always nice to be able to start from scratch and not have
to worry about compatibility.

I'd love to see someone revive stdcxx and implement C++ 0x.
I'd even be willing to help, but I don't see it happening at
the ASF. The project would probably have to be forked and done
somewhere else.

FWIW, the ASF is only licensing stdcxx from Rogue Wave. I don't
know much about these things but it seems that it should be
possible to get another free license from Rogue Wave for this
project. Alternatively, since without active development the
ASF is going to have to retire the project, it might be possible
to work out some sort of an arrangement with them whereby they
give up their license to keep the project alive. Being the VP
of the project at the ASF I could try to facilitate it.

Martin

On 12/10/2010 08:20 PM, "C. Bergström" wrote:
> Michael Spencer wrote:
>> I recently started porting libc++ over to MinGW and have discovered
>> just how complicated configuration is going to be. Even ignoring
>> locale, there are huge differences in support and style between MinGW,
>> the Microsoft C Runtime, POSIX.1-2008 (IEEE Std 1003.1™-2008 (The Open
>> Group Technical Standard Base Specifications, Issue 7)), and all the
>> other platforms out there. For example, the version of cerrno I came
>> up with (attached) that is standard compliant is about 800 lines long
>> just to properly deal with all the errno.h macros that aren't in the C
>> standard and various platforms don't define, but C++0x requires. This
>> is simple compared to some of the other configuration issues we have
>> to deal with, like locale.
> Hi Michael,
>
> This is *exactly* why it would be greatly appreciated if people would
> help improve stdcxx [1] instead of trying to just write everything from
> scratch. Regardless whatever superficial evaluation has been done I'd
> kindly ask any volunteers to reevaluate this.
>
> Martin, on cc, who worked on this codebase for 10 years and is on the
> C++ standards committee can chime in if he likes.
>
> (Apologies for not being able to help contribute a direct solution to
> your above problem.)
>
> Best,
>
> ./C
>
> [1] http://stdcxx.apache.org/




More information about the cfe-dev mailing list