Please sent comments, problem reports, suggestions, etc. to dietmar.kuehl@claas-solutions.de.
gunzip cxxrt-This process should create the library libcxxrt.a in the directory cxxrt-.tgz tar xvf cxxrt- .tar cd cxxrt- ./configure make
You also need a basic C++ library shipping with your compiler for
the stuff from the language support library (all compilers I have
seen ship at least with this library). Notably for gcc you need
to create this library with support for namespace std enabled (either
-fhonor-std or -fnew-abi; if you choose the former, you need to adjust
the options used in the Makefile in the src directory: the default is
-fnew-abi). To get the corresponding library you can either fiddle
with the options when installing gcc or you can use the stuff from the
directory cxxrt-
Once you have compiled the cxxrt library and if necessary the language
support library, you can test the library on your platform with the
testsuite shipping with the library. Just type
An advantage of this implementation over all implementations I have
compared it with is that it compiles fairly fast (that is, at least
the IOStream section). This is because the declaration and definitions
of the IOStream and locales library are separated and the commonly
used template instantiations are compiled into a library. This does
not rule out the use of other instantiations but to use these, it is
necessary to define the macros _CXXRT_IOSTREAM_IMPL and
_CXXRT_LOCALE_IMPL before including any of the standard headers.
Another advantage of cxxrt is that this implementation causes only relatively
few warnings even in highest warning mode. Other implementations normally
produce large numbers of warning for the various headers.
The areas where there is no implementation yet are relatively rarely
used and there is a fair chance that you will not run into features
which are not yet implemented. If you happen to need an unimplemented
feature or if you run into a bug, just contact me and I will try to
fix the problem as soon as possible.
Where the code is too slow, it would be rather interesting to get test
case to create benchmarks for use during optimizations. Some of the
stuff is already fairly good and I'm convinced that I can get other
areas also very fast. Currently I compare the IOStream implementation
with the stdio implementation and consider the code to be fast if the
IOStream version is faster than the equivalent stdio version. In some
areas like formatting integers it is at least quite close (writing to
/dev/null is faster than stdio, writing to a regular file is slower..).
For mt-savety of the IOStream and the locale library it would first
be necessary to define what this is supposed to mean. The current
implementation does not care about multi threading at all which is
probably a bit too optimistic but exactly what is wanted for single
threaded applications. I haven't yet decided on a strategy to get the
code multi-threading save.
If problem reports are received which turn out to be problems with
the SGI STL part of the library, these will be forwarded to the
maintainer of this library: It is not intended at all that cxxrt
becomes a branch of SGI STL and future releases of SGI STL will be
integrated with cxxrt library (unless the permission on the use of the
corresponding software is changed). Since some changes to the SGI STL
were necessary to integrate it with the IOStreams and locales library,
it is distributed with cxxrt.
make check
in the directory cxxrt-Is This a Conforming Implementation
No, it is not. There are still components not yet implemented. However,
the components missing are probably rarely used because they became
available with other library only relatively recently. More precisely,
some of the localization stuff is not yet completely implemented. It
is implemented as far as it is needed to get the IOStream library
running but not much more. There are some other functions also missing
(eg. the extractors and inserters taking stream buffers as arguments)
but most of the standard C++ library is up and running.
What is Still to be Done?
Here is a brief overview of what is to be done to make this a really
useful library:
The order in which the open issues will be resolved probably depends
on requests received. My personal focus will probably soon turn to
the executable size of statically linked executables to provide data
for the performance working group of the standardization committee.
Why Should this Library be Used
So, it is still incomplete, not optimized, not mt-save, and probably
buggy. Why should it still be used?
Future Plans
There are several implementations of the standard C++ library available.
Currently I know of at least three commercial vendors (Dinkumware,
Modena, RogueWave) which are already available and I know of two other
free implementations under preparation (Cygnus, SGI). This is though
competition. To stay in the competion, the plan is simply to provide
the best implementation :-) Of course, what is best depends on the eye
of the beholder. Here are the plans how to improve this implementation:
Most of these issues will be addressed after completing the
library. However, if you are interested in a specific feature please
contact me, to potentially shift the priority.
Bugs
Please sent problem reports to dietmar.kuehl@claas-solutions.de.
Note that each problem report might be turned into a test case which
will be distributed by future versions of the library unless you cleary
state that you do not want this. In this case it will be used only
internally as a test case. However, any code in problem reports should
be short and demonstrate only the problem. Before submitting a problem
report, please look at http://www.claas-solutions.de/cxxrt/bugs.html
to find out whether the problem is already known (potentially, there
is even a fix already available). Here is a brief guide what should
be in a bug report:
Do not hesitate to sent problem reports even if you cannot provide
all the information asked above! Just try to make sure that the bug is
indeed in the cxxrt library and try to provide as acurate information
as possible. Problem reports are very important because it is often
hard to foresee all potential uses of a library but once a test case is
available it is normally relatively easy to fix problems with unexpected
uses. Thus, all problem reports are welcome!
Support
Contact dietmar.kuehl@claas-solutions.de for information on
support of cxxrt. If possible, please indicate what kind of support
you want.
Download
The latest releases and snapshots are available from
http://www.claas-solutions.de/cxxrt/download.html.