GNUstep Base Library
********************

The GNUstep Base Library, version 0.2.12, is now available.

What is the GNUstep Base Library?
=================================

   The GNUstep Base Library is a library of general-purpose,
non-graphical Objective C objects.  For example, it includes classes
for strings, object collections, byte streams, typed coders,
invocations, notifications, notification dispatchers, moments in time,
network ports, remote object messaging support (distributed objects),
event loops, and random number generators.

   It provides functionality that aims to implement the non-graphical
portion of the OpenStep standard.  In many cases, the `NS*' classes are
implemented as wrappers around more featureful GNU classes.

   There is more information available at the GNUstep Base Library
homepage at `http://www.cs.rochester.edu/u/mccallum/gnustep-base'.

Noteworthy changes since version `0.1.19'
=========================================

   * The library has changed its name from `libobjects' to
     `libgnustep-base'.  The Apr 17 ChangeLog entry contains a list of
     the way various other names were changed.

   * The library now requires a patch to gcc-2.7.2.  The patch adds
     thread-safe features to the GNU Objective C runtime.

   * Distributed Objects is much improved.  Exceptions in the server
     are sent back to the client.  Ungracefully closed connections are
     gracefully handled.

   * NSUserDefaults has been implemented, thanks to Georg Tuparev
     <tuparev@NMR.EMBL-Heidelberg.DE>.

   * NSScanner has been implemented, thanks to Eric Norum
     <Eric.Norum@usask.ca>.

   * NSCharacterSet has a new caching scheme, and is now faster than
     NeXT's implementation, thanks to Adam Fedor.

   * Preliminary thread-safety work has been done.  NSObject and
     NSAutoreleasePool should be thread-safe.

   * The "%@" printf directive now works on systems without GNU libc.

   * The NS*Page* functions have been implemented.

   * The mframe and behavior functions have been overhauled and better
     commented.

   * The NSHashTable and NSMapTable functions have been implemented,
     thanks to Albin Jones <albin.jones@dartmouth.edu>.  Albin has also
     implemented underlying GNU functions that provide functions for
     arrays and linked lists of C-type variables.

   * The NSThread class has been implemented.  Thanks to Scott
     Christley <scottc@net-community.com>, the NSLock class has been
     implemented.

   * A RunLoop class has been implemented, and is used for listening to
     Port objects.  It is used for Distributed Objects.  There is also
     an NSRunLoop class based on RunLoop.

   * The NSTimer class has been implemented, although its use with
     RunLoops is currently disabled.

   * The Notification mechanism has been implemented.  It makes good
     use of hash tables and linked lists in order to be fast.

   * The Invocation class heirarchy has been fleshed out and now works.

   * The collection classes have been overhauled to better handle
     distributed objects, and for better compatibility with NeXT's
     method names.

     A new separation has been made in the abstract collection classes:
     IndexedCollections contain objects accessible by an integer key,
     but the user cannot insert at an arbitrary key; these are useful
     for sorted collections, such as SplayTree's. OrderedCollection can
     have their order determined by the user; i.e. users can send
     `-insertObject:atIndex:', etc.

     There is a new set of rich enumeration methods based on
     Invocations.

   * Port class heirarchy has been overhauled.  There are now classes
     for TCP ports, UDP ports, and Mach ports.  Only the TCP ports are
     currently functional.

   * GNU-style archiving has had an overhaul, and the GNUstep
     NSArchiver class is functional, but not strongly tested.  It does
     not yet call -awakeUsingCoder:.

     I have separated the high-level archiving of groups of objects
     from the low-level format of how C-types are written.  There are
     several new classes.  CStream is a subclass of Stream that knows
     how to encode C-type variables in a machine independent way; this
     class has two concrete subclasses: BinaryCStream, and TextCStream.
     Plug these backends into Coder to get different style low-level
     formats for archiving.

     Floats and doubles are now encoded more efficiently.

     NSArchiver is built on top of Coder.  You can actually send all the
     Coder methods to NSArchiver and vice-versa.

     GNU classes BinaryCoder and TextCoder are gone.

   * Several new OpenStep functions have been implemented:
     NSHomeDirectory, NSUserName, NSHomeDirectoryForUser, NSPageSize,
     NSLogPageSize, NSroundUpToMultipleOfPageSize,
     NSRoundDownToMultipleOfPageSize, NSRealMemoryAvailable,
     NSAllocateMemoryPages, NSDeallocateMemoryPages, NSCopyMemoryPages.

   * ...and many bug fixes.

Where can you get it?  How can you compile it?
==============================================

   The libgnustep-base-0.2.12.tar.gz distribution file has been placed
on `alpha.gnu.ai.mit.edu' in `gnu'.

   More information about the library, including a list of machines on
which it has been successfully compiled and used, can be found at
`http://www.cs.rochester.edu/u/mccallum/libgnustep-base'.

   The library requires gcc 2.7.2 or higher.  Significant sections of
the library do not work with the NeXT runtime, so we recommend using
gcc instead of NeXT's cc.  See the `INSTALL' file for more instructions
about compiling and installing the library.

   The `.tar' file is compressed with GNU gzip.  Gzip can be obtained by
anonymous ftp at any of the GNU archive sites.

   For info about FTP via email, send email to `ftpmail@decwrl.dec.com'
with no subject line, and two-line body with line one `help' and line
two `quit'.

   The most recent (not necessarily tested) snapshots of the library
will be placed in `ftp://alpha.gnu.ai.mit.edu/gnu'.

     Happy Hacking!
            Andrew Kachites McCallum
            mccallum@gnu.ai.mit.edu



[ Most GNU software is packed using the GNU `gzip' compression program.
  Source code is available on most sites distributing GNU software.

  For information on how to order GNU software on tape, floppy or cd-rom, or
  printed GNU manuals, check the file etc/ORDERS in the GNU Emacs distribution
  or in GNUinfo/ORDERS on prep, or e-mail a request to: gnu@prep.ai.mit.edu

  By ordering your GNU software from the FSF, you help us continue to
  develop more free software.  Media revenues are our primary source of
  support.  Donations to FSF are deductible on US tax returns.

  The above software will soon be at these ftp sites as well.
  Please try them before prep.ai.mit.edu as prep is very busy!

  thanx -gnu@prep.ai.mit.edu

	ASIA: ftp.cs.titech.ac.jp, utsun.s.u-tokyo.ac.jp:/ftpsync/prep,
  cair.kaist.ac.kr:/pub/gnu, ftp.nectec.or.th:/pub/mirrors/gnu
	AUSTRALIA: archie.au:/gnu (archie.oz or archie.oz.au for ACSnet)
	AFRICA: ftp.sun.ac.za:/pub/gnu
	MIDDLE-EAST: ftp.technion.ac.il:/pub/unsupported/gnu
	EUROPE: irisa.irisa.fr:/pub/gnu, ftp.univ-lyon1.fr:pub/gnu,
  ftp.mcc.ac.uk, unix.hensa.ac.uk:/pub/uunet/systems/gnu,
  src.doc.ic.ac.uk:/gnu, ftp.ieunet.ie:pub/gnu, ftp.eunet.ch,
  nic.switch.ch:/mirror/gnu, ftp.informatik.rwth-aachen.de:/pub/gnu,
  ftp.informatik.tu-muenchen.de, ftp.win.tue.nl:/pub/gnu,
  ftp.funet.fi:/pub/gnu, ftp.denet.dk, ftp.stacken.kth.se, isy.liu.se,
  ftp.luth.se:/pub/unix/gnu, ftp.sunet.se:/pub/gnu, archive.eu.net
	SOUTH AMERICA: ftp.unicamp.br:/pub/gnu
	WESTERN CANADA: ftp.cs.ubc.ca:/mirror2/gnu
	USA: wuarchive.wustl.edu:/systems/gnu, labrea.stanford.edu,
  ftp.digex.net:/pub/gnu, ftp.kpc.com:/pub/mirror/gnu, f.ms.uky.edu:/pub3/gnu,
  jaguar.utah.edu:/gnustuff, ftp.hawaii.edu:/mirrors/gnu,
  vixen.cso.uiuc.edu:/gnu, mrcnext.cso.uiuc.edu:/pub/gnu,
  ftp.cs.columbia.edu:/archives/gnu/prep, col.hp.com:/mirrors/gnu,
  gatekeeper.dec.com:/pub/GNU, ftp.uu.net:/systems/gnu

]

