   ____  _   _
  |  _ \| |_| |__
  | |_) | __| '_ \             ``Just because everything is different
  |  __/| |_| | | |              doesn't mean anything has changed.''
  |_|    \__|_| |_|                             -- Irene Peter

  GNU Pth - The GNU Portable Threads

  ChangeLog
  =========

  This is the list of all(!) changes to this Pth source tree. For a list
  of just the user-visible and/or major changes please have a look at
  the NEWS file.

     ____    ___  
    |___ \  / _ \ 
      __) || | | |
     / __/ | |_| |
  __|_____(_)___/_________________________________________________________
                  
  Changes between 2.0.6 and 2.0.7 (22-Nov-2005 to 08-Jun-2006)

   *) Upgraded build environment from GNU shtool 2.0.3 to 2.0.6
      and from GNU libtool 1.5.20 to 1.5.22.
      [Ralf S. Engelschall]

   *) Let AC_CHECK_PTH use "pth-config --libs --all" instead of just
      "pth-config --libs" to allow it to work under platforms like
      Solaris where additional libraries are required.
      [Ralf S. Engelschall]

   *) Adjusted all copyright messages for new year 2006.
      [Ralf S. Engelschall]

  Changes between 2.0.5 and 2.0.6 (05-Oct-2005 to 22-Nov-2005)

   *) Add a missing "break" in pth_attr.c:pth_attr_ctrl().
      [Stefan Schippers <stefan@schippers.it>]

   *) Return an error if pth_kill() is called before pth_init().
      [Martin Kraemer <Martin.Kraemer@Fujitsu-Siemens.com>]

  Changes between 2.0.4 and 2.0.5 (18-Feb-2005 to 05-Oct-2005)

   *) Upgraded build environment to GNU libtool 1.5.20 and
      GNU shtool 2.0.3
      [Ralf S. Engelschall]

  Changes between 2.0.3 and 2.0.4 (03-Dec-2004 to 18-Feb-2005)

   *) Fix internal determination of maximum number in a size_t in
      the string formatter engine.
      [Ralf S. Engelschall]

   *) Upgraded build environment to GNU libtool 1.5.14
      [Ralf S. Engelschall]

   *) Add quotes around function names for AC_DEFUN in pth.m4 to avoid
      warnings about "underquoted definitions".
      [Stephane Loeuillet <stephane.loeuillet@cegetel.net>]

   *) Adjusted all copyright messages for new year 2005.
      [Ralf S. Engelschall]

   *) Do not insist on writing to the source directory on "make install"
      in order to more closely follow GNU standards.
      [Bruno Haible <bruno@clisp.org>]

   *) Remove "*.bak" and "*~" files under "make distclean"
      instead of "make clean".
      [Bruno Haible <bruno@clisp.org>]

  Changes between 2.0.2 and 2.0.3 (12-Sep-2004 to 03-Dec-2004)

   *) Resurrect the old "make striptease" command by fixing the
      configure run-time in the stripped down source tree and fixing the
      list of source files.
      [Ralf S. Engelschall]

   *) The pth_uctx_save() and pth_uctx_restore() API functions
      unfortunately were broken by design because they are C
      _functions_. This leads to one more deadly nesting on the
      run-time stack which effectively caused the pth_mctx_restore()
      in pth_uctx_restore() to return to the end of pth_uctx_save()
      but then the control flow unfortunately returns to the
      pth_uctx_restore() caller instead of the pth_uctx_save() caller
      because the call to pth_uctx_restore() had already overwritten the
      run-time stack position where the original return address for the
      pth_uctx_save() call was stored.
      
      The only workaround would be to #define pth_uctx_save() and
      pth_uctx_restore() as C _macros_, but this then would require that
      lots of the GNU Pth internals from pth_mctx.c would have to be
      exported in the GNU Pth API (which in turn is not acceptable). So,
      the only consequence is to remove the two functions again from the
      GNU Pth API.
      [Ralf S. Engelschall, Stefan Brantschen <sbr@acm.org>]

   *) Enhance internal pth_mctx_save() if getcontext(3) is used for the
      machine context saving by better emulating the setjmp(3) style
      return code semantics.
      [Ralf S. Engelschall]

   *) Do not break in pth_msgport_find() if a message port
      was created with a NULL name.
      [Ralf S. Engelschall]

   *) Better error checking in pth_key_xxx() functions.
      [Ralf S. Engelschall]

   *) Added PTH_CTRL_FAVOURNEW control which allows the user
      to disable the favouring of new threads on scheduling
      to get more strict priority based scheduling behavior.
      [Ralf S. Engelschall, Vinu V <Vinu_V@mindtree.com>]

   *) Upgraded build environment to GNU libtool 1.5.10
      [Ralf S. Engelschall]

  Changes between 2.0.1 and 2.0.2 (13-Jul-2004 to 12-Sep-2004)

   *) Added hard syscall wrappers for send(2) and recv(2).
      [NetBSD pkgsrc patches]

   *) Internally handle errors returned from pth_event() in order
      to pass them upstream to the caller in pth_high.c functions.
      [Ralf S. Engelschall, NetBSD pkgsrc patches]

   *) Fix syscall wrapper for sendto(2).
      [NetBSD pkgsrc patches]

   *) Use "(char *)NULL" instead of plain "NULL" in last argument to
      execl(2) to avoid GCC 3.5's "warning: missing sentinel in function call".
      [Ralf S. Engelschall]

   *) Workaround Autoconf/m4 problems in pth.m4 by using "m4_define"
      instead of just "define" and no using m4_undefine at all.
      [Dr. Andreas Mueller <afm@othello.ch>]

   *) Avoid side-effects by defining _XOPEN_SOURCE only temporarily
      for inclusion of <poll.h> instead of permanently.
      [Graham Nash <gnash@ncube.com>]

   *) Workaround GCC 2.x and 3.5 (3.4 worked fine) macro parsing
      behaviour by using a pre-declared function pointer type "typedef
      int (*pth_event_func_t)(void *);" instead of using an inlined 
      "int (*)(void *)".
      [Ralf S. Engelschall, Robert Anderson <RWA@sbcglobal.net>]

   *) Fixed prototype for pthread_attr_setschedparam(3) from
      to use a "const struct sched_param *" argument.
      [Rafael vila de Espndola <rafael.espindola@ic.unicamp.br>]

   *) Upgraded build environment to GNU libtool 1.5.8
      and GNU shtool 2.0.1.
      [Ralf S. Engelschall]

  Changes between 2.0.0 and 2.0.1 (17-Feb-2003 to 13-Jul-2004)

   *) Fix handling/casting of "int (*)(void *)" callback functions.
      [Ralf S. Engelschall]

   *) Resolve symbol conflict in pth_string.c between pow10/round
      and GCC builtins.
      [Ralf S. Engelschall]

   *) Use GCC 3.3 option "-fno-strict-aliasing" (if available) under
      Autoconf option "--enable-debug" because mainly pth_mctx.c
      contains important and correct pointer casting constructs which
      are not acceptable in "strict aliasing" for GCC.
      [Ralf S. Engelschall]

   *) Upgraded build environment to GNU autoconf 2.59, GNU libtool 1.5.6
      and GNU shtool 2.0.0.
      [Ralf S. Engelschall]

   *) Fixed implementation so that --enable-pthread now correctly
      implies --enable-syscall-soft.
      [Steve Alstrin <Steve.Alstrin@NetIQ.com>, Ralf S. Engelschall]

   *) Replace some 0 by more politically correct NULL in pth_string.c
      [Ralf S. Engelschall]

   *) Adjusted all copyright messages for new year 2004.
      [Ralf S. Engelschall]

  Changes between 2.0b2 and 2.0.0 (04-Dec-2002 to 17-Feb-2003)

   *) Final source tree polishing before release.
      [Ralf S. Engelschall]

   *) Wrote summary for Pth 2.0 for the ANNOUNCE document.
      [Ralf S. Engelschall]

   *) Adjusted all copyright messages for new year 2003.
      [Ralf S. Engelschall]

  Changes between 2.0b1 and 2.0b2 (08-Nov-2002 to 04-Dec-2002)

   *) Upgraded built environment to GNU Autoconf 2.57.
      [Ralf S. Engelschall]

   *) Fixed compiler warnings under Linux: require inclusion of <time.h>
      [Joseph Wayne Norton <norton@alum.mit.edu>]

   *) Fixed error handling in pth_init(3): it now correctly
      returns an error instead of abort(3)'ing.
      [Ralf S. Engelschall]

   *) Added soft syscall mapping for nanosleep(3) and
      usleep(3) functions also to the Pthread API. 
      [Ralf S. Engelschall]

  Changes between 2.0b0 and 2.0b1 (07-Nov-2002 to 08-Nov-2002)

   *) Make pth_poll(3) more compliant to POSIX.1-2001/SUSv3 poll(2).
      [Ralf S. Engelschall, Nick Hudson <skrll@netbsd.org>]

   *) Make pth_select(3) more compliant to POSIX.1-2001/SUSv3 select(2).
      This especially fixes the polling-only situation (timeout = (0,0)).
      [Ralf S. Engelschall]

   *) Make sure that in the even manager a polling-only select(2) call
      uses a correctly initialized timeout parameter.
      [Ralf S. Engelschall]

   *) Added soft and hard syscall mapping for nanosleep(3) and
      usleep(3) functions. 
      [Ralf S. Engelschall]

   *) Fix poll(2) semantics: remove POLLRDNORM from polling
      result if POLLHUP is detected.
      [Paolo Bonzini <bonzini@gnu.org>]

   *) Updated PORTING file to include community feedback from
      the last months.
      [Ralf S. Engelschall]

  Changes between 1.4.1 and 2.0b0 (27-Jan-2002 to 07-Nov-2002)

   *) Fix dropping of scheduler thread pools and this way fix memory leak.
      [Ralf S. Engelschall]

   *) Check for PTH_FDMODE_ERROR error conditions internally, too.
      [Ralf S. Engelschall]

   *) Use the new PTH_STATUS_FAILED event status in the scheduler's
      event-manager for filedescriptor events if the internal select(2)
      call returned with an error. Additionally this PTH_STATUS_FAILED
      is recognized by the high-level API functions (pth_select, etc)
      and produce the necessary POSIX conforming return codes (usually
      -1 and errno == EBADF).
      [Ralf S. Engelschall, Thanh Luu <tluu@synapcity.com>]

   *) The function "int pth_event_occurred(pth_event_t)" was replaced
      with "pth_status_t pth_event_status(pth_event_t)" where pth_status_t 
      can have values of PTH_STATUS_PENDING (replacing the old FALSE return 
      value of pth_event_occurred), PTH_STATUS_OCCURRED (replacing
      the old TRUE return value of pth_event_occurred), and
      PTH_STATUS_FAILED (a new return value indicating an error in
      processing the event). This was scheduler/event-manager errors can
      be indicated which happended while processing the event. For
      backward compatibility reasons, a macro pth_event_occurred() was
      added. This will be removed soon.
      [Ralf S. Engelschall]

   *) Upgraded to latest version of the OSSP Autoconf macro
      AC_CHECK_EXTLIB in order to fix problems with the current
      Autoconf 2.54 environment.
      [Ralf S. Engelschall]

   *) Add Autoconf option --with-fdsetsize=NUM which allows to
      force a particular (usually higher than the default) FD_SETSIZE
      value for building Pth. Additionally Pth makes sure that the
      application using Pth does not use an even larger size.
      [Nick Hudson <skrll@netbsd.org>, Ralf S. Engelschall]

   *) Added thread attribute PTH_ATTR_DISPATCHES which (in bounded
      attribute objects) is incremented every time the context
      is switched to the associated thread. This can be used for
      statistical information.
      [Ralf S. Engelschall]

   *) Added a stand-alone sub-API for manual user-space context
      switching. It is somewhat modeled after the POSIX ucontext(3)
      facility and consists of an opaque data type pth_uctx_t and
      the management functions pth_uctx_create(), pth_uctx_make(),
      pth_uctx_save(), pth_uctx_restore(), pth_uctx_switch() and
      pth_uctx_destroy(). These functions are based on the same
      underlying machine context switching facility (pth_mctx)
      the threads in GNU Pth are using. This facility can be used
      to implement co-routines without a full real multithreading
      environment or even to implement an own multithreading
      environment.
      [Ralf S. Engelschall]

   *) Add a Pth variant of the new POSIX pselect(2) function, including
      soft and hard syscall mapping support for it.
      [Ralf S. Engelschall]

   *) More POSIX compliance for pth_select() in case of invalid
      timeout values and invalid filedescriptors.
      [Ralf S. Engelschall]

   *) Internally switch from "errno_shield {...}" to "pth_shield {...}"
      and from "return_errno(..)" to "return pth_error(...)" in order to
      make the internal error handling a little bit more consistent.
      [Ralf S. Engelschall]

   *) Cleaned and speeded up the pth_exit() processing.
      [Ralf S. Engelschall]

   *) Added POSIX-compliant sanity checks for bad filedescriptors
      to mostly all filedescriptor-based I/O functions in pth_high.c
      [Ralf S. Engelschall]

   *) Added pth_nanosleep() function.
      [Nick Hudson <skrll@netbsd.org>, Ralf S. Engelschall]

   *) Allow a NULL name for pth_msgport_create() in order to
      support locally scoped message ports which are not searched via
      pth_msgport_find().
      [Ralf S. Engelschall, Matthew Mondor <mmondor@gobot.ca>]

   *) Added "hard syscall mapping" support for using 
      SYS___sigprocmask14 instead of SYS_sigprocmask on NetBSD.
      [Nick Hudson <skrll@netbsd.org>]

   *) Changes three direct sigprocmask(2) calls with the corresponding
      "hard syscall mapping" macro calls.
      [Nick Hudson <skrll@netbsd.org>]

   *) Add Autoconf support for GNU Hurd.
      [B. Douglas Hilton <doug.hilton@engineer.com>]

   *) Completely rewrote the "hard syscall mapping". 

      Previously the internal syscall exit points were based on syscall(2)
      only. This is problematic because it by-passes the C library glue
      code which sometimes performs necessary assembly fiddling in order
      to call the underlying system calls correctly. Additionally,
      syscall(2) does not exists everywhere.

      Now the internal exit points are based on a by-syscall dynamically
      selected combination of RTLD_NEXT+dlsym(2), dlopen(2)+dlsym(2) and
      the known syscall(2) (in this fallback order). This way the "hard
      syscall mapping" is a lot more portable and flexible.
      [Ralf S. Engelschall, Jonathan Schilling <jls@sco.com>]

   *) Added support to pth_poll(3) for the poll(2) XPG.4 flags
      POLLD{RD,WR}{NORM,BAND}.
      [Jason Evans <jasone@canonware.com>, Ralf S. Engelschall]

   *) Fixed a long-standing termination bug in pth_exit(3):
      The event handler of pth_exit(3) didn't let pth_exit(3) finish if
      there were any threads on the "dead queue" (where non-detached
      terminated threads are put). Instead it re-entered the scheduler
      which in turn aborted with "**Pth** SCHEDULER INTERNAL ERROR: no
      more thread(s) available to schedule!?!?". This is now fixed by
      not counting the "dead queue" for the determination whether the
      process as a whole should terminate or not.
      [Jonathan Schilling <jls@sco.com>]

   *) The manual page stated that system(3) is supported in the
      "Soft System Call Mapping", but in fact it was forgotten in the
      implementation.
      [Jonathan Schilling <jls@sco.com>]

   *) Add #define _PTHREAD_T to pthread.h to guard under SCO UnixWare 7
      and OpenUNIX 8.
      [Jonathan Schilling <jls@sco.com>]

   *) Upgraded to Autoconf 2.54 environment and cleaned up internal
      Autoconf macro usage.
      [Ralf S. Engelschall]

   *) Fixed lots of English errors in the manual page.
      [Felix Berger <bflat1@gmx.net>]

   *) Add optional support for OSSP ex based exception handling. GNU
      Pth (still) does not throw exceptions by itself, but handles the
      per-thread exception context of OSSP ex to make exception handling
      local to a thread.
      [Ralf S. Engelschall]

   *) Removed all generated files from CVS.
      Use OSSP devtool stuff to re-generate files on demand.
      Switched to Autoconf 2.52 and Libtool 1.4.2 environment.
      [Ralf S. Engelschall]

     _  _  _
    / || || |
    | || || |_
    | ||__   _|
  __|_(_) |_|_____________________________________________________________

  Changes between 1.4.0 and 1.4.1 (24-Mar-2001 to 27-Jan-2002)

   *) Internally make sure an invalid file-descriptor (integer not
      between 0 and (FD_SETSIZE-1) does not lead to any segfaults or
      other undefined behaviour. Instead an error is returned and errno
      is set to EBADF, similar to what the OS functions do. Especially
      pth_poll() now return with this error (instead of skipping the fd)
      if an fd in the "struct pollfd" is invalid.
      [Ralf S. Engelschall, Archie Cobbs <archie@packetdesign.com>]

   *) Correctly support PTH_FDMODE_NONBLOCK in pth_connect and pth_accept.
      [Archie Cobbs <archie@packetdesign.com>]

   *) Fixed typos in manual page.
      [Michael Schloh v. Bennewitz <michael.schloh@de.cw.net>,
       Takashi Ishihara <tishihara@ucdavis.edu>]

   *) For portability reasons changed definition of PTH_EXT_SFIO to 0/1
      instead of FALSE/TRUE because some external definitions use a
      casted value and hence make trouble on plain #if constructs.
      [Staehli Patrik <patrik.staehli@siemens.ch>]

   *) Fixed return value (number of occurred events) of pth_wait().
      [David Dureau <david.dureau@cea.fr>]

   *) Replaced thread-unsafe usage of a static struct iovec in
      pth_writev_ev() with a thread-safe stack/heap-based solution.
      [Ralf S. Engelschall, Mark Burton <markb@ordern.com>]

   *) Replaced antiquated PTH_FLAG_NOJOIN references with the correct
      PTH_ATTR_JOINABLE references in the manual page.
      [Takashi Ishihara <tishihara@ucdavis.edu>]

   *) Fixed a (not very subtle) bug in pth_writev_ev() that screwed up
      output if a partial write happened.
      [Mark Burton <markb@ordern.com>]

   *) Fixed static initializers PTH_BARRIER_INIT and PTH_COND_INIT.
      [Shawn Wagner <shawnw@speakeasy.org>]

   *) Typo fixes in pth.pod
      [<collver@linuxfreemail.com>]

   *) Upgraded to GNU shtool, version 1.5.4.
      [Ralf S. Engelschall]

   *) Fixed "make striptease": pth_string.c was not included and some
      commands which were removed at all (and this way causes syntax
      errors) will be now correctly commented out with ":" commands.
      [Paolo Bonzini <bonzini@pc-amo3.elet.polimi.it>]

   *) Fixed pth.pod: a closing angle bracket was missing, leading to
      incorrect POD to XXXX formatting.
      [Ralf S. Engelschall]

  Changes between 1.4a3 and 1.4.0 (29-Jul-2000 to 24-Mar-2001)

   *) Added PTHREAD_PRIO_XXXX definitions to pthread.h for
      conformance to the POSIX/SUSv2 Pthread API.
      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]

   *) Implemented the pthread_{set,get}concurrency() API parts of
      POSIX/SUSv2, although internally we are (allowed to be) free to not
      do anything based on the requested level.
      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]

   *) Adjusted all pthread_attr_getXXXX() functions to use a "const
      pthread_attr_t *" as the first argument instead of "pthread_attr_t
      *" to fully-conform to POSIX/SUSv2.
      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]

   *) Added ENOSYS-stubs for pthread_attr_{set,get}guardsize()
      to the Pthread API to be more complete with POSIX/SUSv2 specs.
      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]

   *) Added still missing soft system call mapping to Pth and Pthread
      APIs for functions recv(2), send(2), recvfrom(2) and sendto(2).
      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]

   *) Upgraded to GNU shtool 1.5.2
      [Ralf S. Engelschall]

   *) Fixed an even-manager bug which causes a thread that calls
      pth_nap() to never woke up if the only elapsed event was a timer.
      [Archie Cobbs <archie@packetdesign.com>]

   *) Added `#define _BITS_SIGTHREAD_H' to pthread.h to avoid inclusion
      of bits/sigthread.h (from signal.h) on Linux running glibc6 2.2.
      [Tomas Pihl <tomas.pihl@netinsight.net>]

   *) Added support to Makefile.in for DESTDIR variable. This allows
      easier rolling of installation tarballs (for instance from within
      RPM or similar facilities) by using "make install DESTDIR=/tmp/pth".
      [Brad Smith <brad@comstyle.com>, Ralf S. Engelschall]

   *) Implemented a pth_system(3) function which is a thread-aware
      clone of the POSIX system(2) function.
      [Ralf S. Engelschall]

   *) Fixed typos in pth.pod: "fd" -> "s" for pth_connect/pth_accept.
      [Sebastian <scut@nb.in-berlin.de>]

   *) Make --disable-shared the default under Solaris-2.[78]/x86, because
      it is known to segfault sporadically if Pth is built as a DSO.  As
      traces showed, it is not a Pth problem, but it looks like a problem with
      the dynamic linker on Solaris/x86.  The same Solaris versions on SPARC
      don't have this problem.
      [Ralf S. Engelschall]

   *) Updated copyright messages to cover new year 2001.
      [Ralf S. Engelschall]

   *) Fixed quoting in configure.in
      [Ralf S. Engelschall]

   *) Let pth_sleep(3) and pth_usleep(3) immediately return
      if an argument of zero is given.
      [Ralf S. Engelschall]

   *) Fixed pthread.pod: the newer pod2man versions seems to dislike
      embedded comments, so I moved them to the top of the file.
      [Ralf S. Engelschall]

   *) Changed CVS URL in HACKING document.
      [Ralf S. Engelschall]

   *) Mention http://www.mail-archive.com/pth-users@gnu.org/ in pth.pod
      and SUPPORT document.
      [Ralf S. Engelschall]

  Changes between 1.4a2 and 1.4a3 (01-Jul-2000 to 29-Jul-2000)

   *) Upgraded to GNU shtool 1.5.1
      [Ralf S. Engelschall]

   *) Fixed (unused) pth_time_mul() function: operator & replaced by %
      [Tim Harris <tim.harris@snellwilcox.com>]

   *) Use --disable-lock for ltconfig.
      [Ralf S. Engelschall]

   *) Fixed a few typos in pth.pod.
      [Thomas Klausner <wiz@danbala.tuwien.ac.at>]

  Changes between 1.4a1 and 1.4a2 (16-Apr-2000 to 01-Jul-2000)

   *) Upgraded to GNU Shtool 1.5.0
      [Ralf S. Engelschall]

   *) Added OS/390 support to config.sub.
      [Greg Ames <gregames@raleigh.ibm.com>]

   *) Upgraded rse-pmt.ps paper to latest version as it was
      published on USENIX 2000.
      [Ralf S. Engelschall]

   *) Stack boundary fixes for Interactive Unix support
      (--with-mctx-dsp=sjljisc). This allows one also to use this
      variant for Interix on Window-NT (a POSIX.1 compliant subsystem).
      [Kim Jongsu <kimjs@moasys.com>]

   *) Upgraded to GNU Libtool 1.3.5
      [Ralf S. Engelschall]

   *) Fixed config.param parsing: IF is now also allowed on
      VARIABLE=VALUE lines.
      [Ralf S. Engelschall]

   *) Allow for convinience reasons pth_usleep() to accept also
      arguments greater than 1000000.
      [Harvinder Sawhney <hsawhney@hotmail.com>]

   *) Updated HACKING document.
      [Ralf S. Engelschall]

   *) Fixed warnings in pth_string.c related to va_arg() usage
      and implicit type conversions.
      [Ralf S. Engelschall]

   *) Merge from Pth 1.3.5:
      Fixed the <sys/select.h> checks in Autoconf: the logic
      was reversed and this way <sys/select.h> wasn't included on
      platforms were it existed and included where it wasn't present.
      [M. Lavasani <lavasani@connect.org.uk>]

  Changes between 1.3.3 and 1.4a1 (10-Mar-2000 to 16-Apr-2000)

   *) Added a new feature to config.param: parameters can be extended
      with ``<space>IF<space><shell-test>''. Then the preceeding
      parameter is only added to the command line if the <shell-test>
      returns 0. <shell-test> can be anything which is possible in a
      Bourne-Shell `if' construct's expression.
      [Ralf S. Engelschall]

   *) Fixed usage of `volatile' qualifier in pointer context.
      [Ralf S. Engelschall]

   *) Now check also for -Wno-long-long compiler option under
      --enable-debug, because pth_string.c contains `long long' stuff.
      [Ralf S. Engelschall]

   *) Now pth.h and pthread.h include the non-standard <sys/select.h>
      header on brain-dead platforms (like AIX) to get the definition of
      fd_set (which is required for the pth_select prototype).
      [Ralf S. Engelschall, Stian Seeberg <stian@nimsoft.no>]

   *) Fixed auto-configuration for ISC and Win32/Cygwin platforms.
      [Ralf S. Engelschall, Giwon On <Giwon.On@KOM.tu-darmstadt.de>]

   *) Removed -L. from $(LDFLAGS) in Makefile.in, because this
      is not required (libtool already takes care of this).
      [Ralf S. Engelschall]

   *) Added a RPM spec file pth.spec which allows one to build RPM
      packages directly from the Pth distribution tarball through a
      simple `rpm -tb pth-1.X.Y.tar.gz' call.
      [Daniel Richard G. <straker@MIT.EDU>]

   *) Removed the too explicit `-m 644' from the libtool/shtool
      installation command for libpth.la and instead use a `umask 022'.
      The reason is because some platforms require the shared libraries
      to be executable, so we cannot use an explicit mode. But we use the
      umask to make sure we don't result in world or group writeable files.
      [Ralf S. Engelschall, Daniel Richard G. <straker@MIT.EDU>]

   *) Use full-path /sbin/sysctl in config.guess on FreeBSD because
      not all users have /sbin in their $PATH.
      [Jeff Trawick <trawick@ibm.net>]

   *) Added eight new I/O functions pth_{recv,recvfrom,send,sendto}[_ev](3)
      which correspond to the counterparts in UNIX98 (SUSv2).
      [Ralf S. Engelschall]

   *) Replaced for security reasons sprintf() and vsprintf() calls
      with own pth_snprintf() and pth_vsnprintf() functions from the new
      pth_string.c source.
      [Ralf S. Engelschall]

   *) Speeded up pth_ring_t handling by inlining code and by maintaining
      number of contained nodes explicitly to avoid an O(n) operation when
      the number of elements are requested.
      [Ralf S. Engelschall]

   *) Upgraded to GNU shtool 1.4.9
      [Ralf S. Engelschall]

     _   _____
    / | |___ /
    | |   |_ \
    | |_ ___) |
  __|_(_)____/____________________________________________________________

  Changes between 1.3.6 and 1.3.7 (01-Jul-2000 to 29-Jul-2000)

   *) Backport from GNU Pth 1.4a3:
      Upgraded to GNU shtool 1.5.1. This fixes especially the
      compilation problems under Solaris which were caused by a too
      unportable `shtool version' command from 1.5.0.
      [Ralf S. Engelschall]

   *) Backport from GNU Pth 1.4a3:
      Fixed (unused) pth_time_mul() function: operator & replaced by %
      [Tim Harris <tim.harris@snellwilcox.com>]

  Changes between 1.3.5 and 1.3.6 (17-Apr-2000 to 01-Jul-2000)

   *) Backport from GNU Pth 1.4a2:
      Upgraded to GNU Shtool 1.5.0
      [Ralf S. Engelschall]

   *) Backport from GNU Pth 1.4a2:
      Added OS/390 support to config.sub.
      [Greg Ames <gregames@raleigh.ibm.com>]

   *) Backport from GNU Pth 1.4a2:
      Upgraded rse-pmt.ps paper to latest version as it was
      published on USENIX 2000.
      [Ralf S. Engelschall]

   *) Backport from GNU Pth 1.4a2:
      Upgraded to GNU libtool 1.3.5
      [Ralf S. Engelschall]

   *) Backport from GNU Pth 1.4a2:
      Allow for convinience reasons pth_usleep() to accept also
      arguments greater than 1000000.
      [Harvinder Sawhney <hsawhney@hotmail.com>]

  Changes between 1.3.4 and 1.3.5 (16-Apr-2000 to 17-Apr-2000)

   *) Fixed the <sys/select.h> checks in Autoconf: the logic
      was reversed and this way <sys/select.h> wasn't included on
      platforms were it existed and included where it wasn't present.
      [M. Lavasani <lavasani@connect.org.uk>]

  Changes between 1.3.3 and 1.3.4 (10-Mar-2000 to 16-Apr-2000)

   *) Merged from Pth 1.4a1:
      Fixed usage of `volatile' qualifier in pointer context.
      [Ralf S. Engelschall]

   *) Merged from Pth 1.4a1:
      Now pth.h and pthread.h include the non-standard <sys/select.h>
      header on brain-dead platforms (like AIX) to get the definition of
      fd_set (which is required for the pth_select prototype).
      [Ralf S. Engelschall, Stian Seeberg <stian@nimsoft.no>]

   *) Merged from Pth 1.4a1:
      Fixed auto-configuration for ISC and Win32/Cygwin platforms.
      [Ralf S. Engelschall, Giwon On <Giwon.On@KOM.tu-darmstadt.de>]

   *) Merged from Pth 1.4a1:
      Removed -L. from $(LDFLAGS) in Makefile.in, because this
      is not required (libtool already takes care of this).
      [Ralf S. Engelschall]

   *) Merged from Pth 1.4a1:
      Removed the too explicit `-m 644' from the libtool/shtool
      installation command for libpth.la and instead use a `umask 022'.
      The reason is because some platforms require the shared libraries
      to be executable, so we cannot use an explicit mode. But we use the
      umask to make sure we don't result in world or group writeable files.
      [Ralf S. Engelschall, Daniel Richard G. <straker@MIT.EDU>]

   *) Merged from Pth 1.4a1:
      Use full-path /sbin/sysctl in config.guess on FreeBSD because
      not all users have /sbin in their $PATH.
      [Jeff Trawick <trawick@ibm.net>]

   *) Merged from Pth 1.4a1:
      Upgraded to GNU shtool 1.4.9
      [Ralf S. Engelschall]

  Changes between 1.3.2 and 1.3.3 (24-Feb-2000 to 10-Mar-2000)

   *) Under Solaris and --enable-optimize we now also check for the
      compiler option -fast which is supported by the Sun vendor compilers.
      [Ralf S. Engelschall]

   *) Fixed AC_COMPILER_OPTION macro in aclocal.m4: it wasn't aware of
      the fact that running gcc with not supported options just leads to a
      warning (but gcc still compiles the test program and exists with a 0
      return value).
      [Ralf S. Engelschall]

   *) Fixed semantics of pth_cond_notify() to match POSIX: if one
      notifies a condition variable which has still no waiter, the notify
      operation is a no-op. Previously the condition signal was remembered
      until a waiter arrived. This is now no longer the case.
      [Ralf S. Engelschall, Chris Leishman <chris_leishman@freeonline.com.au>]

   *) Allow pth_yield(<tid>) to yield also to <tid> if <tid> is a
      freshly spawned thread, i.e. in state PTH_STATE_NEW instead of
      PTH_STATE_READY, directly after a pth_spawn. This allows one better
      control under co-routine programming.
      [Ralf S. Engelschall]

   *) Fixed internal pth_pqueue_delete() and pth_pqueue_tail()
      functions to pth_pqueue.c for convinience reasons.
      [Ralf S. Engelschall]

   *) API CHANGE: Changed pth_time(int,int) to pth_time(long,long) and
      pth_timeout(int,int) to pth_timeout(long,long), because pth_time_t
      is a struct timeval and this structure is defined always via two
      long's and not just int's.
      [Ralf S. Engelschall]

   *) Cleaned up source code even more by making sure "signed",
      "unsigned" and "const" qualifiers are used correctly and
      consistently.
      [Ralf S. Engelschall]

   *) Changed default stack size from 32KB to 64KB, because
      on Solaris and other platforms where one can set FD_SETSIZE to
      values up to 65535 an fd_set is up to 8KB. Pth internally (in
      the scheduler in pth_select_ev) has up to three fd_sets (up to
      24KB) on the stack, so a 32KB stack is too risky. Nevertheless
      one can still spawn threads with smaller stacks by using
      PTH_ATTR_STACK_SIZE, of course. Only the scheduler thread remains
      with a 64KB stack, because this thread cannot be configured by the
      application.
      [Ralf S. Engelschall]

   *) Fixed "make depend": a backslash was missing.
      [Edwin Brown <Edwin.Brown@sdrc.com>]

   *) Fixed "make install" for pth.m4 and the situation where
      one compiles from a different sub-directory.
      [Raphael Bossek <raphael.bossek@solutions4linux.de>]

  Changes between 1.3.1 and 1.3.2 (20-Feb-2000 to 24-Feb-2000)

   *) Do no longer use -woff in CFLAGS for IRIX 6.5.2 and above.
      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]

   *) Replaced ``while (1)'' constructs with ``for (;;)'' because some
      compilers like this more and do not warn about constant expressions.
      [Ralf S. Engelschall]

   *) Added hint to pth.pod that ``pth_join(<tid>, NULL)'' is allowed.
      [Ralf S. Engelschall]

   *) Cancel and join the ticker thread explicitly in test_select.c
      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]

   *) Removed unnecessary code in pth_event.c
      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]

   *) Add special namespace workarounds to pthread.h.in for HPUX
      platforms where the pthread_kill() prototypes conflict without this.
      [M. Lavasani <lavasani@connect.org.uk>, Ralf S. Engelschall]

  Changes between 1.3.0 and 1.3.1 (19-Feb-2000 to 20-Feb-2000)

   *) Added HISTORY document where we now write down the evolution
      and release dates of Pth to have a concise history reference.
      [Ralf S. Engelschall]

   *) Added USERS document where we now collect references to
      software packages utilizing GNU Pth.
      [Ralf S. Engelschall]

   *) Fixed a subtle typo in pth.pod about thread-safe functions
      and finished documentation of pth_attr_set/pth_attr_get functions.
      [James Robinson <jlrobins@uncc.edu>, Jeremie <jeremie@jabber.org>]

  Changes between 1.3b3 and 1.3.0 (13-Feb-2000 to 19-Feb-2000)

   *) Polished the various document files.
      [Ralf S. Engelschall]

   *) Use -w in $CFLAGS also on UnixWare 2.1, because its cc
      complains about "not reached" situations because of our macros.
      [Ralf S. Engelschall]

   *) Replaced "NOT REACHED" with "NOTREACHED" in comments
      to be more correct for lint(1).
      [Ralf S. Engelschall]

   *) Updated config.param and fixed its parsing procedure.
      [Ralf S. Engelschall]

   *) Fixed a few typos in pth.pod and adjusted example program
      to make sure it doesn't segfault accidently for the users.
      [Tim Harris <tim_harris@snellwilcox.com>, Raphael Bossek
      <raphael.bossek@solutions4linux.de>, Ralf S. Engelschall]

  Changes between 1.3b2 and 1.3b3 (28-Jan-2000 to 13-Feb-2000)

   *) Fixed PTH_EVENT_FUNC handling (it was not polled really
      in regular intervals if there were no other FUNC events which
      helped) by extending it with an interval time argument. This way
      a PTH_EVENT_FUNC event is likewise a PTH_EVENT_TIME event which
      calls the check function after elapsing and resets itself again if
      it failed.
      [Ralf S. Engelschall]

   *) Removed PTH_EVENT_PID because the waiting on a process id was not
      working as expected (the polling was not done in intervals) and this
      type of event doesn't really fit very well into the multi-threading
      environment of Pth (where the events should be thread-related and not
      process-related). So instead of fixing the pid waiting event handling
      through some unclean workarounds or kludges (it cannot be done very
      different), it was decided to kick it out at all.
      [Ralf S. Engelschall]

   *) Make sure pth_connect[_ev]() doesn't block by internally
      switching to non-blocking mode temporarily if necessary.
      [Chris Leishman <chris_leishman@freeonline.com.au>, Ralf S. Engelschall]

   *) Fix pthread_cond_timedwait by making it more POSIX compliant:
      return ETIMEDOUT instead of 0 if the timeout occurred.
      [Emanuele Fornara <efornara@hotmail.com>, Ralf S. Engelschall]

  Changes between 1.3b1 and 1.3b2 (26-Jan-2000 to 28-Jan-2000)

   *) Let "make striptease" be aware of $TMPDIR and remove temporary
      directory from this dir, too.
      [Ralf S. Engelschall]

   *) Again cleaned up and enhanced the manual page pth.pod.
      [Ralf S. Engelschall]

   *) Added a few more errno_shield { ... } sections to prevent
      the destruction of errno values on error returns.
      [Ralf S. Engelschall]

   *) Added more complete Linux support for --enable-syscall-hard by
      using SYS_socketcall+SOCKOP_{accept,connect} if
      SYS_{accept,connect} doesn't exist.
      [Ralf S. Engelschall]

   *) Added pth_suspend() and pth_resume together with an additional
      SUSPENDED queue. This can be used to temporarily park threads in
      order to move them out of the schedulers scope.
      [Ralf S. Engelschall]

  Changes between 1.3a5 and 1.3b1 (15-Jan-2000 to 26-Jan-2000)

   *) Completely cleaned up the manual page.
      [Eric Hanchrow <offby1@blarg.net>]

   *) Use SYS__newselect instead of SYS_select under Linux and
      --enable-syscall-hard because SYS_select is a dummy stub which
      always just returns -1 and errno = EFAULT.
      [Artem Gr <artem@bizlink.ru>, Ralf S. Engelschall]

  Changes between 1.3a4 and 1.3a5 (08-Jan-2000 to 15-Jan-2000)

   *) Updated HACKING document.
      [Ralf S. Engelschall]

   *) Removed '+DAportable' from HPUX flags to avoid problems.
      [M. Lavasani <lavasani@connect.org.uk>]

   *) Added a workround in Makefile.in (replaced "rm -r" with
      "rm" + "rmdir") for brain-dead AmigaOS.
      [Kriton Kyrimis <kyrimis@cti.gr>]

   *) Fixed example in Pth manual page: peer_len wasn't initialized.
      [Sami Niemi <saminiemi@usa.net>, Ralf S. Engelschall]

   *) Fixed cleanup handling in test_sig.c.
      [Ralf S. Engelschall]

   *) Fixed memory leaks in some test programs.
      [Ralf S. Engelschall]

  Changes between 1.3a3 and 1.3a4 (08-Jan-2000 to 08-Jan-2000)

   *) Translated The Open Group's SUSv2 Threading HTML documentation
      into POD format to form an appendix for pthread.pod. This is for
      convinience reasons when programming with the Pthread API of GNU Pth.
      [Ralf S. Engelschall]

   *) Fixed introduced debugging with "==== THREAD CONTEXT SWITCH ===="
      lines. They were printed always.
      [Ralf S. Engelschall]

  Changes between 1.3a2 and 1.3a3 (30-Dec-1999 to 08-Jan-2000)

   *) Added a PTH_CTRL_DUMPSTATE to pth_ctrl() which helps in debugging.
      a pth_ctrl(PTH_CTRL_DUMPSTATE, stderr) for instance writes out a summary
      page of the internal Pth library state to stderr. This is intended for
      debugging purposes only, of course.
      [Ralf S. Engelschall, Lubos Lunak <l.lunak@sh.cvut.cz>]

   *) Fixed destructor for statically initialized events which failed
      under asynchronous cancellation if those events were merged
      together at the time of cancellation.
      [Igor A. Minyukoff, Ralf S. Engelschall]

   *) Updated the INSTALL document.
      [Ralf S. Engelschall]

   *) Fixed a memory leak in pth_kill(): the TCBs (plus one
      stack) of the main and scheduler thread were not freed.
      [Pete <pfv@grex.org>, Ralf S. Engelschall]

   *) Added developer support for compiling and linking against the
      Dmalloc library (for debugging memory allocation) through the
      --with-dmalloc[=DIR] Autoconf option.
      [Ralf S. Engelschall]

   *) Fixed pth_compat.c: the #define for strerror was buggy.
      [Ralf S. Engelschall]

  Changes between 1.3a1 and 1.3a2 (09-Nov-1999 to 30-Dec-1999)

   *) Added first cut of experimental Win32 support through Cygwin B20.1.
      [Ralf S. Engelschall, Schizoid <schizoid21@yahoo.com>]

   *) Fixed autoheader step by using AC_CHECK_HEADERS() instead of
      AC_CHECK_HEADER() because Autoconf's autoheader.m4 isn't aware of
      AC_CHECK_HEADER().
      [Ralf S. Engelschall]

   *) Adjusted all copyright messages to include the forthcoming
      new year 2000, too.
      [Ralf S. Engelschall]

   *) Fixed $DIFS in pth-config.in and pthread-config.in
      (the tab was lost) and cleaned up pth-config.in a little bit.
      [Ralf S. Engelschall]

   *) Upgraded from GNU libtool 1.3.3 to 1.3.4
      and from GNU shtool 1.4.6 to 1.4.7.
      [Ralf S. Engelschall]

   *) Fixed cleanup handling for main thread. Now pth_kill()
      and pth_exit() in the main thread work as expected.
      [Ralf S. Engelschall, Anton Umnikov <anton@uic.dvgu.ru>]

   *) Fixed Autoconf --host option.
      [Ralf S. Engelschall, Kent Overstreet <kent@hotmail.com>]

   *) Fixed pth_mctx.c by making sure ss_base is mapped to ss_sp
      only if sigaltstack(2) is used for the stack trick.
      [Kriton Kyrimis <kyrimis@cti.gr>]

   *) Fixed return code semantics for error situation in both
      pth_write(3) and pth_writev(3).
      [Rob Quinn <rquinn@sec.sprint.net>, Ralf S. Engelschall]
[--snip--]
