home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / GCC / GCC258_2.LHA / gcc / NEWS_libg++-2.5.3 < prev    next >
Encoding:
Text File  |  1993-12-27  |  22.2 KB  |  528 lines

  1. SUMMARY OF RECENT MAJOR CHANGES to LIBG++.
  2. (Also check ../libio/NEWS.)
  3.  
  4. *** Major changes in libg++ version 2.5:
  5.  
  6. * The iostream directory is gone.  It has been replaced by ../libio.
  7. The latter is a major re-write.  One major change is that libiostream.a
  8. (which is built in ../libio) can be used indendently of libg++,
  9. which is interesting because you may find its licensing conditions
  10. less onerous.  See ../libio/README.
  11.  
  12. Also, the guts of the code has been re-written in C instead of C++.
  13. This is so that you can build a C stdio implementation without
  14. a C++ compiler (as was needed before).  However, this is not 100% done.
  15.  
  16. * There is (preliminary) iostream manual (in ../libio/iostream.texi).
  17.  
  18. * The files in libg++/g++-include are now obsolete.  Instead, it
  19. is the compiler's responsibility to generate "fixed" copies of your
  20. existing C header files (such as /usr/include/stdio.h).  These copies
  21. (together with a g++ compiler modification) provide C++ access
  22. to the standard C library.  See the fixproto script in the gcc-2.5
  23. distribution.
  24.  
  25. *** Major changes in libg++ version 2.4:
  26.  
  27. * The configuration scheme has been largely re-vamped.
  28. Instead of the definitions that are common to all (or many) of
  29. the Makefiles being duplicated in each Makefile.in, they have
  30. now been moved into a shell script libg++/config.shared, which
  31. generates these standard definitions and rules.
  32.  
  33. Most of libg++/tests/Makefile, which had a lot of regularity,
  34. is now generated by the libg++/tests/Makefile.sh shell script.
  35.  
  36. Also libg++ no longer uses configure's 'subdirs' mechanism.
  37. Instead, it uses the 'configdirs' mechanism that most Cygnus
  38. packages use.  This means that each directory has its own
  39. configure.in, and each directory can be independently re-configured.
  40.  
  41. * Lots of fixes have been made so libg++ can be compiled by compilers
  42. other than g++ (specifically cfront), though there are still lots of
  43. warnings.  You may still have to edit some Makefiles etc; this
  44. will probably become easier in the next release.  Many of the
  45. changes involved not depending on g++ extensions.  However, some changes
  46. turned out to be that libg++ was depending on bugs in g++'s overload
  47. resolution.  These bugs in g++ are being fixed; this will cause some
  48. difficulties for libg++.  In some cases, we have decided that the
  49. cleanest fix is removing some libg++ functionality.  Specifically,
  50. the coersions Integer::operator long and Integer::operator double
  51. have been replaced by explicit methods Integer::as_long and
  52. Integer::as_double.  This means you may need to change your code.
  53. Please let us know if this is problematial.
  54.  
  55. *** Changes in libg++ version 2.3:
  56.  
  57. * iostream classes use multiple inheritance and virtual base classes.
  58. This is a little more complicated and slightly less efficient,
  59. but saves a slight amount of code duplication.  More importantly,
  60. it improves compatibility with other iostream implementations.
  61.  
  62. * A few of pseudo-template classes have been converted to use
  63. real templates.  The style used emphasizes sharing code for
  64. multiple template instatiations at the cost of somewhat more
  65. complex internal logic.  No promise is implied about when/if
  66. the remaining ones will be converted.  Using the template classes
  67. assumes gcc-2.3 or similar compiler.
  68.  
  69. * Added stdiobuf class which provides a streambuf wrapper around
  70. a stdio (FILE*).  This can be useful when mixing C and C++ code.
  71.  
  72. * streambuf sputn/sgetn virtuals have been made renamed to xsputn/xsgetn,
  73. and sputn/sgetn addedas inline methods.  This change is to be compatible
  74. with AT&T and ANSI; it could require changes to user code if you have
  75. written your own streambuf sub-classes.
  76.  
  77. * New utils/c++-mode.el (for editing C++ in emacs).
  78.  
  79. * Lots of little fixes all over.
  80.  
  81. *** Changes in libg++ version 2.2:
  82.  
  83. * Accurate input and output of floating-point numbers
  84.  
  85. * 'make clean' and its variants have been made more consistent.
  86.  
  87. * Improved portability (SVR4, NeXT, ...)
  88.  
  89.  
  90. *** Changes in libg++ version 2.1:
  91.  
  92. * "Class" include files in g++-include moved to src
  93.  
  94. Those include files that are just wrappers around C header files
  95. (e.g. signal.h) remain in g++-include, while the header files
  96. that are specific to libg++ (or C++) have been moved to src.
  97. If your system includes "C++-ready" C header files (as in SVR4 or
  98. Linux), you don't need to use the wrappers in g++-include.
  99.  
  100. * Portability
  101.  
  102. A lot of effort has gone into making libg++ more portable.
  103. Code that depends on internals of "traditional" implementations
  104. had been made more portable.  The 'libiberty' library is incorporated
  105. into libg++; this supplies (if needed) many functions that may be
  106. missing on particular hosts.
  107.  
  108. * Auto-configuration
  109.  
  110. New scripts automaticly figure out various properties of the
  111. system (and compiler) you use.  While these scripts are not
  112. foolproof, the intent is that on most systems you will no longer
  113. have to edit Makefiles or build special configuration files.
  114.  
  115. * Iostream bug-fixes
  116.  
  117. There have been numerous bug-fixes and enhancements in the
  118. iostream code.  Lots of rough edges in the streambuf and filebuf
  119. classes have been fixed.
  120.  
  121. There are still some rough edges of the protocol (as in what the
  122. streambuf class should do, and what sub-classes such as filebuf
  123. should handle).
  124.  
  125. * iostream enhancements for lexing/parsing.
  126.  
  127. You can now create a 'streammarker' object, which is a "remembered"
  128. position is a streambuf.  Later, you can backtrack to that position.
  129. This is supposed to work, even if the streambuf is unbuffered and
  130. otherwise unseekable, because the streambuffer never throws away
  131. any data following an extant streammarker.  This feature will be
  132. used to build various scanning/parsing facilities (with backup).
  133. (See iostream.texi for an example.)
  134.  
  135. * stdio library
  136.  
  137. Now supports all of ANSI's functionality.
  138.  
  139. *** Changes in libg++ version 2.0:
  140.  
  141. * iostream classes
  142.  
  143. The major change is that input/output uses the new iostream library.
  144. The design is based on (but not identical to) iostreams from
  145. AT&T C++ release 2.x, and the ANSI X3J16/WG21 draft C++ standard.
  146.  
  147. The iostream classes replace the old stream.  The new
  148. package provides some compatibility hooks.  Including the
  149. obsolete <stream.h> (or defining _STREAM_COMPAT) makes 
  150. more obsolete methods and features available.  However,
  151. you will probably have to change your code if you have used
  152. any libg++-specific extensions (such as the File class).
  153.  
  154. If you want stick with the old stream classes, change the
  155. definition of IO_DIR in Make.defs (to old-stream).  You will
  156. also need to 'make depend' in directories that contain depend,
  157. and then re-configure everything.  Note that the old-stream
  158. classes are *not* supported and *will* go away in a future release.
  159.  
  160. * Use g++ version 2 features (if available)
  161.  
  162. The main one is that an include file g++-include/FOO.h
  163. that is a wrapper for a standard C include file will now
  164. #include_next <FOO.h> instead of #include "/usr/include/FOO.h".
  165. This provides more flexibility wrt to using alternate C libraries
  166. (such as GNU libc), but it is not without its own problems.
  167. For example, if you compile libg++.a with a g++ that has old
  168. incompatible g++-include files in its path, these will be
  169. read (and then in turn read the /usr/include file).  If there
  170. are conflicts, you can remove the previously installed include files,
  171. or try something like 'make XTRAFLAGS=-I/usr/include' (or whatever
  172. include path gcc uses by default).
  173.  
  174. * Major Makefile changes.
  175. You can now 'make' from any subdirectory.
  176.  
  177. * Use of 'configure'.
  178.  
  179. * Copyrights changed to use the Library license version 2.0.
  180. (Some files have not been updated yet; we'll try to finish it for 2.1.)
  181.  
  182. * The prototype class SplayNode was put into a separate include file
  183. (g++-include/gen/SplayNode.hP).  This is to avoid duplication.
  184. It will require you to generate the approriate SplayNode file
  185. if you use SplayBag, SplaySet, or SplayPQ.
  186.  
  187. * You can now use inline functions in header files without
  188. having to use either -O or _DUSE_LIBGXX_INLINES.  (The #ifdef
  189. that depended on these has been removed, so inline functions
  190. are inline independent of -O).
  191.  
  192. * Numerous minor bug-fixes and enhancements.
  193.  
  194. *** Changes in libg++-1.39.0 from libg++-1.37.0
  195.  
  196.     * All files use the new g++ #pragma interface / #pragma implementation
  197.       convention, which minimies duplication of `outlined' inlines
  198.       and vtables. This also causes no inlines to be used at
  199.       all when not compiling with `-O', which speeds compilation
  200.       and simplifies debugging.
  201.  
  202.     * Many .h header file names had to be shortened so as to simulaneously
  203.       work with SYSV and with #pragma interface (since .h and .cc file
  204.       base names must match.) Sorry!
  205.  
  206.     * All genclass-able files have been moved to g++-include/gen.
  207.  
  208.     * various and sundry bug fixes, minor enhancements, and/or portability 
  209.         improvements as described in the ChangeLog. 
  210.  
  211. *** changes from libg++-1.36.3 to libg++-1.37.0
  212.  
  213.     * Most utility classes and functions are now in stand-alone .cc and/or .h
  214.       files. This should generate smaller exectuables, and, sometimes
  215.       faster compilation. In particular, istream.h, and ostream.h are
  216.       now separately includable. If you only need one, you don't have
  217.       to get the other.
  218.  
  219.     * The Plex classes now understand `const'. The `changes' and `changed'
  220.       member functions were removed, since it is now possible to
  221.       avoid changes in Plex structures by using const versions.
  222.  
  223.     * class RandomInteger is available, courtesy of John Reidl.
  224.  
  225.     * PlotFile3D, a 3D plot class is in libg++/etc. It will be
  226.       incorporated into libg++ proper for the next release, perhaps
  227.        with a few changes. Thanks to Tom Ngo.
  228.  
  229.     * various and sundry bug fixes, minor enhancements, and/or portability 
  230.         improvements as described in the ChangeLog. 
  231.  
  232.     * The file etc/HINTS is an emacs RMAIL file that contains recent
  233.         bug-lib-g++ list mail and related messages that may be useful.
  234.  
  235.  
  236. *** changes from libg++-1.36.1 to libg++-1.36.3
  237.  
  238.     * `Tmp' classes have been eliminated from Strings, Integers, etc.
  239.        (Via some retuning of the main classes, Tmp classes were found
  240.         to not significantly impact performance one way or the other,
  241.         so they were removed.)
  242.  
  243.     * There is now a version of malloc, directly supporting operator
  244.       new, etc. It may be faster and better suited to C++ applications
  245.       than your libc malloc. You should be able to use it unless you need
  246.       a special malloc for a distributed shared memory environment or
  247.       the like. If you can't use it, edit the appropriate flag in
  248.       the top-level Makefile. I would very much appreciate feedback
  249.       about whether this malloc makes any difference in time or space
  250.       efficiency than whatever you are now using.
  251.  
  252.     * By default, output is now line-buffered. Use the
  253.       NO_LINE_BUFFER_STREAMBUF define in the Makefile to override
  254.  
  255.     * Otherwise, the stream classes remain C++-1.2 compatible.
  256.       C++-2.0-compatible versions are still in the works.
  257.  
  258.     * various and sundry bug fixes, minor enhancements, and/or portability 
  259.         improvements as described in the ChangeLog. 
  260.  
  261. *** changes from libg++-1.35.0 & 1.35.1 to 1.36.1
  262.  
  263.     * various and sundry bug fixes, minor enhancements, and/or portability 
  264.         improvements as described in the ChangeLog. 
  265.  
  266.     * Most everything should now work on most SystemV machines. Let me
  267.         know if they don't.
  268.  
  269.     * genclass now allows an optional prefix to be used instead of type
  270.         name concatenation in order to help minimize filename
  271.         lengths for SYSV users. This is not a great solution, but
  272.         is A solution to filename length problems for SYSV users.
  273.  
  274.     * Some, but not all classes now behave well with respect to 
  275.       the new 2.0 const specifications. Some uncertainties about
  276.       how g++ will interpret gcc-based const function qualifiers
  277.       (to indicate lack of side effects) versus C++-2.0 const member
  278.       functions has held up the conversion of some classes to use
  279.       const in either or both of these ways.
  280.  
  281.     * A version of etags suitable for use with c++ is in etc/
  282.         (courtesy of J. Clark)
  283.  
  284.     * `graph', a unix graph(1) work-alike is in libg++/etc, courtesy
  285.         of Rich Murphey.
  286.  
  287.     * RAVLMap (Ranked AVLs) prototypes.
  288.  
  289.     * The GetOpt class & support has been moved from etc/ into libg++.a
  290.  
  291.     * Streams have been redone to be nearly 100% AT&T 1.2 compatible.
  292.         One minor possible incompatibility exists (ostream<< char)
  293.         that can be eliminated via #define NO_OUTPUT_CHAR at the
  294.         top of stream.h. This is probably necessary in order to
  295.         compile et++. See libg++.texinfo for more details.
  296.  
  297.         The new stream implementation is not particulary pretty.
  298.         Its main virtue is that it avoids some of the worst things 
  299.         about both AT&T streams and old libg++ streams. A much
  300.         superior AT&T 2.0-iostream superset is in the works
  301.         for future release.
  302.  
  303. *** changes from libg++-1.25.0 to libg++-1.32.0
  304.  
  305.     * Nearly all data and methods previously declared as `private'
  306.         are now declared as `protected' to make subclassing from
  307.         library classes easier.
  308.  
  309.     * Most classes now contain a method `OK()' that checks to
  310.         make sure that an objects internal data is in a valid state.
  311.         See the documentation for further details
  312.  
  313.     * Mosts tests in ./tests now contain various kinds of assert
  314.         statements. If tests execute without assertion failures,
  315.         and without any other errors that cause aborted execution,
  316.         you may consider them successful. The test files now include
  317.         nearly all of my internal tests, which in turn have been
  318.         made more extensive.
  319.  
  320.     * Plex classes are available. 
  321.         A bit of propaganda about these:
  322.         Plexes are very attractive replacements for arrays
  323.         in many contexts. Try them!
  324.  
  325.     * `shrink' and `contains' have been added to Obstack
  326.  
  327.     * Files and streams have not yet been revamped (a complete
  328.         reworking awaits the AT&T 2.0 stream specification), but
  329.         have been adjusted to provide slightly faster IO in some 
  330.         cases, and now support the use of a user-supplied string 
  331.         to read or write from instead of an actual IO source.
  332.  
  333.     * Rationals are now normalized when input via `>>'.
  334.  
  335.     * atoI is fixed.
  336.  
  337.     * variable-length representations in String, Integer, etc., are
  338.         now completely different. See the documentation for details.
  339.  
  340.     * New String functions:
  341.        * readline -- read in a line from an istream as a String
  342.        * prepend -- prepend stuff to a String
  343.        * through  -- make a SubString from beginning to match point
  344.        * from     -- make a SubString from match point to end
  345.        * s[i]     -- now returns the char by reference
  346.  
  347.     * BitVec's are no longer supported, since their capabilities
  348.         are now incorporated in the revised BitString class.
  349.  
  350.     * stdarg.h and regex.h are revised to support the Sun4
  351.  
  352.     * Several interesting and/or useful examples of libg++
  353.         class use are in ./etc, mainly courtesy of Doug Schmidt.
  354.  
  355.     * .cc file names are now all less than 15 characters. Some
  356.         .h file names are longer, but this should not present
  357.         problems on SYSV systems.
  358.  
  359.     * pseudo-generic `proto' classes have been thoroughly revised:
  360.         * The prototype file names now end in `P', not `.proto'
  361.             and are in the g++-include directory
  362.         * A single, simple-to-use collection traversal mechanism
  363.             via pseudo-indices (`Pix') is used instead of particular
  364.             traversal friend classes.
  365.         * `Bag' prototypes are included
  366.         * Base classes are now supplied, so that all implementations
  367.             of Sets, Bags, are derived, allowing programmers to
  368.             mix and match implementations.
  369.         * They are now simpler to create: all comparison operators
  370.             and the like are now defined as macros in a `defs' file
  371.             which uses some reasonable defaults.
  372.         * The `Dictionary' versions of Set prototypes are not now
  373.             supported. Revised versions of such classes are forthcoming.
  374.         * Class prototypes previously labelled as `Assoc' are now
  375.             called `Maps', with slightly different capabilities.
  376.  
  377.     * Splay tree prototypes are available.
  378.         A bit more propaganda:  Consider using Splay tree
  379.         based containers (Set, Bag, Map, PQ). They are often
  380.         the most efficient structures when performing mixtures
  381.         of operations (adds, deletes, searches...)
  382.  
  383.     * Fixed precision reals are available, courtesy of Kurt Baudendistel
  384.  
  385.     * An ordered hash Set prototype (VOHSet) is available,
  386.         courtesy of Doug Schmidt.
  387.  
  388.     * MLCG now allows access and modifications to the seeds.
  389.  
  390.     * The Normal random generator is fixed.
  391.  
  392.     * SampleStatistic now allows any prob value for confidence
  393.         intervals.
  394.  
  395.     * some simple timer routines are in builtin.cc, courtesy of Doug Schmidt
  396.  
  397.     * While the Vec class prototypes are still available, they are
  398.         currently undergoing revision in order to correspond to
  399.         the forthcoming Matrix package (which should be available
  400.         in the next libg++ release).
  401.  
  402.     * A C++ version of GPERF, a perfect hash function generator
  403.        program is also available in ./etc, courtesy of Doug Schmidt.
  404.  
  405.  
  406. *** changes from libg++-1.22.2 to libg++-1.25.0
  407.  
  408.   * All reported errors from the previous release are fixed, and many
  409.     suggested modifications have been performed. Thanks to all who
  410.     have sent bug reports and comments, including those with mail
  411.     addresses that I have not been able to reply to. (My mail connections
  412.     are sometimes more than a little fragile. If you send me mail and
  413.     I have not replied within a few days, you may want to try again. Sorry.)
  414.  
  415.   * A serious problem in the use of Obstacks by conversion functions 
  416.     has been repaired.
  417.  
  418.   * A bug in maintaining reference counts on `find' and related operations
  419.     in List prototype classes has been fixed.
  420.  
  421.   * Strings now support self case manipulation in addition to the
  422.     functional versions.
  423.  
  424.   * Some new functions have been added to builtin.[h.cc]. All are now
  425.     documented in libg++.texinfo
  426.  
  427.   * Overload declarations are now performed in std.h and math.h,
  428.     rather than builtin.h,  to eliminate some include file ordering
  429.     problems.
  430.  
  431.   * Random, RNG, and SampleStatistic classes are available,
  432.     thanks to Dirk Grunwald.
  433.  
  434.   * A BitVec class is available.
  435.  
  436.   * The are many new generic container class prototype files. These
  437.     support container classes based on elementary data structures
  438.     (and a couple of non-elementary ones). Please read the documentation.
  439.  
  440.   * Class prototype OSet has been modified and renamed OLSet.
  441.  
  442.   * The genclass utility has been modified
  443.  
  444. *** changes from libg++-1.22.1 to 1.22.2
  445.  
  446.   * Tests files are now in a separate directory.
  447.  
  448.   * Several minor errors (Complex unary -, several BitString functions)
  449.     have been repaired.
  450.  
  451.   * pow(0,0) returns 1 for all versions of pow.
  452.  
  453.   * An experimental generic class prototyping feature is provided,
  454.     including prototypes for lisp-style lists and ordered list-based sets.
  455.  
  456.   * several include files with the same names as those in AT&T CC
  457.     are provided. These simply #include other files. OOPS should now
  458.     compile using only g++-include files. See, however, the note
  459.     about struct exception in file math.h
  460.  
  461.   * Some rearrangement of files containing char* conversion has been
  462.     done to eliminate linking of unnecessary classes.
  463.  
  464.   * The inline-only-when-optimizing feature is still not supported.
  465.  
  466. * New Random number generator classes are not yet available. Stubs for
  467.   these files are in this directory. They should be available for next
  468.   release.
  469.  
  470. *** changes from libg++-1.21.1 to 1.22.0
  471.  
  472.   * All documentation is in a stand-alone texinfo file, libg++.texinfo,
  473.     and is on its way to becoming a decent piece of documentation.
  474.  
  475.   * All reported errors from the previous release are fixed, and many
  476.     suggested modifications have been performed. Thanks to all who
  477.     have sent bug reports and comments, including those with mail
  478.     addresses that I have not been able to reply to. (My mail connections
  479.     are sometimes more than a little fragile. If you send me mail and
  480.     I have not replied within a few days, you may want to try again. Sorry.)
  481.  
  482.   * New Complex, BitSet, and BitString classes are available. You will
  483.     be performing a valuable service if you try these out and report
  484.     back any bugs/comments/suggestions about these or any other classes.
  485.  
  486.   * File `values.h' has been added. This contains various system
  487.     constants like the number of bits per long, etc. It contains
  488.     much of the same information as sun <values.h>, although a
  489.     few names and things differ slightly.
  490.  
  491.   * Files `builtin.h', `builtin.cc', and `convert.cc' have been added.
  492.     `builtin' contains common inline and non-inline functions on
  493.     builtin types (like `abs'). `convert' contains code for performing
  494.     IO and char* conversions, mainly via Obstacks. Most of these
  495.     functions are not new -- they have been collected from other .h
  496.     and .cc files.
  497.  
  498.   * Files `std.h' and `math.h' now declare all libc.a C functions 
  499.     in a way that allows any of them to be overloaded in C++.
  500.  
  501.   * Strings and Integers now perform expansion via realloc() -- 
  502.     see libconfig.h about whether you should #define SHOULD_FREE_TO_REALLOC.
  503.  
  504.   * `eatwhite' is supported for istreams.
  505.  
  506.   * File::getline(String, ...) and get(String) have been removed in order to
  507.     maintain greater independence of different classes.
  508.  
  509.   * Strings now provide substring matching via new versions of
  510.     `contains' and `matches', `common_prefix' and `common_suffix'.
  511.     Also, there is more support for case operations via `fcompare', etc.
  512.     The versions of `decompose' that do not deal with Regexes have
  513.     been deleted since they provide little functionality over other
  514.     operations. Also, a few special case functions dealing with char*'s
  515.     have been deleted since the required constructors are necessary
  516.     anyway. Several other corrections have been made in String.cc,
  517.     including the elimination of a few aliasing problems.
  518.  
  519.   * The implementations of Integers and Rationals are now both much
  520.     more efficient and well-tested, while remaining machine independent.
  521.     A few minor visible features have been added and/or changed.
  522.         
  523.   * The `box' command in PlotFile is now simulated, whether or not
  524.     it is present in libplot.a
  525.  
  526.   * The inlining-only-if-optimizing feature is still not fully implemented.
  527.                  
  528.