1999-08-04

Release Notes   
-------------
The Standard C++ Library v3, or libstc++-2.90.x, is an ongoing
project to implement the ISO 14882 Standard C++ library as described
in chapters 17 through 27 and annex D, as a drop-in replacement
for the current (ARM-conformant) library.

This is the seventh snapshot of the libstdc++ rewrite.  It is still 
incomplet and incorrekt.  

The Standard C++ Library v3, or libstc++-2.90.x, follows an open
development model, attempting to be fully buzzword, bazaar, and GNU
compliant. Full details on participating, including contributor
guidelines, mailing list subscription, mailing list archives,
up-to-date documentation, and various and sundry other details can be
found at the following URL:

  http://sourceware.cygnus.com/libstdc++/


New: 
--- 

- basic_string<char> has passed validation, with the cavet empor noted
  in BUGS. Documentation for string internals has been added to the
  source code. Ryszard Kabatek has optimized and fixed numerous member
  functions, also Alfred Minarik and Vadim Egorov.
- Include-path optimizations.
- The library and testsuite have been made namespace friendly 
  thanks to Alfred Minarik 
- bits/std_cmath.h and math/mathconf tweaks by Gabriel Dos Reis.
- complex, valarray, gslice  work by Gabriel Dos Reis.
- Preliminary port to cygwin by Mumit Khan
- basic_stringbuf was re-implemented to fix problems with ostringstreams.
- ios_base and basic_ios data member optimization/clarification. The
  ios heirarchy now has preliminary facet caching.
- istream::ws, getline, and all extraction operators were fixed and
  have undergone preliminary testing.
- Additional documentation by Phil Edwards.
- Many, many bug fixes.


What doesn't:
-------------
- see BUGS.

 
Build and Install
-----------------
Unpack the tarball using GNU tar; it will create a directory libstdc++-2.90.6.

  tar xfz libstdc++-2.90.6.tar.gz

It's recommended that you create a separate build directory apart from
the source directory for the building of the library: this is optimal,
and will be assumed for the rest of the instructions. (It is possible
to configure/build in the same directory.) Call this build directory
(say) bld-libstdc++, and cd into it:

  mkdir bld-libstdc++
  cd    bld-libstdc++

You must have a recent snapshot release of gcc built (tested with
gcc-2_95), and massaged your PATH variable so that it is used for the
building of the library. Run configure; for example, using bash:

  ../libstdc++-2.90.6/configure --prefix=${PWD%/*}/H-libstdc++

Then 

  make
  make install

To check the status of your build, type

  make check

or this, to check the installed library:

  make check-install

This will create (according to the above configure arguments) a directory
H-libstdc++ containing 

  lib/
  include/g++-v3/
    bits/
    backward/
    ext/

To link against that you can say, for example,

  LIBINC=$prefix/include/g++-v3
  g++ -Wall -I$LIBINC -L$prefix/lib foo.cc -o foo

where prefix is set to the full name of your H-libstdc++ directory.
If you want the SGI STL extensions (e.g. hash tables) you can add
  -I$LIBINC/ext 
and/or 
  -I$LIBINC/backward

To run it, you will need to set LD_LIBRARY_PATH in your environment
correctly, so that the shared library for libstdc++ can be found and
loaded. (Or, you can compile with -static to link statically if you
are debugging or would rather not deal with the extra bits for shared
libraries.)

To set LD_LIBRARY_PATH try this (again, assuming bash):

  LD_LIBRARY_PATH=$prefix/lib foo


Contact:
--------
Places have changed from previous snapshots.  The web page, which has
information about joining the mailing list and searching its archives,
CVS access, and contribution information is now at:

  http://sourceware.cygnus.com/libstdc++/

Please note that the mailing list has recently moved, and is now
hosted on sourceware.cygnus.com. (The web site above has the most
up-to-date info.)
   
Obtain the library snapshot via ftp (including these release notes) from

  ftp://sourceware.cygnus.com/pub/libstdc++/

The library is maintained by Benjamin Kosnik, Nathan Myers, Gabriel
Dos Reis, and Ulrich Drepper.  


Development tools:
------------------
You will need a recent version of gcc to compile the snapshot of
libstdc++. The recently released gcc-2_95 works well. In addition, you
may need up-to-date tools for modifying Makefiles and regenerating
configure scripts: automake (version 1.4 and above works nicely) and
autoconf (version 2.13 and higher). Please see the website for more
info on where to obtain these additional tools.

For the adventurous, testing may be done with different flags than the
current defaults. More information and a commentary on how to to this
can be found here:
http://sourceware.cygnus.com/ml/libstdc++/1999-q3/msg00066.html

If you compile programs -fnew-abi -fno-honor-std, uses of RTTI and 
certain other language features will link only if you build your 
compiler's libgcc using the same flags.  (The defaults use the old abi.)  
Using -fnew-abi offers real benefits, but note that it is not stable: 
later snapshots will *not* be binary-compatible with code compiled with 
older snapshots.

Some fun flags to try might include combinations of:

CXXFLAGS=  -g -Wall -O3 -fstrict-aliasing -ansi -fsquangle \
	   -fhonor-std -fnew-exceptions -fvtable-gc -ffunction-sections
CXXDEFINES= 
CXXINCLUDE= -I$LIBINC/std -I$LIBDIR -I$LIBINC/stl 



