📄 news
字号:
*** 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 usereal templates. The style used emphasizes sharing code formultiple template instatiations at the cost of somewhat morecomplex internal logic. No promise is implied about when/ifthe remaining ones will be converted. Using the template classesassumes gcc-2.3 or similar compiler.* Added stdiobuf class which provides a streambuf wrapper arounda 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 compatiblewith AT&T and ANSI; it could require changes to user code if you havewritten 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 srcThose include files that are just wrappers around C header files(e.g. signal.h) remain in g++-include, while the header filesthat are specific to libg++ (or C++) have been moved to src.If your system includes "C++-ready" C header files (as in SVR4 orLinux), you don't need to use the wrappers in g++-include.* PortabilityA lot of effort has gone into making libg++ more portable.Code that depends on internals of "traditional" implementationshad been made more portable. The 'libiberty' library is incorporatedinto libg++; this supplies (if needed) many functions that may bemissing on particular hosts.* Auto-configurationNew scripts automaticly figure out various properties of thesystem (and compiler) you use. While these scripts are notfoolproof, the intent is that on most systems you will no longerhave to edit Makefiles or build special configuration files.* Iostream bug-fixesThere have been numerous bug-fixes and enhancements in theiostream code. Lots of rough edges in the streambuf and filebufclasses have been fixed.There are still some rough edges of the protocol (as in what thestreambuf class should do, and what sub-classes such as filebufshould 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 andotherwise unseekable, because the streambuffer never throws awayany data following an extant streammarker. This feature will beused to build various scanning/parsing facilities (with backup).(See iostream.texi for an example.)* stdio libraryNow supports all of ANSI's functionality.*** Changes in libg++ version 2.0:* iostream classesThe major change is that input/output uses the new iostream library.The design is based on (but not identical to) iostreams fromAT&T C++ release 2.x, and the ANSI X3J16/WG21 draft C++ standard.The iostream classes replace the old stream. The newpackage provides some compatibility hooks. Including theobsolete <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 usedany libg++-specific extensions (such as the File class).If you want stick with the old stream classes, change thedefinition of IO_DIR in Make.defs (to old-stream). You willalso need to 'make depend' in directories that contain depend,and then re-configure everything. Note that the old-streamclasses 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.hthat 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 oldincompatible g++-include files in its path, these will beread (and then in turn read the /usr/include file). If thereare conflicts, you can remove the previously installed include files,or try something like 'make XTRAFLAGS=-I/usr/include' (or whateverinclude 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 approriate SplayNode fileif you use SplayBag, SplaySet, or SplayPQ.* You can now use inline functions in header files withouthaving to use either -O or _DUSE_LIBGXX_INLINES. (The #ifdefthat depended on these has been removed, so inline functionsare inline independent of -O).* Numerous minor bug-fixes and enhancements.*** Changes in libg++-1.39.0 from libg++-1.37.0 * All files use the new g++ #pragma interface / #pragma implementation convention, which minimies duplication of `outlined' inlines and vtables. This also causes no inlines to be used at all when not compiling with `-O', which speeds compilation and simplifies debugging. * Many .h header file names had to be shortened so as to simulaneously work with SYSV and with #pragma interface (since .h and .cc file base names must match.) Sorry! * All genclass-able files have been moved to g++-include/gen. * various and sundry bug fixes, minor enhancements, and/or portability improvements as described in the ChangeLog. *** changes from libg++-1.36.3 to libg++-1.37.0 * Most utility classes and functions are now in stand-alone .cc and/or .h files. This should generate smaller exectuables, and, sometimes faster compilation. In particular, istream.h, and ostream.h are now separately includable. If you only need one, you don't have to get the other. * The Plex classes now understand `const'. The `changes' and `changed' member functions were removed, since it is now possible to avoid changes in Plex structures by using const versions. * class RandomInteger is available, courtesy of John Reidl. * PlotFile3D, a 3D plot class is in libg++/etc. It will be incorporated into libg++ proper for the next release, perhaps with a few changes. Thanks to Tom Ngo. * various and sundry bug fixes, minor enhancements, and/or portability improvements as described in the ChangeLog. * The file etc/HINTS is an emacs RMAIL file that contains recent bug-lib-g++ list mail and related messages that may be useful.*** changes from libg++-1.36.1 to libg++-1.36.3 * `Tmp' classes have been eliminated from Strings, Integers, etc. (Via some retuning of the main classes, Tmp classes were found to not significantly impact performance one way or the other, so they were removed.) * There is now a version of malloc, directly supporting operator new, etc. It may be faster and better suited to C++ applications than your libc malloc. You should be able to use it unless you need a special malloc for a distributed shared memory environment or the like. If you can't use it, edit the appropriate flag in the top-level Makefile. I would very much appreciate feedback about whether this malloc makes any difference in time or space efficiency than whatever you are now using. * By default, output is now line-buffered. Use the NO_LINE_BUFFER_STREAMBUF define in the Makefile to override * Otherwise, the stream classes remain C++-1.2 compatible. C++-2.0-compatible versions are still in the works. * various and sundry bug fixes, minor enhancements, and/or portability improvements as described in the ChangeLog. *** changes from libg++-1.35.0 & 1.35.1 to 1.36.1 * various and sundry bug fixes, minor enhancements, and/or portability improvements as described in the ChangeLog. * Most everything should now work on most SystemV machines. Let me know if they don't. * genclass now allows an optional prefix to be used instead of type name concatenation in order to help minimize filename lengths for SYSV users. This is not a great solution, but is A solution to filename length problems for SYSV users. * Some, but not all classes now behave well with respect to the new 2.0 const specifications. Some uncertainties about how g++ will interpret gcc-based const function qualifiers (to indicate lack of side effects) versus C++-2.0 const member functions has held up the conversion of some classes to use const in either or both of these ways. * A version of etags suitable for use with c++ is in etc/ (courtesy of J. Clark) * `graph', a unix graph(1) work-alike is in libg++/etc, courtesy of Rich Murphey. * RAVLMap (Ranked AVLs) prototypes. * The GetOpt class & support has been moved from etc/ into libg++.a * Streams have been redone to be nearly 100% AT&T 1.2 compatible.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -