*** Major changes in libio for egcs:

* Better support for Linux.

* Dejagnu testsuite.

*** Major changes in libio version 2.7.0:

* The data representations of _IO_FILE and streambufs have been modified.
  The layout of the jump-table table _IO_jumps_t has been re-arranged
  to match that of a virtual function table of a streambuf.  Therefore,
  we no longer need a separate _IO_FILE::_jumps pointer;  instead it can
  be shared with the virtual function table pointer.  In addition to
  saving space, this also removes the overhead when double indirection
  was needed, and there are many simplificatons (e.g. we no longer need
  the builtinbuf class.

* The streambuf::uflow virtual has been added, to match the standard.

* The ifstream, ofstream, and fstream classes now include the filebuf
  as a member, rather than being pointed to it.  Various related changes.

* Version number changed to generally follow libg++ (and gcc).

*** Major changes in libio version 0.66 (released with libg++ 2.6.1):

* Some documentation and an example in iostream.texi on how to derive
 your own class from streambuf.

* New functions added to stdio:  getline, detdelim, snprintf, vsnprintf.
  This is for compatibility with the GNU C library.

*** Major changes in libio version 0.65 (released with libg++ 2.6):

* _IO_getline and streambuf::sgetline no longer write a '\0' at the end.

* A number of improvements to get closer to the ANSI/ISO C++ working
paper, such as:
- Added (preliminary support for) new ANSI streambuf::uflow virtual.
- Added istdiostream and ostdiostream classes.
- Added ostream::operator<<(bool) and istream::operator>>(bool&).

* More robust (and faster) initialization and cleanup of standard streambufs.

* Many small bug fixes, portability improvements, and random enhancements.

*** Major changes in libio version 0.63 (released with libg++ 2.5.3):

* There is a g++ bug that causes inconsistent name mangling for the
assembler name of the virtual function table for the istream class.
A work-around has been put into streambuf.h, which will make g++
always do the right thing.  Note that this may require you to
recompile programs that were incorrectly compiled by g++.

* Functions that do printf-style formatting to the unbuffered
streams have been optimized to write to a temporary buffer.

