home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 7
/
FreshFishVol7.bin
/
bbs
/
gnu
/
libg++-2.6-fsf.lha
/
libg++-2.6
/
libg++
/
NEWS
< prev
next >
Wrap
Text File
|
1994-07-13
|
23KB
|
536 lines
SUMMARY OF RECENT MAJOR CHANGES to LIBG++.
(Also check ../libio/NEWS.)
*** Major changes in libg++ version 2.6:
* There is a new set of bit*.c and bit*.h files in the src directory.
This is a preliminary version of language-independent library for
general low-level manipulation of bitstrings. The BitString class
has been (partially) re-written to use the new functions.
(What kind of copyright to use for this library has not been
decided yet. It will at least be OK to treat it as LGPL code.)
*** Major changes in libg++ version 2.5:
* The iostream directory is gone. It has been replaced by ../libio.
The latter is a major re-write. One major change is that libiostream.a
(which is built in ../libio) can be used indendently of libg++,
which is interesting because you may find its licensing conditions
less onerous. See ../libio/README.
Also, the guts of the code has been re-written in C instead of C++.
This is so that you can build a C stdio implementation without
a C++ compiler (as was needed before). However, this is not 100% done.
* There is (preliminary) iostream manual (in ../libio/iostream.texi).
* The files in libg++/g++-include are now obsolete. Instead, it
is the compiler's responsibility to generate "fixed" copies of your
existing C header files (such as /usr/include/stdio.h). These copies
(together with a g++ compiler modification) provide C++ access
to the standard C library. See the fixproto script in the gcc-2.5
distribution.
*** Major changes in libg++ version 2.4:
* The configuration scheme has been largely re-vamped.
Instead of the definitions that are common to all (or many) of
the Makefiles being duplicated in each Makefile.in, they have
now been moved into a shell script libg++/config.shared, which
generates these standard definitions and rules.
Most of libg++/tests/Makefile, which had a lot of regularity,
is now generated by the libg++/tests/Makefile.sh shell script.
Also libg++ no longer uses configure's 'subdirs' mechanism.
Instead, it uses the 'configdirs' mechanism that most Cygnus
packages use. This means that each directory has its own
configure.in, and each directory can be independently re-configured.
* Lots of fixes have been made so libg++ can be compiled by compilers
other than g++ (specifically cfront), though there are still lots of
warnings. You may still have to edit some Makefiles etc; this
will probably become easier in the next release. Many of the
changes involved not depending on g++ extensions. However, some changes
turned out to be that libg++ was depending on bugs in g++'s overload
resolution. These bugs in g++ are being fixed; this will cause some
difficulties for libg++. In some cases, we have decided that the
cleanest fix is removing some libg++ functionality. Specifically,
the coersions Integer::operator long and Integer::operator double
have been replaced by explicit methods Integer::as_long and
Integer::as_double. This means you may need to change your code.
Please let us know if this is problematial.
*** Changes in libg++ version 2.3:
* iostream classes use multiple inheritance and virtual base classes.
This is a little more complicated and slightly less efficient,
but saves a slight amount of code duplication. More importantly,
it improves compatibility with other iostream implementations.
* A few of pseudo-template classes have been converted to use
real templates. The style used emphasizes sharing code for
multiple template instatiations at the cost of somewhat more
complex internal logic. No promise is implied about when/if
the remaining ones will be converted. Using the template classes
assumes gcc-2.3 or similar compiler.
* Added stdiobuf class which provides a streambuf wrapper around
a stdio (FILE*). This can be useful when mixing C and C++ code.
* streambuf sputn/sgetn virtuals have been made renamed to xsputn/xsgetn,
and sputn/sgetn addedas inline methods. This change is to be compatible
with AT&T and ANSI; it could require changes to user code if you have
written your own streambuf sub-classes.
* New utils/c++-mode.el (for editing C++ in emacs).
* Lots of little fixes all over.
*** Changes in libg++ version 2.2:
* Accurate input and output of floating-point numbers
* 'make clean' and its variants have been made more consistent.
* Improved portability (SVR4, NeXT, ...)
*** Changes in libg++ version 2.1:
* "Class" include files in g++-include moved to src
Those include files that are just wrappers around C header files
(e.g. signal.h) remain in g++-include, while the header files
that are specific to libg++ (or C++) have been moved to src.
If your system includes "C++-ready" C header files (as in SVR4 or
Linux), you don't need to use the wrappers in g++-include.
* Portability
A lot of effort has gone into making libg++ more portable.
Code that depends on internals of "traditional" implementations
had been made more portable. The 'libiberty' library is incorporated
into libg++; this supplies (if needed) many functions that may be
missing on particular hosts.
* Auto-configuration
New scripts automaticly figure out various properties of the
system (and compiler) you use. While these scripts are not
foolproof, the intent is that on most systems you will no longer
have to edit Makefiles or build special configuration files.
* Iostream bug-fixes
There have been numerous bug-fixes and enhancements in the
iostream code. Lots of rough edges in the streambuf and filebuf
classes have been fixed.
There are still some rough edges of the protocol (as in what the
streambuf class should do, and what sub-classes such as filebuf
should handle).
* iostream enhancements for lexing/parsing.
You can now create a 'streammarker' object, which is a "remembered"
position is a streambuf. Later, you can backtrack to that position.
This is supposed to work, even if the streambuf is unbuffered and
otherwise unseekable, because the streambuffer never throws away
any data following an extant streammarker. This feature will be
used to build various scanning/parsing facilities (with backup).
(See iostream.texi for an example.)
* stdio library
Now supports all of ANSI's functionality.
*** Changes in libg++ version 2.0:
* iostream classes
The major change is that input/output uses the new iostream library.
The design is based on (but not identical to) iostreams from
AT&T C++ release 2.x, and the ANSI X3J16/WG21 draft C++ standard.
The iostream classes replace the old stream. The new
package provides some compatibility hooks. Including the
obsolete <stream.h> (or defining _STREAM_COMPAT) makes
more obsolete methods and features available. However,
you will probably have to change your code if you have used
any libg++-specific extensions (such as the File class).
If you want stick with the old stream classes, change the
definition of IO_DIR in Make.defs (to old-stream). You will
also need to 'make depend' in directories that contain depend,
and then re-configure everything. Note that the old-stream
classes are *not* supported and *will* go away in a future release.
* Use g++ version 2 features (if available)
The main one is that an include file g++-include/FOO.h
that is a wrapper for a standard C include file will now
#include_next <FOO.h> instead of #include "/usr/include/FOO.h".
This provides more flexibility wrt to using alternate C libraries
(such as GNU libc), but it is not without its own problems.
For example, if you compile libg++.a with a g++ that has old
incompatible g++-include files in its path, these will be
read (and then in turn read the /usr/include file). If there
are conflicts, you can remove the previously installed include files,
or try something like 'make XTRAFLAGS=-I/usr/include' (or whatever
include path gcc uses by default).
* Major Makefile changes.
You can now 'make' from any subdirectory.
* Use of 'configure'.
* Copyrights changed to use the Library license version 2.0.
(Some files have not been updated yet; we'll try to finish it for 2.1.)
* The prototype class SplayNode was put into a separate include file
(g++-include/gen/SplayNode.hP). This is to avoid duplication.
It will require you to generate the appro