Apache Kills Off Its C++ Standard Library
phoronix.com
phoronix.com
http://codingrelic.geekhold.com/2008/11/six-million-dollar-l...
By default. Unlike in Windows (from what I understand), in Unix-like OSes (Linux, the BSDs, probably others) it's entirely possible for user programs to talk directly to the kernel via a published API.
In Linux, C programs can use the syscall(2) function and x86 and x86-64 assembly language programs can use either the sysenter opcode or the int 0x80 interface, which is why linux-gate.so.1 exists and is mapped into every process: The kernel determines which method at boot and so userspace code (inclusive of libc) can't know in advance, so it uses the linux-gate.so.1 interface, instead.
http://www.trilithium.com/johan/2005/08/linux-gate/
http://articles.manugarg.com/systemcallinlinux2_6.html
http://stackoverflow.com/questions/9506353/how-to-invoke-a-s...
In fact, I think among popular languages, there are more of them with multiple competing implementations than there are with just one. Java, C, C++, Objective-C, C#, Fortran, JavaScript, Common Lisp, and Scheme all have multiple implementations, with their own implementations of the standard library.
The main exceptions are the collection of "scripting languages" which got popular in the late '90s and early 2000s like Perl, Python, Ruby, and PHP, which have mostly grown communities around a single implementation. But Ruby and Python at least (I'm not sure about the others, being less familiar with them) have been working towards multiple implementations and at least somewhat standardizing the core language and library to make multiple implementations more viable.
As for other languages with several standard libraries: a while ago that was a frequent criticism of D -- there were two competing standard libraries, which caused some division in the community.
It had a standard library, and a non-standard library that was more popular than the standard one, and they were not compatible at all.
The reason it caused the division at community is that the ones that you could not use both on the same project, this meant that for a while you had two "D" languages that were separate, libraries made with one did not worked with the other...
Although, not all of Tango (the non-standard one) is available in D2/Phobos already. For example, Phobos has XML [2,3] stuff, but Tango's is supposed to be better [0]. Port is ongoing [1].
[0] http://dotnot.org/blog/archives/2008/03/12/why-is-dtango-so-... [1] https://github.com/SiegeLord/Tango-D2 [2] http://dlang.org/phobos/std_xml.html [3] http://forum.dlang.org/thread/igmfgrfwzeqpwafeilfi@forum.dla...
This document was developed jointly by an informal
industry coalition consisting of (in alphabetical order)
CodeSourcery, Compaq, EDG, HP, IBM, Intel, Red Hat, and
SGI. Additional contributions were provided by a variety of
individuals.
...
In general, this document is written as a generic
specification, to be usable by C++ implementations on a
variety of architectures.
http://refspecs.linux-foundation.org/cxxabi-1.83.htmlAs most OSs tend to be written mostly in C, it is natural that C ABI == OS ABI.
In the few cases where the OS was written in other languages, like the mainframe systems, the early 80's OS done in Pascal dialects (Mac OS), Modula-2 (Lillith), Assembly (MS-DOS/CP-M) and many others to list here, there was no C ABI to speak of.
The obvious win was that I knew the standards backward and forward, especially which ones were thread safe when that became important. It also helped with the same sort of interviews where I'd write the function prototype and then work through the implementation with the candidate.
The other huge win for me was that I ended up developing an appreciation for automated test harnesses so I could implement without bias from the control.
I'm not sure I could recommend implementing your own c++11 library (other than as an embedded subset for resource-constrained systems) but it can be fun to go through and do K&R as a bit of kata.
This isn't all that rare in other languages. Python has a standard implementation, but there are others, e.g. http://pypy.org/
Conversely, the fact that the Apache library hadn’t been updated since 2008 probably means is that it’s not C++11 compliant at all, significantly behind most vendor libraries, and the effort for upgrading would be fairly significant.
But as any developer that deployed applications across multiple JVMs will tell you, there are a few surprises along the way.
Sadly right now C++11 library features will lag a bit because not all compilers support them.
https://forums.oracle.com/thread/2293516
I wonder what they'll do now. The sensible thing would be to adopt clang and libc++, so we can be reasonably certain they won't do that.
Are they planning on shipping this runtime with the OS eventually?
Last time I used SunPro was in Solaris 2.6 / 7 around 1999-2001, hence my question.
(05/11)
No changes. Stdcxx continues to be dormant. There was a flurry of emails
on the stdcxx-dev list suggesting continued interest from the same two
parties (ARM and Sun) but no new work.
---The Attic is where retired Apache projects go.
(02/2012)
A vote to move stdcxx to the Attic failed. The majority of stdcxx
contributors voted in favor of continuing to maintain the project.
Several inactive committers stepped up to help with the project.
---I do not think that this was a surprise. Regular status reports stopped completely after February 2012. It's also notable that Chris Bergström was proposed for the new chair position, see http://mail-archives.apache.org/mod_mbox/stdcxx-dev/201306.m...
2) In 2005, some existing C++ standard libraries did not follow the standard very well.
http://www.stlport.org/news.html
Apache project looks like "me too" one.