1   ____  _   _
2  |  _ \| |_| |__
3  | |_) | __| '_ \             ``Just because everything is different
4  |  __/| |_| | | |              doesn't mean anything has changed.''
5  |_|    \__|_| |_|                             -- Irene Peter
6
7  pthsem based on
8  GNU Pth - The GNU Portable Threads
9
10  ChangeLog
11  =========
12
13  This is the list of all(!) changes to this Pth source tree. For a list
14  of just the user-visible and/or major changes please have a look at
15  the NEWS file.
16
17     ____    ___
18    |___ \  / _ \
19      __) || | | |
20     / __/ | |_| |
21  __|_____(_)___/_________________________________________________________
22
23  Changes between 2.0.7 and 2.0.8
24   *) Implement monotonic clock support
25      [Martin Koegler]
26
27  Changes between 2.0.6 and 2.0.7 (22-Nov-2005 to 08-Jun-2006)
28
29   *) Upgraded build environment from GNU shtool 2.0.3 to 2.0.6
30      and from GNU libtool 1.5.20 to 1.5.22.
31      [Ralf S. Engelschall]
32
33   *) Let AC_CHECK_PTH use "pth-config --libs --all" instead of just
34      "pth-config --libs" to allow it to work under platforms like
35      Solaris where additional libraries are required.
36      [Ralf S. Engelschall]
37
38   *) Adjusted all copyright messages for new year 2006.
39      [Ralf S. Engelschall]
40
41  Changes between 2.0.5 and 2.0.6 (05-Oct-2005 to 22-Nov-2005)
42
43   *) Add a missing "break" in pth_attr.c:pth_attr_ctrl().
44      [Stefan Schippers <stefan@schippers.it>]
45
46   *) Return an error if pth_kill() is called before pth_init().
47      [Martin Kraemer <Martin.Kraemer@Fujitsu-Siemens.com>]
48
49  Changes between 2.0.4 and 2.0.5 (18-Feb-2005 to 05-Oct-2005)
50
51   *) Upgraded build environment to GNU libtool 1.5.20 and
52      GNU shtool 2.0.3
53      [Ralf S. Engelschall]
54
55  Changes between 2.0.3 and 2.0.4 (03-Dec-2004 to 18-Feb-2005)
56
57   *) Fix internal determination of maximum number in a size_t in
58      the string formatter engine.
59      [Ralf S. Engelschall]
60
61   *) Upgraded build environment to GNU libtool 1.5.14
62      [Ralf S. Engelschall]
63
64   *) Add quotes around function names for AC_DEFUN in pth.m4 to avoid
65      warnings about "underquoted definitions".
66      [Stephane Loeuillet <stephane.loeuillet@cegetel.net>]
67
68   *) Adjusted all copyright messages for new year 2005.
69      [Ralf S. Engelschall]
70
71   *) Do not insist on writing to the source directory on "make install"
72      in order to more closely follow GNU standards.
73      [Bruno Haible <bruno@clisp.org>]
74
75   *) Remove "*.bak" and "*~" files under "make distclean"
76      instead of "make clean".
77      [Bruno Haible <bruno@clisp.org>]
78
79  Changes between 2.0.2 and 2.0.3 (12-Sep-2004 to 03-Dec-2004)
80
81   *) Resurrect the old "make striptease" command by fixing the
82      configure run-time in the stripped down source tree and fixing the
83      list of source files.
84      [Ralf S. Engelschall]
85
86   *) The pth_uctx_save() and pth_uctx_restore() API functions
87      unfortunately were broken by design because they are C
88      _functions_. This leads to one more deadly nesting on the
89      run-time stack which effectively caused the pth_mctx_restore()
90      in pth_uctx_restore() to return to the end of pth_uctx_save()
91      but then the control flow unfortunately returns to the
92      pth_uctx_restore() caller instead of the pth_uctx_save() caller
93      because the call to pth_uctx_restore() had already overwritten the
94      run-time stack position where the original return address for the
95      pth_uctx_save() call was stored.
96
97      The only workaround would be to #define pth_uctx_save() and
98      pth_uctx_restore() as C _macros_, but this then would require that
99      lots of the GNU Pth internals from pth_mctx.c would have to be
100      exported in the GNU Pth API (which in turn is not acceptable). So,
101      the only consequence is to remove the two functions again from the
102      GNU Pth API.
103      [Ralf S. Engelschall, Stefan Brantschen <sbr@acm.org>]
104
105   *) Enhance internal pth_mctx_save() if getcontext(3) is used for the
106      machine context saving by better emulating the setjmp(3) style
107      return code semantics.
108      [Ralf S. Engelschall]
109
110   *) Do not break in pth_msgport_find() if a message port
111      was created with a NULL name.
112      [Ralf S. Engelschall]
113
114   *) Better error checking in pth_key_xxx() functions.
115      [Ralf S. Engelschall]
116
117   *) Added PTH_CTRL_FAVOURNEW control which allows the user
118      to disable the favouring of new threads on scheduling
119      to get more strict priority based scheduling behavior.
120      [Ralf S. Engelschall, Vinu V <Vinu_V@mindtree.com>]
121
122   *) Upgraded build environment to GNU libtool 1.5.10
123      [Ralf S. Engelschall]
124
125  Changes between 2.0.1 and 2.0.2 (13-Jul-2004 to 12-Sep-2004)
126
127   *) Added hard syscall wrappers for send(2) and recv(2).
128      [NetBSD pkgsrc patches]
129
130   *) Internally handle errors returned from pth_event() in order
131      to pass them upstream to the caller in pth_high.c functions.
132      [Ralf S. Engelschall, NetBSD pkgsrc patches]
133
134   *) Fix syscall wrapper for sendto(2).
135      [NetBSD pkgsrc patches]
136
137   *) Use "(char *)NULL" instead of plain "NULL" in last argument to
138      execl(2) to avoid GCC 3.5's "warning: missing sentinel in function call".
139      [Ralf S. Engelschall]
140
141   *) Workaround Autoconf/m4 problems in pth.m4 by using "m4_define"
142      instead of just "define" and no using m4_undefine at all.
143      [Dr. Andreas Mueller <afm@othello.ch>]
144
145   *) Avoid side-effects by defining _XOPEN_SOURCE only temporarily
146      for inclusion of <poll.h> instead of permanently.
147      [Graham Nash <gnash@ncube.com>]
148
149   *) Workaround GCC 2.x and 3.5 (3.4 worked fine) macro parsing
150      behaviour by using a pre-declared function pointer type "typedef
151      int (*pth_event_func_t)(void *);" instead of using an inlined
152      "int (*)(void *)".
153      [Ralf S. Engelschall, Robert Anderson <RWA@sbcglobal.net>]
154
155   *) Fixed prototype for pthread_attr_setschedparam(3) from
156      to use a "const struct sched_param *" argument.
157      [Rafael �vila de Esp�ndola <rafael.espindola@ic.unicamp.br>]
158
159   *) Upgraded build environment to GNU libtool 1.5.8
160      and GNU shtool 2.0.1.
161      [Ralf S. Engelschall]
162
163  Changes between 2.0.0 and 2.0.1 (17-Feb-2003 to 13-Jul-2004)
164
165   *) Fix handling/casting of "int (*)(void *)" callback functions.
166      [Ralf S. Engelschall]
167
168   *) Resolve symbol conflict in pth_string.c between pow10/round
169      and GCC builtins.
170      [Ralf S. Engelschall]
171
172   *) Use GCC 3.3 option "-fno-strict-aliasing" (if available) under
173      Autoconf option "--enable-debug" because mainly pth_mctx.c
174      contains important and correct pointer casting constructs which
175      are not acceptable in "strict aliasing" for GCC.
176      [Ralf S. Engelschall]
177
178   *) Upgraded build environment to GNU autoconf 2.59, GNU libtool 1.5.6
179      and GNU shtool 2.0.0.
180      [Ralf S. Engelschall]
181
182   *) Fixed implementation so that --enable-pthread now correctly
183      implies --enable-syscall-soft.
184      [Steve Alstrin <Steve.Alstrin@NetIQ.com>, Ralf S. Engelschall]
185
186   *) Replace some 0 by more politically correct NULL in pth_string.c
187      [Ralf S. Engelschall]
188
189   *) Adjusted all copyright messages for new year 2004.
190      [Ralf S. Engelschall]
191
192  Changes between 2.0b2 and 2.0.0 (04-Dec-2002 to 17-Feb-2003)
193
194   *) Final source tree polishing before release.
195      [Ralf S. Engelschall]
196
197   *) Wrote summary for Pth 2.0 for the ANNOUNCE document.
198      [Ralf S. Engelschall]
199
200   *) Adjusted all copyright messages for new year 2003.
201      [Ralf S. Engelschall]
202
203  Changes between 2.0b1 and 2.0b2 (08-Nov-2002 to 04-Dec-2002)
204
205   *) Upgraded built environment to GNU Autoconf 2.57.
206      [Ralf S. Engelschall]
207
208   *) Fixed compiler warnings under Linux: require inclusion of <time.h>
209      [Joseph Wayne Norton <norton@alum.mit.edu>]
210
211   *) Fixed error handling in pth_init(3): it now correctly
212      returns an error instead of abort(3)'ing.
213      [Ralf S. Engelschall]
214
215   *) Added soft syscall mapping for nanosleep(3) and
216      usleep(3) functions also to the Pthread API.
217      [Ralf S. Engelschall]
218
219  Changes between 2.0b0 and 2.0b1 (07-Nov-2002 to 08-Nov-2002)
220
221   *) Make pth_poll(3) more compliant to POSIX.1-2001/SUSv3 poll(2).
222      [Ralf S. Engelschall, Nick Hudson <skrll@netbsd.org>]
223
224   *) Make pth_select(3) more compliant to POSIX.1-2001/SUSv3 select(2).
225      This especially fixes the polling-only situation (timeout = (0,0)).
226      [Ralf S. Engelschall]
227
228   *) Make sure that in the even manager a polling-only select(2) call
229      uses a correctly initialized timeout parameter.
230      [Ralf S. Engelschall]
231
232   *) Added soft and hard syscall mapping for nanosleep(3) and
233      usleep(3) functions.
234      [Ralf S. Engelschall]
235
236   *) Fix poll(2) semantics: remove POLLRDNORM from polling
237      result if POLLHUP is detected.
238      [Paolo Bonzini <bonzini@gnu.org>]
239
240   *) Updated PORTING file to include community feedback from
241      the last months.
242      [Ralf S. Engelschall]
243
244  Changes between 1.4.1 and 2.0b0 (27-Jan-2002 to 07-Nov-2002)
245
246   *) Fix dropping of scheduler thread pools and this way fix memory leak.
247      [Ralf S. Engelschall]
248
249   *) Check for PTH_FDMODE_ERROR error conditions internally, too.
250      [Ralf S. Engelschall]
251
252   *) Use the new PTH_STATUS_FAILED event status in the scheduler's
253      event-manager for filedescriptor events if the internal select(2)
254      call returned with an error. Additionally this PTH_STATUS_FAILED
255      is recognized by the high-level API functions (pth_select, etc)
256      and produce the necessary POSIX conforming return codes (usually
257      -1 and errno == EBADF).
258      [Ralf S. Engelschall, Thanh Luu <tluu@synapcity.com>]
259
260   *) The function "int pth_event_occurred(pth_event_t)" was replaced
261      with "pth_status_t pth_event_status(pth_event_t)" where pth_status_t
262      can have values of PTH_STATUS_PENDING (replacing the old FALSE return
263      value of pth_event_occurred), PTH_STATUS_OCCURRED (replacing
264      the old TRUE return value of pth_event_occurred), and
265      PTH_STATUS_FAILED (a new return value indicating an error in
266      processing the event). This was scheduler/event-manager errors can
267      be indicated which happended while processing the event. For
268      backward compatibility reasons, a macro pth_event_occurred() was
269      added. This will be removed soon.
270      [Ralf S. Engelschall]
271
272   *) Upgraded to latest version of the OSSP Autoconf macro
273      AC_CHECK_EXTLIB in order to fix problems with the current
274      Autoconf 2.54 environment.
275      [Ralf S. Engelschall]
276
277   *) Add Autoconf option --with-fdsetsize=NUM which allows to
278      force a particular (usually higher than the default) FD_SETSIZE
279      value for building Pth. Additionally Pth makes sure that the
280      application using Pth does not use an even larger size.
281      [Nick Hudson <skrll@netbsd.org>, Ralf S. Engelschall]
282
283   *) Added thread attribute PTH_ATTR_DISPATCHES which (in bounded
284      attribute objects) is incremented every time the context
285      is switched to the associated thread. This can be used for
286      statistical information.
287      [Ralf S. Engelschall]
288
289   *) Added a stand-alone sub-API for manual user-space context
290      switching. It is somewhat modeled after the POSIX ucontext(3)
291      facility and consists of an opaque data type pth_uctx_t and
292      the management functions pth_uctx_create(), pth_uctx_make(),
293      pth_uctx_save(), pth_uctx_restore(), pth_uctx_switch() and
294      pth_uctx_destroy(). These functions are based on the same
295      underlying machine context switching facility (pth_mctx)
296      the threads in GNU Pth are using. This facility can be used
297      to implement co-routines without a full real multithreading
298      environment or even to implement an own multithreading
299      environment.
300      [Ralf S. Engelschall]
301
302   *) Add a Pth variant of the new POSIX pselect(2) function, including
303      soft and hard syscall mapping support for it.
304      [Ralf S. Engelschall]
305
306   *) More POSIX compliance for pth_select() in case of invalid
307      timeout values and invalid filedescriptors.
308      [Ralf S. Engelschall]
309
310   *) Internally switch from "errno_shield {...}" to "pth_shield {...}"
311      and from "return_errno(..)" to "return pth_error(...)" in order to
312      make the internal error handling a little bit more consistent.
313      [Ralf S. Engelschall]
314
315   *) Cleaned and speeded up the pth_exit() processing.
316      [Ralf S. Engelschall]
317
318   *) Added POSIX-compliant sanity checks for bad filedescriptors
319      to mostly all filedescriptor-based I/O functions in pth_high.c
320      [Ralf S. Engelschall]
321
322   *) Added pth_nanosleep() function.
323      [Nick Hudson <skrll@netbsd.org>, Ralf S. Engelschall]
324
325   *) Allow a NULL name for pth_msgport_create() in order to
326      support locally scoped message ports which are not searched via
327      pth_msgport_find().
328      [Ralf S. Engelschall, Matthew Mondor <mmondor@gobot.ca>]
329
330   *) Added "hard syscall mapping" support for using
331      SYS___sigprocmask14 instead of SYS_sigprocmask on NetBSD.
332      [Nick Hudson <skrll@netbsd.org>]
333
334   *) Changes three direct sigprocmask(2) calls with the corresponding
335      "hard syscall mapping" macro calls.
336      [Nick Hudson <skrll@netbsd.org>]
337
338   *) Add Autoconf support for GNU Hurd.
339      [B. Douglas Hilton <doug.hilton@engineer.com>]
340
341   *) Completely rewrote the "hard syscall mapping".
342
343      Previously the internal syscall exit points were based on syscall(2)
344      only. This is problematic because it by-passes the C library glue
345      code which sometimes performs necessary assembly fiddling in order
346      to call the underlying system calls correctly. Additionally,
347      syscall(2) does not exists everywhere.
348
349      Now the internal exit points are based on a by-syscall dynamically
350      selected combination of RTLD_NEXT+dlsym(2), dlopen(2)+dlsym(2) and
351      the known syscall(2) (in this fallback order). This way the "hard
352      syscall mapping" is a lot more portable and flexible.
353      [Ralf S. Engelschall, Jonathan Schilling <jls@sco.com>]
354
355   *) Added support to pth_poll(3) for the poll(2) XPG.4 flags
356      POLLD{RD,WR}{NORM,BAND}.
357      [Jason Evans <jasone@canonware.com>, Ralf S. Engelschall]
358
359   *) Fixed a long-standing termination bug in pth_exit(3):
360      The event handler of pth_exit(3) didn't let pth_exit(3) finish if
361      there were any threads on the "dead queue" (where non-detached
362      terminated threads are put). Instead it re-entered the scheduler
363      which in turn aborted with "**Pth** SCHEDULER INTERNAL ERROR: no
364      more thread(s) available to schedule!?!?". This is now fixed by
365      not counting the "dead queue" for the determination whether the
366      process as a whole should terminate or not.
367      [Jonathan Schilling <jls@sco.com>]
368
369   *) The manual page stated that system(3) is supported in the
370      "Soft System Call Mapping", but in fact it was forgotten in the
371      implementation.
372      [Jonathan Schilling <jls@sco.com>]
373
374   *) Add #define _PTHREAD_T to pthread.h to guard under SCO UnixWare 7
375      and OpenUNIX 8.
376      [Jonathan Schilling <jls@sco.com>]
377
378   *) Upgraded to Autoconf 2.54 environment and cleaned up internal
379      Autoconf macro usage.
380      [Ralf S. Engelschall]
381
382   *) Fixed lots of English errors in the manual page.
383      [Felix Berger <bflat1@gmx.net>]
384
385   *) Add optional support for OSSP ex based exception handling. GNU
386      Pth (still) does not throw exceptions by itself, but handles the
387      per-thread exception context of OSSP ex to make exception handling
388      local to a thread.
389      [Ralf S. Engelschall]
390
391   *) Removed all generated files from CVS.
392      Use OSSP devtool stuff to re-generate files on demand.
393      Switched to Autoconf 2.52 and Libtool 1.4.2 environment.
394      [Ralf S. Engelschall]
395
396     _  _  _
397    / || || |
398    | || || |_
399    | ||__   _|
400  __|_(_) |_|_____________________________________________________________
401
402  Changes between 1.4.0 and 1.4.1 (24-Mar-2001 to 27-Jan-2002)
403
404   *) Internally make sure an invalid file-descriptor (integer not
405      between 0 and (FD_SETSIZE-1) does not lead to any segfaults or
406      other undefined behaviour. Instead an error is returned and errno
407      is set to EBADF, similar to what the OS functions do. Especially
408      pth_poll() now return with this error (instead of skipping the fd)
409      if an fd in the "struct pollfd" is invalid.
410      [Ralf S. Engelschall, Archie Cobbs <archie@packetdesign.com>]
411
412   *) Correctly support PTH_FDMODE_NONBLOCK in pth_connect and pth_accept.
413      [Archie Cobbs <archie@packetdesign.com>]
414
415   *) Fixed typos in manual page.
416      [Michael Schloh v. Bennewitz <michael.schloh@de.cw.net>,
417       Takashi Ishihara <tishihara@ucdavis.edu>]
418
419   *) For portability reasons changed definition of PTH_EXT_SFIO to 0/1
420      instead of FALSE/TRUE because some external definitions use a
421      casted value and hence make trouble on plain #if constructs.
422      [Staehli Patrik <patrik.staehli@siemens.ch>]
423
424   *) Fixed return value (number of occurred events) of pth_wait().
425      [David Dureau <david.dureau@cea.fr>]
426
427   *) Replaced thread-unsafe usage of a static struct iovec in
428      pth_writev_ev() with a thread-safe stack/heap-based solution.
429      [Ralf S. Engelschall, Mark Burton <markb@ordern.com>]
430
431   *) Replaced antiquated PTH_FLAG_NOJOIN references with the correct
432      PTH_ATTR_JOINABLE references in the manual page.
433      [Takashi Ishihara <tishihara@ucdavis.edu>]
434
435   *) Fixed a (not very subtle) bug in pth_writev_ev() that screwed up
436      output if a partial write happened.
437      [Mark Burton <markb@ordern.com>]
438
439   *) Fixed static initializers PTH_BARRIER_INIT and PTH_COND_INIT.
440      [Shawn Wagner <shawnw@speakeasy.org>]
441
442   *) Typo fixes in pth.pod
443      [<collver@linuxfreemail.com>]
444
445   *) Upgraded to GNU shtool, version 1.5.4.
446      [Ralf S. Engelschall]
447
448   *) Fixed "make striptease": pth_string.c was not included and some
449      commands which were removed at all (and this way causes syntax
450      errors) will be now correctly commented out with ":" commands.
451      [Paolo Bonzini <bonzini@pc-amo3.elet.polimi.it>]
452
453   *) Fixed pth.pod: a closing angle bracket was missing, leading to
454      incorrect POD to XXXX formatting.
455      [Ralf S. Engelschall]
456
457  Changes between 1.4a3 and 1.4.0 (29-Jul-2000 to 24-Mar-2001)
458
459   *) Added PTHREAD_PRIO_XXXX definitions to pthread.h for
460      conformance to the POSIX/SUSv2 Pthread API.
461      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]
462
463   *) Implemented the pthread_{set,get}concurrency() API parts of
464      POSIX/SUSv2, although internally we are (allowed to be) free to not
465      do anything based on the requested level.
466      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]
467
468   *) Adjusted all pthread_attr_getXXXX() functions to use a "const
469      pthread_attr_t *" as the first argument instead of "pthread_attr_t
470      *" to fully-conform to POSIX/SUSv2.
471      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]
472
473   *) Added ENOSYS-stubs for pthread_attr_{set,get}guardsize()
474      to the Pthread API to be more complete with POSIX/SUSv2 specs.
475      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]
476
477   *) Added still missing soft system call mapping to Pth and Pthread
478      APIs for functions recv(2), send(2), recvfrom(2) and sendto(2).
479      [Ralf S. Engelschall, Bill Apt <babt@us.ibm.com>]
480
481   *) Upgraded to GNU shtool 1.5.2
482      [Ralf S. Engelschall]
483
484   *) Fixed an even-manager bug which causes a thread that calls
485      pth_nap() to never woke up if the only elapsed event was a timer.
486      [Archie Cobbs <archie@packetdesign.com>]
487
488   *) Added `#define _BITS_SIGTHREAD_H' to pthread.h to avoid inclusion
489      of bits/sigthread.h (from signal.h) on Linux running glibc6 2.2.
490      [Tomas Pihl <tomas.pihl@netinsight.net>]
491
492   *) Added support to Makefile.in for DESTDIR variable. This allows
493      easier rolling of installation tarballs (for instance from within
494      RPM or similar facilities) by using "make install DESTDIR=/tmp/pth".
495      [Brad Smith <brad@comstyle.com>, Ralf S. Engelschall]
496
497   *) Implemented a pth_system(3) function which is a thread-aware
498      clone of the POSIX system(2) function.
499      [Ralf S. Engelschall]
500
501   *) Fixed typos in pth.pod: "fd" -> "s" for pth_connect/pth_accept.
502      [Sebastian <scut@nb.in-berlin.de>]
503
504   *) Make --disable-shared the default under Solaris-2.[78]/x86, because
505      it is known to segfault sporadically if Pth is built as a DSO.  As
506      traces showed, it is not a Pth problem, but it looks like a problem with
507      the dynamic linker on Solaris/x86.  The same Solaris versions on SPARC
508      don't have this problem.
509      [Ralf S. Engelschall]
510
511   *) Updated copyright messages to cover new year 2001.
512      [Ralf S. Engelschall]
513
514   *) Fixed quoting in configure.in
515      [Ralf S. Engelschall]
516
517   *) Let pth_sleep(3) and pth_usleep(3) immediately return
518      if an argument of zero is given.
519      [Ralf S. Engelschall]
520
521   *) Fixed pthread.pod: the newer pod2man versions seems to dislike
522      embedded comments, so I moved them to the top of the file.
523      [Ralf S. Engelschall]
524
525   *) Changed CVS URL in HACKING document.
526      [Ralf S. Engelschall]
527
528   *) Mention http://www.mail-archive.com/pth-users@gnu.org/ in pth.pod
529      and SUPPORT document.
530      [Ralf S. Engelschall]
531
532  Changes between 1.4a2 and 1.4a3 (01-Jul-2000 to 29-Jul-2000)
533
534   *) Upgraded to GNU shtool 1.5.1
535      [Ralf S. Engelschall]
536
537   *) Fixed (unused) pth_time_mul() function: operator & replaced by %
538      [Tim Harris <tim.harris@snellwilcox.com>]
539
540   *) Use --disable-lock for ltconfig.
541      [Ralf S. Engelschall]
542
543   *) Fixed a few typos in pth.pod.
544      [Thomas Klausner <wiz@danbala.tuwien.ac.at>]
545
546  Changes between 1.4a1 and 1.4a2 (16-Apr-2000 to 01-Jul-2000)
547
548   *) Upgraded to GNU Shtool 1.5.0
549      [Ralf S. Engelschall]
550
551   *) Added OS/390 support to config.sub.
552      [Greg Ames <gregames@raleigh.ibm.com>]
553
554   *) Upgraded rse-pmt.ps paper to latest version as it was
555      published on USENIX 2000.
556      [Ralf S. Engelschall]
557
558   *) Stack boundary fixes for Interactive Unix support
559      (--with-mctx-dsp=sjljisc). This allows one also to use this
560      variant for Interix on Window-NT (a POSIX.1 compliant subsystem).
561      [Kim Jongsu <kimjs@moasys.com>]
562
563   *) Upgraded to GNU Libtool 1.3.5
564      [Ralf S. Engelschall]
565
566   *) Fixed config.param parsing: IF is now also allowed on
567      VARIABLE=VALUE lines.
568      [Ralf S. Engelschall]
569
570   *) Allow for convinience reasons pth_usleep() to accept also
571      arguments greater than 1000000.
572      [Harvinder Sawhney <hsawhney@hotmail.com>]
573
574   *) Updated HACKING document.
575      [Ralf S. Engelschall]
576
577   *) Fixed warnings in pth_string.c related to va_arg() usage
578      and implicit type conversions.
579      [Ralf S. Engelschall]
580
581   *) Merge from Pth 1.3.5:
582      Fixed the <sys/select.h> checks in Autoconf: the logic
583      was reversed and this way <sys/select.h> wasn't included on
584      platforms were it existed and included where it wasn't present.
585      [M. Lavasani <lavasani@connect.org.uk>]
586
587  Changes between 1.3.3 and 1.4a1 (10-Mar-2000 to 16-Apr-2000)
588
589   *) Added a new feature to config.param: parameters can be extended
590      with ``<space>IF<space><shell-test>''. Then the preceeding
591      parameter is only added to the command line if the <shell-test>
592      returns 0. <shell-test> can be anything which is possible in a
593      Bourne-Shell `if' construct's expression.
594      [Ralf S. Engelschall]
595
596   *) Fixed usage of `volatile' qualifier in pointer context.
597      [Ralf S. Engelschall]
598
599   *) Now check also for -Wno-long-long compiler option under
600      --enable-debug, because pth_string.c contains `long long' stuff.
601      [Ralf S. Engelschall]
602
603   *) Now pth.h and pthread.h include the non-standard <sys/select.h>
604      header on brain-dead platforms (like AIX) to get the definition of
605      fd_set (which is required for the pth_select prototype).
606      [Ralf S. Engelschall, Stian Seeberg <stian@nimsoft.no>]
607
608   *) Fixed auto-configuration for ISC and Win32/Cygwin platforms.
609      [Ralf S. Engelschall, Giwon On <Giwon.On@KOM.tu-darmstadt.de>]
610
611   *) Removed -L. from $(LDFLAGS) in Makefile.in, because this
612      is not required (libtool already takes care of this).
613      [Ralf S. Engelschall]
614
615   *) Added a RPM spec file pth.spec which allows one to build RPM
616      packages directly from the Pth distribution tarball through a
617      simple `rpm -tb pth-1.X.Y.tar.gz' call.
618      [Daniel Richard G. <straker@MIT.EDU>]
619
620   *) Removed the too explicit `-m 644' from the libtool/shtool
621      installation command for libpth.la and instead use a `umask 022'.
622      The reason is because some platforms require the shared libraries
623      to be executable, so we cannot use an explicit mode. But we use the
624      umask to make sure we don't result in world or group writeable files.
625      [Ralf S. Engelschall, Daniel Richard G. <straker@MIT.EDU>]
626
627   *) Use full-path /sbin/sysctl in config.guess on FreeBSD because
628      not all users have /sbin in their $PATH.
629      [Jeff Trawick <trawick@ibm.net>]
630
631   *) Added eight new I/O functions pth_{recv,recvfrom,send,sendto}[_ev](3)
632      which correspond to the counterparts in UNIX98 (SUSv2).
633      [Ralf S. Engelschall]
634
635   *) Replaced for security reasons sprintf() and vsprintf() calls
636      with own pth_snprintf() and pth_vsnprintf() functions from the new
637      pth_string.c source.
638      [Ralf S. Engelschall]
639
640   *) Speeded up pth_ring_t handling by inlining code and by maintaining
641      number of contained nodes explicitly to avoid an O(n) operation when
642      the number of elements are requested.
643      [Ralf S. Engelschall]
644
645   *) Upgraded to GNU shtool 1.4.9
646      [Ralf S. Engelschall]
647
648     _   _____
649    / | |___ /
650    | |   |_ \
651    | |_ ___) |
652  __|_(_)____/____________________________________________________________
653
654  Changes between 1.3.6 and 1.3.7 (01-Jul-2000 to 29-Jul-2000)
655
656   *) Backport from GNU Pth 1.4a3:
657      Upgraded to GNU shtool 1.5.1. This fixes especially the
658      compilation problems under Solaris which were caused by a too
659      unportable `shtool version' command from 1.5.0.
660      [Ralf S. Engelschall]
661
662   *) Backport from GNU Pth 1.4a3:
663      Fixed (unused) pth_time_mul() function: operator & replaced by %
664      [Tim Harris <tim.harris@snellwilcox.com>]
665
666  Changes between 1.3.5 and 1.3.6 (17-Apr-2000 to 01-Jul-2000)
667
668   *) Backport from GNU Pth 1.4a2:
669      Upgraded to GNU Shtool 1.5.0
670      [Ralf S. Engelschall]
671
672   *) Backport from GNU Pth 1.4a2:
673      Added OS/390 support to config.sub.
674      [Greg Ames <gregames@raleigh.ibm.com>]
675
676   *) Backport from GNU Pth 1.4a2:
677      Upgraded rse-pmt.ps paper to latest version as it was
678      published on USENIX 2000.
679      [Ralf S. Engelschall]
680
681   *) Backport from GNU Pth 1.4a2:
682      Upgraded to GNU libtool 1.3.5
683      [Ralf S. Engelschall]
684
685   *) Backport from GNU Pth 1.4a2:
686      Allow for convinience reasons pth_usleep() to accept also
687      arguments greater than 1000000.
688      [Harvinder Sawhney <hsawhney@hotmail.com>]
689
690  Changes between 1.3.4 and 1.3.5 (16-Apr-2000 to 17-Apr-2000)
691
692   *) Fixed the <sys/select.h> checks in Autoconf: the logic
693      was reversed and this way <sys/select.h> wasn't included on
694      platforms were it existed and included where it wasn't present.
695      [M. Lavasani <lavasani@connect.org.uk>]
696
697  Changes between 1.3.3 and 1.3.4 (10-Mar-2000 to 16-Apr-2000)
698
699   *) Merged from Pth 1.4a1:
700      Fixed usage of `volatile' qualifier in pointer context.
701      [Ralf S. Engelschall]
702
703   *) Merged from Pth 1.4a1:
704      Now pth.h and pthread.h include the non-standard <sys/select.h>
705      header on brain-dead platforms (like AIX) to get the definition of
706      fd_set (which is required for the pth_select prototype).
707      [Ralf S. Engelschall, Stian Seeberg <stian@nimsoft.no>]
708
709   *) Merged from Pth 1.4a1:
710      Fixed auto-configuration for ISC and Win32/Cygwin platforms.
711      [Ralf S. Engelschall, Giwon On <Giwon.On@KOM.tu-darmstadt.de>]
712
713   *) Merged from Pth 1.4a1:
714      Removed -L. from $(LDFLAGS) in Makefile.in, because this
715      is not required (libtool already takes care of this).
716      [Ralf S. Engelschall]
717
718   *) Merged from Pth 1.4a1:
719      Removed the too explicit `-m 644' from the libtool/shtool
720      installation command for libpth.la and instead use a `umask 022'.
721      The reason is because some platforms require the shared libraries
722      to be executable, so we cannot use an explicit mode. But we use the
723      umask to make sure we don't result in world or group writeable files.
724      [Ralf S. Engelschall, Daniel Richard G. <straker@MIT.EDU>]
725
726   *) Merged from Pth 1.4a1:
727      Use full-path /sbin/sysctl in config.guess on FreeBSD because
728      not all users have /sbin in their $PATH.
729      [Jeff Trawick <trawick@ibm.net>]
730
731   *) Merged from Pth 1.4a1:
732      Upgraded to GNU shtool 1.4.9
733      [Ralf S. Engelschall]
734
735  Changes between 1.3.2 and 1.3.3 (24-Feb-2000 to 10-Mar-2000)
736
737   *) Under Solaris and --enable-optimize we now also check for the
738      compiler option -fast which is supported by the Sun vendor compilers.
739      [Ralf S. Engelschall]
740
741   *) Fixed AC_COMPILER_OPTION macro in aclocal.m4: it wasn't aware of
742      the fact that running gcc with not supported options just leads to a
743      warning (but gcc still compiles the test program and exists with a 0
744      return value).
745      [Ralf S. Engelschall]
746
747   *) Fixed semantics of pth_cond_notify() to match POSIX: if one
748      notifies a condition variable which has still no waiter, the notify
749      operation is a no-op. Previously the condition signal was remembered
750      until a waiter arrived. This is now no longer the case.
751      [Ralf S. Engelschall, Chris Leishman <chris_leishman@freeonline.com.au>]
752
753   *) Allow pth_yield(<tid>) to yield also to <tid> if <tid> is a
754      freshly spawned thread, i.e. in state PTH_STATE_NEW instead of
755      PTH_STATE_READY, directly after a pth_spawn. This allows one better
756      control under co-routine programming.
757      [Ralf S. Engelschall]
758
759   *) Fixed internal pth_pqueue_delete() and pth_pqueue_tail()
760      functions to pth_pqueue.c for convinience reasons.
761      [Ralf S. Engelschall]
762
763   *) API CHANGE: Changed pth_time(int,int) to pth_time(long,long) and
764      pth_timeout(int,int) to pth_timeout(long,long), because pth_time_t
765      is a struct timeval and this structure is defined always via two
766      long's and not just int's.
767      [Ralf S. Engelschall]
768
769   *) Cleaned up source code even more by making sure "signed",
770      "unsigned" and "const" qualifiers are used correctly and
771      consistently.
772      [Ralf S. Engelschall]
773
774   *) Changed default stack size from 32KB to 64KB, because
775      on Solaris and other platforms where one can set FD_SETSIZE to
776      values up to 65535 an fd_set is up to 8KB. Pth internally (in
777      the scheduler in pth_select_ev) has up to three fd_sets (up to
778      24KB) on the stack, so a 32KB stack is too risky. Nevertheless
779      one can still spawn threads with smaller stacks by using
780      PTH_ATTR_STACK_SIZE, of course. Only the scheduler thread remains
781      with a 64KB stack, because this thread cannot be configured by the
782      application.
783      [Ralf S. Engelschall]
784
785   *) Fixed "make depend": a backslash was missing.
786      [Edwin Brown <Edwin.Brown@sdrc.com>]
787
788   *) Fixed "make install" for pth.m4 and the situation where
789      one compiles from a different sub-directory.
790      [Raphael Bossek <raphael.bossek@solutions4linux.de>]
791
792  Changes between 1.3.1 and 1.3.2 (20-Feb-2000 to 24-Feb-2000)
793
794   *) Do no longer use -woff in CFLAGS for IRIX 6.5.2 and above.
795      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]
796
797   *) Replaced ``while (1)'' constructs with ``for (;;)'' because some
798      compilers like this more and do not warn about constant expressions.
799      [Ralf S. Engelschall]
800
801   *) Added hint to pth.pod that ``pth_join(<tid>, NULL)'' is allowed.
802      [Ralf S. Engelschall]
803
804   *) Cancel and join the ticker thread explicitly in test_select.c
805      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]
806
807   *) Removed unnecessary code in pth_event.c
808      [Edwin Brown <Edwin.Brown@sdrc.com>, Ralf S. Engelschall]
809
810   *) Add special namespace workarounds to pthread.h.in for HPUX
811      platforms where the pthread_kill() prototypes conflict without this.
812      [M. Lavasani <lavasani@connect.org.uk>, Ralf S. Engelschall]
813
814  Changes between 1.3.0 and 1.3.1 (19-Feb-2000 to 20-Feb-2000)
815
816   *) Added HISTORY document where we now write down the evolution
817      and release dates of Pth to have a concise history reference.
818      [Ralf S. Engelschall]
819
820   *) Added USERS document where we now collect references to
821      software packages utilizing GNU Pth.
822      [Ralf S. Engelschall]
823
824   *) Fixed a subtle typo in pth.pod about thread-safe functions
825      and finished documentation of pth_attr_set/pth_attr_get functions.
826      [James Robinson <jlrobins@uncc.edu>, Jeremie <jeremie@jabber.org>]
827
828  Changes between 1.3b3 and 1.3.0 (13-Feb-2000 to 19-Feb-2000)
829
830   *) Polished the various document files.
831      [Ralf S. Engelschall]
832
833   *) Use -w in $CFLAGS also on UnixWare 2.1, because its cc
834      complains about "not reached" situations because of our macros.
835      [Ralf S. Engelschall]
836
837   *) Replaced "NOT REACHED" with "NOTREACHED" in comments
838      to be more correct for lint(1).
839      [Ralf S. Engelschall]
840
841   *) Updated config.param and fixed its parsing procedure.
842      [Ralf S. Engelschall]
843
844   *) Fixed a few typos in pth.pod and adjusted example program
845      to make sure it doesn't segfault accidently for the users.
846      [Tim Harris <tim_harris@snellwilcox.com>, Raphael Bossek
847      <raphael.bossek@solutions4linux.de>, Ralf S. Engelschall]
848
849  Changes between 1.3b2 and 1.3b3 (28-Jan-2000 to 13-Feb-2000)
850
851   *) Fixed PTH_EVENT_FUNC handling (it was not polled really
852      in regular intervals if there were no other FUNC events which
853      helped) by extending it with an interval time argument. This way
854      a PTH_EVENT_FUNC event is likewise a PTH_EVENT_TIME event which
855      calls the check function after elapsing and resets itself again if
856      it failed.
857      [Ralf S. Engelschall]
858
859   *) Removed PTH_EVENT_PID because the waiting on a process id was not
860      working as expected (the polling was not done in intervals) and this
861      type of event doesn't really fit very well into the multi-threading
862      environment of Pth (where the events should be thread-related and not
863      process-related). So instead of fixing the pid waiting event handling
864      through some unclean workarounds or kludges (it cannot be done very
865      different), it was decided to kick it out at all.
866      [Ralf S. Engelschall]
867
868   *) Make sure pth_connect[_ev]() doesn't block by internally
869      switching to non-blocking mode temporarily if necessary.
870      [Chris Leishman <chris_leishman@freeonline.com.au>, Ralf S. Engelschall]
871
872   *) Fix pthread_cond_timedwait by making it more POSIX compliant:
873      return ETIMEDOUT instead of 0 if the timeout occurred.
874      [Emanuele Fornara <efornara@hotmail.com>, Ralf S. Engelschall]
875
876  Changes between 1.3b1 and 1.3b2 (26-Jan-2000 to 28-Jan-2000)
877
878   *) Let "make striptease" be aware of $TMPDIR and remove temporary
879      directory from this dir, too.
880      [Ralf S. Engelschall]
881
882   *) Again cleaned up and enhanced the manual page pth.pod.
883      [Ralf S. Engelschall]
884
885   *) Added a few more errno_shield { ... } sections to prevent
886      the destruction of errno values on error returns.
887      [Ralf S. Engelschall]
888
889   *) Added more complete Linux support for --enable-syscall-hard by
890      using SYS_socketcall+SOCKOP_{accept,connect} if
891      SYS_{accept,connect} doesn't exist.
892      [Ralf S. Engelschall]
893
894   *) Added pth_suspend() and pth_resume together with an additional
895      SUSPENDED queue. This can be used to temporarily park threads in
896      order to move them out of the schedulers scope.
897      [Ralf S. Engelschall]
898
899  Changes between 1.3a5 and 1.3b1 (15-Jan-2000 to 26-Jan-2000)
900
901   *) Completely cleaned up the manual page.
902      [Eric Hanchrow <offby1@blarg.net>]
903
904   *) Use SYS__newselect instead of SYS_select under Linux and
905      --enable-syscall-hard because SYS_select is a dummy stub which
906      always just returns -1 and errno = EFAULT.
907      [Artem Gr <artem@bizlink.ru>, Ralf S. Engelschall]
908
909  Changes between 1.3a4 and 1.3a5 (08-Jan-2000 to 15-Jan-2000)
910
911   *) Updated HACKING document.
912      [Ralf S. Engelschall]
913
914   *) Removed '+DAportable' from HPUX flags to avoid problems.
915      [M. Lavasani <lavasani@connect.org.uk>]
916
917   *) Added a workround in Makefile.in (replaced "rm -r" with
918      "rm" + "rmdir") for brain-dead AmigaOS.
919      [Kriton Kyrimis <kyrimis@cti.gr>]
920
921   *) Fixed example in Pth manual page: peer_len wasn't initialized.
922      [Sami Niemi <saminiemi@usa.net>, Ralf S. Engelschall]
923
924   *) Fixed cleanup handling in test_sig.c.
925      [Ralf S. Engelschall]
926
927   *) Fixed memory leaks in some test programs.
928      [Ralf S. Engelschall]
929
930  Changes between 1.3a3 and 1.3a4 (08-Jan-2000 to 08-Jan-2000)
931
932   *) Translated The Open Group's SUSv2 Threading HTML documentation
933      into POD format to form an appendix for pthread.pod. This is for
934      convinience reasons when programming with the Pthread API of GNU Pth.
935      [Ralf S. Engelschall]
936
937   *) Fixed introduced debugging with "==== THREAD CONTEXT SWITCH ===="
938      lines. They were printed always.
939      [Ralf S. Engelschall]
940
941  Changes between 1.3a2 and 1.3a3 (30-Dec-1999 to 08-Jan-2000)
942
943   *) Added a PTH_CTRL_DUMPSTATE to pth_ctrl() which helps in debugging.
944      a pth_ctrl(PTH_CTRL_DUMPSTATE, stderr) for instance writes out a summary
945      page of the internal Pth library state to stderr. This is intended for
946      debugging purposes only, of course.
947      [Ralf S. Engelschall, Lubos Lunak <l.lunak@sh.cvut.cz>]
948
949   *) Fixed destructor for statically initialized events which failed
950      under asynchronous cancellation if those events were merged
951      together at the time of cancellation.
952      [Igor A. Minyukoff, Ralf S. Engelschall]
953
954   *) Updated the INSTALL document.
955      [Ralf S. Engelschall]
956
957   *) Fixed a memory leak in pth_kill(): the TCBs (plus one
958      stack) of the main and scheduler thread were not freed.
959      [Pete <pfv@grex.org>, Ralf S. Engelschall]
960
961   *) Added developer support for compiling and linking against the
962      Dmalloc library (for debugging memory allocation) through the
963      --with-dmalloc[=DIR] Autoconf option.
964      [Ralf S. Engelschall]
965
966   *) Fixed pth_compat.c: the #define for strerror was buggy.
967      [Ralf S. Engelschall]
968
969  Changes between 1.3a1 and 1.3a2 (09-Nov-1999 to 30-Dec-1999)
970
971   *) Added first cut of experimental Win32 support through Cygwin B20.1.
972      [Ralf S. Engelschall, Schizoid <schizoid21@yahoo.com>]
973
974   *) Fixed autoheader step by using AC_CHECK_HEADERS() instead of
975      AC_CHECK_HEADER() because Autoconf's autoheader.m4 isn't aware of
976      AC_CHECK_HEADER().
977      [Ralf S. Engelschall]
978
979   *) Adjusted all copyright messages to include the forthcoming
980      new year 2000, too.
981      [Ralf S. Engelschall]
982
983   *) Fixed $DIFS in pth-config.in and pthread-config.in
984      (the tab was lost) and cleaned up pth-config.in a little bit.
985      [Ralf S. Engelschall]
986
987   *) Upgraded from GNU libtool 1.3.3 to 1.3.4
988      and from GNU shtool 1.4.6 to 1.4.7.
989      [Ralf S. Engelschall]
990
991   *) Fixed cleanup handling for main thread. Now pth_kill()
992      and pth_exit() in the main thread work as expected.
993      [Ralf S. Engelschall, Anton Umnikov <anton@uic.dvgu.ru>]
994
995   *) Fixed Autoconf --host option.
996      [Ralf S. Engelschall, Kent Overstreet <kent@hotmail.com>]
997
998   *) Fixed pth_mctx.c by making sure ss_base is mapped to ss_sp
999      only if sigaltstack(2) is used for the stack trick.
1000      [Kriton Kyrimis <kyrimis@cti.gr>]
1001
1002   *) Fixed return code semantics for error situation in both
1003      pth_write(3) and pth_writev(3).
1004      [Rob Quinn <rquinn@sec.sprint.net>, Ralf S. Engelschall]
1005
1006   *) Stripped trailing whitespaces from all source files.
1007      [Ralf S. Engelschall]
1008
1009  Changes between 1.2.0 and 1.3a1 (31-Oct-1999 to 09-Nov-1999)
1010
1011   *) Changed AC_CHECK_STRUCTATTR macro from a too weak AC_TRY_EGREP to a
1012      AC_TRY_LINK based approach to make sure the ss_sp/ss_base checks do not
1013      fail on platforms where sys/signal.h contains both sigstack and
1014      sigaltstack defines.
1015      [Ralf S. Engelschall]
1016
1017   *) Added a large "BUILD ENVIRONMENT" section to pth.pod which describes
1018      three ways to establish build environments for Pth based packages.
1019      [Ralf S. Engelschall]
1020
1021   *) Updated the pth-config.pod and pthread-config.pod for
1022      missing option entries.
1023      [Ralf S. Engelschall]
1024
1025   *) Added --datadir and --acdir options to pth-config. Especially
1026      --acdir can be used in conjunction with Autoconf's aclocal program to
1027      retrieve the AC_CHECK_PTH macro, e.g. aclocal --output-
1028      --acdir=`pth-config --acdir` prints the macro definition to stdout.
1029      [Ralf S. Engelschall]
1030
1031   *) Added a new, very flexible and robust pth.m4 Autoconf macro file which
1032      is installed under $datadir/aclocal/ and can be used by third-party
1033      Autoconf scripts to locate GNU Pth.  Syntax is:
1034      AC_CHECK_PTH([MIN-VERSION [,DEFAULT-WITH-PTH [,DEFAULT-WITH-PTH-TEST
1035      [,EXTEND-VARS [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]]]]).
1036      [Ralf S. Engelschall, Markus Fischer <mfischer@josefine.ben.tuwien.ac.at>]
1037
1038   *) Added PTH_VERSION_{STR,HEX} to pth.h
1039      [Ralf S. Engelschall]
1040
1041   *) Fixed AC_CHECK_EXTLIB macro.
1042      [Ralf S. Engelschall]
1043
1044   *) Added a new developer target `make striptease' which uses the
1045      new striptease.{pl,mk} files to strip down the Pth source tree to a
1046      minimum (approx. 1/3 of size). The generated striptease.dir/ area can be
1047      then imported into third-party source trees and there blows up the stuff
1048      only as minimal as possible.
1049      [Ralf S. Engelschall]
1050
1051   *) Cleaned up copyright messages in source files.
1052      [Ralf S. Engelschall]
1053
1054   *) Rewritten the Linux guessing part in config.guess to
1055      create more useful GNU platform triples for Linux flavors.
1056      [Ralf S. Engelschall]
1057
1058     _   ____
1059    / | |___ \
1060    | |   __) |
1061    | |_ / __/
1062  __|_(_)_____|___________________________________________________________
1063
1064  Changes between 1.2.2 and 1.2.3 (08-Jan-2000 to 04-Feb-2000)
1065
1066   *) Backport from Pth 1.3b3:
1067      Fix pthread_cond_timedwait by making it more POSIX compliant:
1068      return ETIMEDOUT instead of 0 if the timeout occurred.
1069      [Emanuele Fornara <efornara@hotmail.com>, Ralf S. Engelschall]
1070
1071   *) Backport from Pth 1.3b2:
1072      Added more complete Linux support for --enable-syscall-hard by
1073      using SYS_socketcall+SOCKOP_{accept,connect} if
1074      SYS_{accept,connect} doesn't exist.
1075      [Ralf S. Engelschall]
1076
1077   *) Backport from Pth 1.3b2:
1078      Added a few more errno_shield { ... } sections to prevent
1079      the destruction of errno values on error returns.
1080      [Ralf S. Engelschall]
1081
1082   *) Backport from Pth 1.3b1:
1083      Use SYS__newselect instead of SYS_select under Linux and
1084      --enable-syscall-hard because SYS_select is a dummy stub which
1085      always just returns -1 and errno = EFAULT.
1086      [Artem Gr <artem@bizlink.ru>, Ralf S. Engelschall]
1087
1088   *) Backport from Pth 1.3a5:
1089      Removed '+DAportable' from HPUX flags to avoid problems.
1090      [M. Lavasani <lavasani@connect.org.uk>]
1091
1092   *) Backport from Pth 1.3a5:
1093      Added a workround in Makefile.in (replaced "rm -r" with
1094      "rm" + "rmdir") for brain-dead AmigaOS.
1095      [Kriton Kyrimis <kyrimis@cti.gr>]
1096
1097   *) Backport from Pth 1.3a5:
1098      Fixed example in Pth manual page: peer_len wasn't initialized.
1099      [Sami Niemi <saminiemi@usa.net>, Ralf S. Engelschall]
1100
1101   *) Backport from Pth 1.3a5:
1102      Fixed memory leaks in some test programs.
1103      [Ralf S. Engelschall]
1104
1105  Changes between 1.2.1 and 1.2.2 (14-Nov-1999 to 08-Jan-2000)
1106
1107   *) Backport from Pth 1.3a3:
1108      Updated the INSTALL document.
1109      [Ralf S. Engelschall]
1110
1111   *) Backport from Pth 1.3a3:
1112      Fixed a memory leak in pth_kill(): the TCBs (plus one
1113      stack) of the main and scheduler thread were not freed.
1114      [Pete <pfv@grex.org>, Ralf S. Engelschall]
1115
1116   *) Backport from Pth 1.3a3:
1117      Fixed pth_compat.c: the #define for strerror was buggy.
1118      [Ralf S. Engelschall]
1119
1120   *) Backport from Pth 1.3a3:
1121      Fixed destructor for statically initialized events which failed
1122      under asynchronous cancellation if those events were merged
1123      together at the time of cancellation.
1124      [Igor A. Minyukoff, Ralf S. Engelschall]
1125
1126   *) Backport from Pth 1.3a2:
1127      Upgraded from GNU libtool 1.3.3 to 1.3.4
1128      and from GNU shtool 1.4.6 to 1.4.7.
1129      [Ralf S. Engelschall]
1130
1131   *) Backport from Pth 1.3a2:
1132      Fixed pth_mctx.c by making sure ss_base is mapped to ss_sp
1133      only if sigaltstack(2) is used for the stack trick.
1134      [Kriton Kyrimis <kyrimis@cti.gr>]
1135
1136  Changes between 1.2.0 and 1.2.1 (31-Oct-1999 to 14-Nov-1999)
1137
1138   *) Backport from Pth 1.3a2:
1139      Fixed return code semantics for error situation in both
1140      pth_write(3) and pth_writev(3).
1141      [Rob Quinn <rquinn@sec.sprint.net>, Ralf S. Engelschall]
1142
1143   *) Backport from Pth 1.3a1:
1144      Changed AC_CHECK_STRUCTATTR macro from a too weak AC_TRY_EGREP to a
1145      AC_TRY_LINK based approach to make sure the ss_sp/ss_base checks do not
1146      fail on platforms where sys/signal.h contains both sigstack and
1147      sigaltstack defines.
1148      [Ralf S. Engelschall]
1149
1150   *) Backport from Pth 1.3a1:
1151      Fixed AC_CHECK_EXTLIB macro.
1152      [Ralf S. Engelschall]
1153
1154   *) Backport from Pth 1.3a1:
1155      Cleaned up copyright messages in source files.
1156      [Ralf S. Engelschall]
1157
1158  Changes between 1.2b8 and 1.2.0 (26-Oct-1999 to 31-Oct-1999)
1159
1160   *) Finally tested the package on all major Unix platforms to which
1161      I've direct access (see PORTING document for details).
1162      [Ralf S. Engelschall]
1163
1164   *) Fixed a few remaining typos in pth.pod; adjusted README file for
1165      release and included ANNOUNCE document in source tree.
1166      [Ralf S. Engelschall]
1167
1168   *) Fixed special Autoconf detections for UnixWare 2.x platform.
1169      [Ralf S. Engelschall]
1170
1171   *) Fixed special Autoconf detections for Linux platforms.
1172      [Ralf S. Engelschall]
1173
1174   *) Updated INSTALL document.
1175      [Ralf S. Engelschall]
1176
1177   *) Added -w option to CFLAGS under HP-UX with CC.
1178      [Ralf S. Engelschall]
1179
1180  Changes between 1.2b7 and 1.2b8 (22-Oct-1999 to 26-Oct-1999)
1181
1182   *) Fixed Pthread compilation under NetBSD 1.4 and Solaris.  The pth.h
1183      header has to skip the fallbacks (and not the pthread.h header) when
1184      compiling pthread.c. This subtle difference is important because
1185      ordering is important for correct namespace hiding.
1186      [Ralf S. Engelschall, John A. Maier <johnam@mail.kemper.org>]
1187
1188   *) Greatly enhanced AC_CHECK_ARGTYPE macro to support more
1189      vendor headers and their syntax.
1190      [Ralf S. Engelschall]
1191
1192   *) Added two new Autoconf options: --enable-maintainer for enabling
1193      maintainer targets (now the x.pod -> x.N translation is disabled per
1194      default and is enabled with this option only) and --enable-tests which
1195      is on per default and can be used (as --disable-tests) to disable the
1196      building of the test programs.
1197      [Ralf S. Engelschall]
1198
1199   *) Fixed autoheader processing with a new acheader.m4 file.
1200      [Ralf S. Engelschall]
1201
1202   *) Stripped down shtool script to 7 of 17 ingredients to reduce source
1203      tree by approx. 40KB.
1204      [Ralf S. Engelschall]
1205
1206   *) Updated acconfig.h: HAVE_NFDS_T was missing.
1207      [Ralf S. Engelschall]
1208
1209   *) Fixed `make dist': CVS temporary files (.#xx) were included
1210      into the distribution tarball.
1211      [Ralf S. Engelschall]
1212
1213  Changes between 1.2b6 and 1.2b7 (28-Sep-1999 to 22-Oct-1999)
1214
1215   *) Add the .gdbinit file also to the distribution tarball.
1216      [Ralf S. Engelschall]
1217
1218   *) Re-acquire the mutex corresponding to a condition variable when
1219      pth_cond_await() is cancelled, in order to restore the condition
1220      variable semantics.
1221      [Lubos Lunak <l.lunak@email.cz>]
1222
1223   *) Fixed cancellation point handling.
1224      [Lubos Lunak <l.lunak@email.cz>]
1225
1226   *) Added support for poll(2)'s POSIX nfds_t argument type.
1227      [Ralf S. Engelschall]
1228
1229   *) Fixed AC_CHECK_ARGTYPE: it now handles wrapped lines, too.
1230      [Ralf S. Engelschall]
1231
1232   *) Fixed regex in aclocal.m4: tabs were expanded to spaced.
1233      [Ralf S. Engelschall]
1234
1235   *) Fixed a casting problem related to `void *' in pth_high.c
1236      which g++ 2.95.1 hated.
1237      [Ralf S. Engelschall]
1238
1239   *) Replaced Autoconf AC_CHECK_FUNCS macro with an own local copy named
1240      AC_CHECK_FUNCTIONS which _always_ uses ``extern "C"'' if __cplusplus is
1241      defined. This way one can configure Pth even if $CC is a C++ compiler.
1242      [Ralf S. Engelschall]
1243
1244   *) Updated rse-pmt.ps document.
1245      [Ralf S. Engelschall]
1246
1247   *) Fixed a few typos in the manual page.
1248      [Ralf S. Engelschall]
1249
1250   *) Fixed aclocal.m4: CFXXLAGS -> CXXFLAGS ;)
1251      [Alexandre Oliva <oliva@dcc.unicamp.br>]
1252
1253  Changes between 1.2b5 and 1.2b6 (21-Sep-1999 to 28-Sep-1999)
1254
1255   *) Added platform support for GNU/Linux kernel 2.2 / glibc 2.1
1256      for both Alpha and Intel platforms via sjlj/ssjlj/sas.
1257      (tested with both RedHat 6.0 and SuSE 6.1)
1258      [Ralf S. Engelschall]
1259
1260   *) Added platform support for Tru64/OSF1 4.x and 5.0.
1261      [Ralf S. Engelschall]
1262
1263   *) Added --prefix, --bindir, --libdir, --includedir and --mandir
1264      options to pth-config and pthread-config. Mainly for convinience
1265      and consistency reasons.
1266      [Ralf S. Engelschall]
1267
1268   *) Avoid compiler complains in pth_mctx.c for assigning a `volatile
1269      sigset_t'. Instead use a plain memcpy() with sizeof(sigset_t).
1270      This now makes also IRIX' 6.5 cc happy.
1271      [Ralf S. Engelschall]
1272
1273   *) Fixed the Autoconf AC_CHECK_MCSC check which tests whether
1274      SVR4/SUSv2 makecontext(2), swapcontext(2) and friends can be used for
1275      user-space context switching. It was broken because the uc_link and
1276      uc_stack structure attributes were not initialized correctly.
1277      [Ralf S. Engelschall, Ben Harris <bjh21@cam.ac.uk>]
1278
1279   *) Updated dependencies in Makefile.in.
1280      [Ralf S. Engelschall]
1281
1282   *) Mention the new pth-users@gnu.org mailing list in SUPPORT
1283      and added hint to Makefile.in.
1284      [Ralf S. Engelschall]
1285
1286  Changes between 1.2b4 and 1.2b5 (17-Sep-1999 to 21-Sep-1999)
1287
1288   *) Added new Autoconf macro AC_COMPILER_OPTION which is now
1289      used to check whether -pipe, -ggdb3 and -W<xxx> really work
1290      before they are implicitly used.
1291      [Ralf S. Engelschall, Alexandre Oliva <oliva@dcc.unicamp.br>]
1292
1293   *) Make sure pthread.c compiles even if the platforms lacks `struct
1294      timespec'. The pthread_cond_timedwait() function will then still be
1295      unuseable by the application, of course.  But that's the intended
1296      behavour, because the Pthread API cannot be changed at this point.
1297      [Michele Satriani <satriani@info.uniroma2.it>, Ralf S. Engelschall]
1298
1299   *) Document it more clearly that PTH_ATTR_DEFAULT is _not_ the values an
1300      pth_attr_init() creates. It means that priority, joinability and
1301      cancelstate are _inherited_.
1302      [Eric Newton <ecn@smart.net>]
1303
1304  Changes between 1.2b3 and 1.2b4 (17-Sep-1999 to 17-Sep-1999)
1305
1306   *) Fixed test_httpd.c: highest port is 65535 and not 65553 ;)
1307      [Alex Fiori <alex@linuxbr.com>]
1308
1309   *) Fix Makefile.in: $(S)shtool -> $(srcdir)shtool
1310      [Ben Harris <bjh21@cam.ac.uk>, Ralf S. Engelschall]
1311
1312   *) Make Rhapsody happy with pth_errno.c by statically initializing
1313      the contained variables.
1314      [Ben Harris <bjh21@cam.ac.uk>, Ralf S. Engelschall]
1315
1316  Changes between 1.2b2 and 1.2b3 (04-Sep-1999 to 17-Sep-1999)
1317
1318   *) Added first cut of support for building Pth outside it's source tree.
1319      [Ben Harris <bjh21@cam.ac.uk>, Ralf S. Engelschall]
1320
1321   *) Updated pth.pod for new socklen_t usage and updated NEWS file.
1322      [Ralf S. Engelschall]
1323
1324   *) Officially switched from ``GNU Library General License v2.0''
1325      to successor license: ``GNU Lesser General License v2.1''.
1326      [Ralf S. Engelschall]
1327
1328   *) Enhanced ss_sp to ss_base mapping: There is now Autoconf
1329      support for the mapping decision.
1330      [Ralf S. Engelschall, Ben Harris <bjh21@cam.ac.uk>]
1331
1332   *) Add `PTHREAD' also to defines for namespace protection.
1333      [Hans v. Sommerfeld <snoopy@redbaron.bir.uunet.de>]
1334
1335   *) Made the temporary errno saving more elegant with a new
1336      `errno_shield { .... }' construct.
1337      [Ralf S. Engelschall]
1338
1339   *) Upgraded to GNU shtool 1.4.6
1340      [Ralf S. Engelschall]
1341
1342  Changes between 1.2b1 and 1.2b2 (02-Sep-1999 to 04-Sep-1999)
1343
1344   *) Ported Pth to another esoteric, anchient and brain-dead
1345      platform which needs jmp_buf fiddling: Interactive Unix (ISC) 4.0.
1346      [Ralf S. Engelschall, Brandon Reynolds <bmr@comtime.com>]
1347
1348   *) Make sys/resource.h an optional header.
1349      [Ralf S. Engelschall]
1350
1351   *) Added CPPFLAGS to Makefile.in and configure.in
1352      [Ralf S. Engelschall]
1353
1354  Changes between 1.1.4 and 1.2b1 (30-Aug-1999 to 02-Sep-1999)
1355
1356   *) Added TESTS document which shows success stories with
1357      Apache, MySQL, Perl, Python, OpenLDAP, pident, etc.
1358      [Ralf S. Engelschall]
1359
1360   *) Enhanced pth-config/pthread-config scripts: first they
1361      are now concatenating the output of the options into a single
1362      string and print this at the end once. This way one can use things
1363      like LIBS="`pthread-config --ldflags --libs`" without getting an
1364      intermediate newline which causes trouble in various packages.
1365      Second per default only pth-specific CFLAGS/LDFLAGS/LIBS are
1366      printed. If one wants also additional flags one has used while
1367      building Pth one now can add the --all option. This is to avoid
1368      conflicts between Pth flags and flags of the application.
1369      [Ralf S. Engelschall]
1370
1371   *) Added -w to CFLAGS for Solaris if $CC is not GCC to avoid the
1372      warnings about "end of loop not reached" because of our
1373      ``do { ...return;... } while(0)'' macros.
1374      [Ralf S. Engelschall]
1375
1376   *) Fixed two bugs in internal pth_pqueue_delete() and one in
1377      pth_pqueue_insert(): it accidently also adjusted the priority
1378      queue top element if one deleted the last element of the queue and it
1379      calculated the priority of the following element incorrectly.
1380      [Jens Andersen <Jens@trw.nl>, Ralf S. Engelschall]
1381
1382   *) Optimized the signal mask handling: The application is now required to
1383      use pth_sigmask(3) and no longer can use sigprocmask(2) directly
1384      (as it's already the case for Pthreads where POSIX states that the
1385      behaviour of sigprocmask(2) is not defined in a MT application).
1386      The side-effect of this consistencency restriction is that
1387      internally the machine context switching no longer has to remember
1388      the signal mask on _every_ context switch. It's now sufficient
1389      that pth_sigmask(3) sets the mask to allow the scheduler to
1390      calculate its own mask. The result is a faster and more clean
1391      thread dispatching. Additionally a soft and hard syscall mapping
1392      for sigprocmask(2) was added, of course.
1393      [Ralf S. Engelschall]
1394
1395   *) Added support for socklen_t to both avoid warnings under
1396      some platforms and to avoid problems on 64 bit machines.
1397      [Ralf S. Engelschall]
1398
1399   *) Added UnixWare7 support to config.guess
1400      [Ralf S. Engelschall]
1401
1402   *) Added config.param facility.
1403      [Ralf S. Engelschall]
1404
1405   *) Cleaned up bootstrap stuff from configure.in and moved it to aclocal.m4.
1406      [Ralf S. Engelschall]
1407
1408   *) Fixed autoconf's `--silent' flag: it wasn't passed to ltconfig.sh
1409      [Ralf S. Engelschall]
1410
1411   *) Rewritten the "make test" message and refreshed the PORTING file to
1412      start with a new format which now includes also the machine context and
1413      stack growth direction.
1414      [Ralf S. Engelschall]
1415
1416   *) Enhanced the interactive (not --enable-batch) mode: The Makefile now
1417      displays real hints what to do as the next step. All messages can
1418      be disabled via --enable-batch, of course.
1419      [Ralf S. Engelschall]
1420
1421   *) Fixed aclocal.m4: Tabs were lost by accident.
1422      [Ralf S. Engelschall]
1423
1424   *) Fixed a type warning in pth_debug.c: pid_t vs. int
1425      [Ralf S. Engelschall]
1426
1427     _   _
1428    / | / |
1429    | | | |
1430    | |_| |
1431  __|_(_)_|_______________________________________________________________
1432
1433  Changes between 1.1.5 and 1.1.6 (02-Sep-1999 to 28-Sep-1999)
1434
1435   *) Backport from Pth 1.2b6:
1436      Fixed the Autoconf AC_CHECK_MCSC check which tests whether
1437      SVR4/SUSv2 makecontext(2), swapcontext(2) and friends can be used for
1438      user-space context switching. It was broken because the uc_link and
1439      uc_stack structure attributes were not initialized correctly.
1440      [Ralf S. Engelschall, Ben Harris <bjh21@cam.ac.uk>]
1441
1442   *) Backport from Pth 1.2b5:
1443      Document it more clearly that PTH_ATTR_DEFAULT is _not_ the values an
1444      pth_attr_init() creates. It means that priority, joinability and
1445      cancelstate are _inherited_.
1446      [Eric Newton <ecn@smart.net>]
1447
1448   *) Backport from Pth 1.2b4:
1449      Fixed test_httpd.c: highest port is 65535 and not 65553 ;)
1450      [Alex Fiori <alex@linuxbr.com>]
1451
1452   *) Backport from Pth 1.2b4:
1453      Make Rhapsody happy with pth_errno.c by statically initializing
1454      the contained variables.
1455      [Ben Harris <bjh21@cam.ac.uk>, Ralf S. Engelschall]
1456
1457   *) Backport from Pth 1.2b3:
1458      Add `PTHREAD' also to defines for namespace protection.
1459      [Hans v. Sommerfeld <snoopy@redbaron.bir.uunet.de>]
1460
1461   *) Upgraded to GNU shtool 1.4.6
1462      [Ralf S. Engelschall]
1463
1464  Changes between 1.1.4 and 1.1.5 (30-Aug-1999 to 02-Sep-1999)
1465
1466   *) Backport from Pth 1.2b1:
1467      Enhanced pth-config/pthread-config scripts: first they
1468      are now concatenating the output of the options into a single
1469      string and print this at the end once. This way one can use things
1470      like LIBS="`pthread-config --ldflags --libs`" without getting an
1471      intermediate newline which causes trouble in various packages.
1472      Second per default only pth-specific CFLAGS/LDFLAGS/LIBS are
1473      printed. If one wants also additional flags one has used while
1474      building Pth one now can add the --all option. This is to avoid
1475      conflicts between Pth flags and flags of the application.
1476      [Ralf S. Engelschall]
1477
1478   *) Backport from Pth 1.2b1:
1479      Fixed two bugs in internal pth_pqueue_delete() and one in
1480      pth_pqueue_insert(): it accidently also adjusted the priority
1481      queue top element if one deleted the last element of the queue and it
1482      calculated the priority of the following element incorrectly.
1483      [Jens Andersen <Jens@trw.nl>, Ralf S. Engelschall]
1484
1485   *) Backport from Pth 1.2b1:
1486      Added -w to CFLAGS for Solaris if $CC is not GCC to avoid the
1487      warnings about "end of loop not reached" because of our
1488      ``do { ...return;... } while(0)'' macros.
1489      [Ralf S. Engelschall]
1490
1491   *) Backport from Pth 1.2b1:
1492      Fixed autoconf's `--silent' flag: it wasn't passed to ltconfig.sh
1493      [Ralf S. Engelschall]
1494
1495   *) Backport from Pth 1.2b1:
1496      Fixed aclocal.m4: Tabs were lost by accident.
1497      [Ralf S. Engelschall]
1498
1499   *) Backport from Pth 1.2b1:
1500      Fixed a type warning in pth_debug.c: pid_t vs. int
1501      [Ralf S. Engelschall]
1502
1503  Changes between 1.1.3 and 1.1.4 (27-Aug-1999 to 30-Aug-1999)
1504
1505   *) Changed internal handling of spawned threads: they are now really
1506      inserted to the top of the priority queue to make sure a thread is
1507      guarrantied to be dispatched next when one calls pth_yield(NULL)
1508      directly after a pth_spawn(). This is especially interesting for
1509      programming with the co-routine paradigm where it allows one to better
1510      control the startup of a co-routine.
1511      [Ralf S. Engelschall, Jens Andersen <Jens@trw.nl>]
1512
1513   *) Fixed pthread_cancel(): a switch statement was incorrect (three
1514      breaks were missing to stop falling through).
1515      [Jens Andersen <Jens@trw.nl>]
1516
1517   *) Change internal `_pthread' prefix to `__pthread'.
1518      [Ralf S. Engelschall]
1519
1520   *) Enhanced backward compatibility stuff for Pthread draft 4 (DCE Threads)
1521      in pthread.h.in: When _POSIX_BACKCOMPAT is defined before the pthread.h
1522      header is included one now gets a lot more backward compatibility
1523      mappings.
1524      [Ralf S. Engelschall]
1525
1526   *) Optimize internal processing by inlining various small functions from
1527      pth_ring.c, pth_pqueue.c and pth_sched.c which are called a lot.
1528      [Ralf S. Engelschall]
1529
1530   *) Optimized readline() in test_common.c
1531      [Ralf S. Engelschall]
1532
1533   *) Added specific support for Linux/glibc/mc68000 to pth_mctx.c
1534      [Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>]
1535
1536   *) Updated INSTALL document for --enable-optimize.
1537      [Ralf S. Engelschall]
1538
1539  Changes between 1.1.2 and 1.1.3 (23-Aug-1999 to 27-Aug-1999)
1540
1541   *) Enhanced test program of AC_CHECK_STACKGROWTH in aclocal.m4 to
1542      make sure the test variables are not optimized away by the
1543      compiler and this way lead to incorrect check results.
1544      [Martin Kraemer <martin.kraemer@mch.sni.de>, Ralf S. Engelschall]
1545
1546   *) Fixed default stack size: was 32*16384 (=512KB) instead
1547      of the intended 32*1024 (=32KB).
1548      [Ralf S. Engelschall]
1549
1550   *) Added --enable-optimize flag to configure with selected
1551      standard optimization flags of GCC.
1552      [Ralf S. Engelschall]
1553
1554   *) Added SUPPORT file to source tree.
1555      [Ralf S. Engelschall]
1556
1557   *) Added test_philo, Dijkstra's Five Dining Philosophers ;)
1558      [Ralf S. Engelschall]
1559
1560   *) Add "auto" qualifier to PTH_STACKGROWTH test program
1561      to make sure the variables are placed into the stack.
1562      [Ralf S. Engelschall]
1563
1564   *) Use predetermined $PLATFORM of configure also in Makefile
1565      [Ralf S. Engelschall]
1566
1567  Changes between 1.1.1 and 1.1.2 (21-Aug-1999 to 23-Aug-1999)
1568
1569   *) Fixed Makefile.in: pth_acdef.h and pth_acmac.h were not removed on
1570      "distclean" and this way they were accidently distributed.
1571      [Ralf S. Engelschall]
1572
1573   *) Changed return type of pth_yield() from `void' to `int' to
1574      be able to return an error FALSE/EINVAL in case the `tid'
1575      argument specified an invalid or still not ready thread.
1576      [Kurt D. Zeilenga <Kurt@OpenLDAP.Org>, Ralf S. Engelschall]
1577
1578   *) Fixed description of pth_yield() in pth.pod.
1579      [Kurt D. Zeilenga <Kurt@OpenLDAP.Org>, Ralf S. Engelschall]
1580
1581  Changes between 1.1.0 and 1.1.1 (19-Aug-1999 to 21-Aug-1999)
1582
1583   *) Changed pthread_yield_np() from `void' return type to `int' to allow the
1584      `#define sched_yield pthread_yield_np' work as expected, because
1585      sched_yield has `int' return type per SUSv2.
1586      [Kurt D. Zeilenga <Kurt@OpenLDAP.Org>, Ralf S. Engelschall]
1587
1588   *) Fixed problems related to pthread_exit() and pth_exit(): The
1589      PTH_EVENT_FUNC internally was used incorrectly by pth_exit() and the
1590      implicit initialization was forgotten in pthread_exit().
1591      [Kurt D. Zeilenga <Kurt@OpenLDAP.Org>, Ralf S. Engelschall]
1592
1593   *) Added consistency check for `timeout' attribute of pth_poll
1594      and various other EINVAL related checks to pth_event.c.
1595      [Ralf S. Engelschall]
1596
1597   *) Added consistency check for `abstime' attribute of
1598      pthread_cond_timedwait().
1599      [Ralf S. Engelschall]
1600
1601  Changes between 1.1b7 and 1.1.0 (18-Aug-1999 to 19-Aug-1999)
1602
1603   *) Disable vendor typedefs in pthread.h.in because
1604      it caused problems under Solaris.
1605      [Ralf S. Engelschall]
1606
1607   *) Cleaned up the sources a little bit more.
1608      [Ralf S. Engelschall]
1609
1610   *) Updated rse-pmt.ps to v0.9.15
1611      [Ralf S. Engelschall]
1612
1613  Changes between 1.1b6 and 1.1b7 (18-Aug-1999 to 18-Aug-1999)
1614
1615   *) Added test for nested thread operation to test_std.c
1616      [Ralf S. Engelschall]
1617
1618   *) Updated rse-pmt.ps to talk about the sigsetjmp(3) problems.
1619      [Ralf S. Engelschall]
1620
1621   *) Enhanced the heart of Pth: pth_mctx_set().
1622      Instead of the real dispatching functions a plain setjmp(3)/longjmp(3)
1623      pair is used for the trampoline trick in order to avoid problems with
1624      sigjmp_buf-attached signal stacks on platforms where sigsetjmp(3) does
1625      more than it is usuallly expected. This especially fixes `thread spawns
1626      thread' problems under HPUX.
1627      [Ralf S. Engelschall, Aaron Metzger <ametzger@varcom.com>]
1628
1629  Changes between 1.1b5 and 1.1b6 (17-Aug-1999 to 18-Aug-1999)
1630
1631   *) Fixed return value of pth_write/pth_read.
1632      [Eric Newton <ecn@smart.net>, Ralf S. Engelschall]
1633
1634   *) Fixed example in manual page (pth.pod): pth_load()
1635      is now pth_ctrl(PTH_CTRL_GETAVLOAD, ...)
1636      [Eric Newton <ecn@smart.net>]
1637
1638   *) Fixed warning in pth_high.c related to implicit casting.
1639      [Ralf S. Engelschall]
1640
1641   *) Added BS2000 support to config.guess/config.sub.
1642      [Martin Kraemer]
1643
1644   *) Fixed a sigaltstack() call in pth_mctx.c: the return code
1645      was checked incorrectly.
1646      [Ralf S. Engelschall]
1647
1648   *) Updated rse-pmt.ps
1649      [Ralf S. Engelschall, Eric Newton <ecn@smart.net>]
1650
1651   *) Fixed a nasty bug in the thread stack allocation: A stack was also
1652      allocated for the main thread, but not used. The problem was that an
1653      allocated stack has a guardian and this way was checked each time and
1654      could lead to a bogus STACK OVERFLOW for the "main" thread.
1655      [Ralf S. Engelschall, Martin Kraemer]
1656
1657  Changes between 1.1b4 and 1.1b5 (13-Aug-1999 to 17-Aug-1999)
1658
1659   *) Added draft of forthcoming paper ``Portable Multithreading - The Signal
1660      Stack Trick Of User-Space Thread Creation'' to source tree under
1661      rse-pmt.ps. Hackers are encouraged to read this if they want to
1662      understand Pth's internals.
1663      [Ralf S. Engelschall]
1664
1665   *) Source cleanups: added `extern' qualifier to function prototypes in
1666      pth.h.in and pthread.h.in; make compilation silent with both gcc 2.95.1 C
1667      and C++ frontends by fixing implicit type conversion situations, etc.
1668      [Ralf S. Engelschall]
1669
1670   *) Return EBUSY instead of EAGAIN for pth_mutex_acquire() when the "try"
1671      argument is TRUE. This fixes especially the POSIX semantics of
1672      pthread_mutex_trylock().
1673      [Ralf S. Engelschall]
1674
1675   *) Added pth_compat.c with strerror(3) replacement for SunOS.
1676      [Ralf S. Engelschall]
1677
1678   *) Fixed pthread_{mutex,rwlock,cond}_destroy() functions.
1679      [Ralf S. Engelschall]
1680
1681   *) Added support for `configure <platform-id>'.
1682      [Ralf S. Engelschall, Martin Kraemer <Martin.Kraemer@mch.sni.de>]
1683
1684  Changes between 1.1b3 and 1.1b4 (11-Aug-1999 to 13-Aug-1999)
1685
1686   *) Fixed blocking semantics of pth_writev().
1687      [Ralf S. Engelschall]
1688
1689   *) Fixed a very nasty bug in pth_select(): The write fd_set was passed
1690      twice to the scheduler (once as the write fd_set and once as the
1691      execptional fd_set). This caused problems, because the event loop this
1692      way deleted bits in the write fd_set by accident and the return semantic
1693      was broken.
1694      [Ralf S. Engelschall]
1695
1696   *) Added fallbacks for UIO_MAXIOV to pth.h and pthread.h
1697      [Ralf S. Engelschall]
1698
1699   *) Remove locking check in pth_mutex_init() because this would only work
1700      with static vars where ANSI C guarranties an initialization with 0
1701      bytes.
1702      [Martin Kraemer <Martin.Kraemer@mch.sni.de>]
1703
1704   *) Fixed pth_write() semantics.
1705      [Ralf S. Engelschall]
1706
1707  Changes between 1.1b2 and 1.1b3 (10-Aug-1999 to 11-Aug-1999)
1708
1709   *) Overhauled pthread.h to make it better compile-able also under
1710      platforms where a vendor Pthread library exists.
1711      [Ralf S. Engelschall]
1712
1713   *) Reordered ingredients of configure.in.
1714      [Ralf S. Engelschall]
1715
1716   *) Fixed aclocal.m4: -g was incorrectly stripped.
1717      [Ralf S. Engelschall]
1718
1719   *) Enhance pth_write(): In non-blocking (default) mode it now mimics the
1720      behaviour of write(2) more correctly by iterating until all data is
1721      written or an error occurs.
1722      [Ralf S. Engelschall]
1723
1724  Changes between 1.1b1 and 1.1b2 (07-Aug-1999 to 10-Aug-1999)
1725
1726   *) Fixed ring walking inside both public pth_msgport_find() function and
1727      the internal pth_mutex_releaseall() function.
1728      [Laurent Vaucher <laurent.vaucher@ficsgrp.com>]
1729
1730  Changes between 1.0.4 and 1.1b1 (03-Aug-1999 to 07-Aug-1999)
1731
1732   *) Fixed test_select.c: a char has to be used for read(2) and not an int.
1733      [Ralf S. Engelschall]
1734
1735   *) Fixed AC_CHECK_NSIG test and this way PTH_NSIG define.
1736      [Ralf S. Engelschall]
1737
1738   *) Overhauled pth_mctx.c's internals according to latest algorithm of my
1739      paper ``Portable Multithreading - The Signal Stack Trick For User-Space
1740      Thread Creation''. Especially: sigstack had not restored stack
1741      correctly, the signal mask was not inherited correctly; Linux
1742      signal mask handling was incorrect, etc.
1743      [Ralf S. Engelschall]
1744
1745   *) Adjusted variables in pth_mctx.c to use `volatile' qualifier.
1746      [Ralf S. Engelschall]
1747
1748   *) Simplified Makefile.in a little bit by removing $(OBJS)
1749      [Ralf S. Engelschall]
1750
1751   *) Replaced the run-time stack growth decision for the guardian in
1752      pth_tcb.c with a compile-time decision.
1753      [Ralf S. Engelschall]
1754
1755   *) Completly rewritten the configure.in part which deals
1756      with the machine context (mctx) implementation: First SVR4/SUSv2
1757      makecontext(2) and friends are generally preferred.  Second, the user
1758      now can override the decisions via --with-mctx-{mth,dsp,stk}. Third, the
1759      pth_mctx.c source was enhanced by using skaddr_xxx() and sksize_xxx()
1760      macros which know through Autoconf checks how a stack has to be setup
1761      correctly for makecontext(2), sigaltstack(2) and sigstack(2).
1762      [Ralf S. Engelschall]
1763
1764   *) Add support to pth_mctx.c for SVR4/SUSv2 makecontext(2)/swapcontext(2)
1765      and friends. This way Pth now is best prepared to cover forthcoming Unix
1766      flavors, because these are didicated and standadized functions for
1767      user-space context switching.
1768      [Ralf S. Engelschall]
1769
1770   *) Completely overhauled aclocal.m4
1771      [Ralf S. Engelschall]
1772
1773   *) Use GNU config.guess/config.sub instead of GNU shtool guessos
1774      for wider support inside GNU libtool.
1775      [Ralf S. Engelschall]
1776
1777   *) Replaced switch() over long variables (which aren't covered by
1778      traditional C) with an if-else construct in pth_event.c to be more
1779      portable.
1780      [Ralf S. Engelschall]
1781
1782   *) Fixed timeout handling in pth_select().
1783      [Ralf S. Engelschall]
1784
1785   *) Don't free(2) application-supplied stacks on cleanups.
1786      [Ralf S. Engelschall]
1787
1788   *) Don't allow an application to change the stack size or address on an
1789      pth_attr_t object when its attached to a thread (see pth_attr_of).
1790      [Ralf S. Engelschall]
1791
1792   *) Added pth_ext.c for extensional functionality. As a first
1793      cut Sfio support is provided by an additional function pth_sfiodisc.
1794      This functions is always available, but only reasonably useable when Pth
1795      was built with Sfio support (--with-sfio option) and PTH_EXT_SFIO is
1796      then defined by pth.h. It is useful for applications which want to use
1797      the comprehensive Sfio I/O library with the Pth threading library. Then
1798      this function can be used to get an Sfio discipline structure (Sfdisc_t)
1799      which can be pushed onto Sfio streams (Sfio_t) in order to let this
1800      stream use pth_read(3)/pth_write(2) instead of read(2)/write(2). The
1801      benefit is that this way I/O on the Sfio stream does only block the
1802      current thread instead of the whole process. The application has to
1803      free(3) the Sfdisc_t structure when it is no longer needed.
1804      [Ralf S. Engelschall]
1805
1806   *) Added `barrier' synchronization objects. These provide a way to let a
1807      group of threads wait at a barrier until the last reached the barrier.
1808      It's implemented on top of mutex and condition variable.
1809      [Ralf S. Engelschall]
1810
1811   *) Replaced a bogus stdio fgetc() in test_select with pth_read().
1812      [Ralf S. Engelschall]
1813
1814   *) Fixed internal pth_debug(3): it now preserved errno to make sure there
1815      is no run-time difference in semantics just because of debug messages.
1816      [Ralf S. Engelschall]
1817
1818   *) Overhauled the filedescriptor handling:
1819      1. There is no longer a requirement to manually switch a filedescriptor
1820      into non-blocking mode in order to use it. This is automatically done
1821      temporarily inside Pth now. Instead when you now switch a filedescriptor
1822      explicitly into non-blocking mode, pth_read(3) or pth_write(3) will
1823      never block the current thread as it is the expected behaviour for
1824      non-blocking I/O.
1825      2. pth_nonblocking(3) was replaced by a more convinient pth_fdmode(3)
1826      function which can perform both get and set operations at once.
1827      [Ralf S. Engelschall]
1828
1829     _   ___
1830    / | / _ \
1831    | || | | |
1832    | || |_| |
1833  __|_(_)___/_____________________________________________________________
1834
1835  Changes between 1.0.4 and 1.0.5 (03-Aug-1999 to 10-Aug-1999)
1836
1837   *) Backport from Pth 1.1b2:
1838      Fixed ring walking inside both public pth_msgport_find() function
1839      and the internal pth_mutex_releaseall() function.
1840      [Laurent Vaucher <laurent.vaucher@ficsgrp.com>]
1841
1842   *) Backport from Pth 1.1b1:
1843      In pth_mctx.c the signal stack was not restored correctly.
1844      [Ralf S. Engelschall]
1845
1846   *) Backport from Pth 1.1b1:
1847      Fixed test_select.c: a char has to be used for read(2) and not an int.
1848      And replaced a bogus stdio fgetc() in test_select with pth_read().
1849      [Ralf S. Engelschall]
1850
1851   *) Backport from Pth 1.1b1:
1852      Fixed AC_CHECK_NSIG test and this way PTH_NSIG define.
1853      [Ralf S. Engelschall]
1854
1855   *) Backport from Pth 1.1b1:
1856      Fixed timeout handling in pth_select().
1857      [Ralf S. Engelschall]
1858
1859  Changes between 1.0.3 and 1.0.4 (30-Jul-1999 to 03-Aug-1999)
1860
1861   *) Fixed two read/write calls: they didn't use the pth_sc wrapper.
1862      [Ralf S. Engelschall]
1863
1864   *) Make pth_{read,write}() functions more POSIX compliant by returning 0
1865      when the nbytes argument is given as 0.  And make pth_{readv,writev}()
1866      functions more POSIX compliant by returning -1/EINVAL when the iovcnt
1867      argument is less or equal to 0.
1868      [Ralf S. Engelschall]
1869
1870   *) Added missing readv/writev wrappers to pthread.c
1871      [Ralf S. Engelschall]
1872
1873   *) Typo fixes in pth.pod
1874      [Eric Newton <ecn@smart.net>]
1875
1876   *) Fixed special `--disable-static --enable-shared' situation.
1877      [Felix von Leitner <leitner@fefe.de>, Ralf S. Engelschall]
1878
1879   *) Fixed `debug-xx' targets.
1880      [Ralf S. Engelschall]
1881
1882  Changes between 1.0.2 and 1.0.3 (28-Jul-1999 to 30-Jul-1999)
1883
1884   *) Fixed inconsistent and wrong API value: PTH_ATTR_NULL existed and was
1885      documented as PTH_ATTR_NONE. But actually the intended and intuitive
1886      value was PTH_ATTR_DEFAULT. !BE CAREFUL: This is an API change and
1887      requires adjustments in Pth applications!
1888      [Ralf S. Engelschall, Eric Newton <ecn@smart.net>]
1889
1890   *) Make sure pthread.h.in doesn't redefine the poll(2) environment
1891      under built-time because it's already defined by the included pth.h.
1892      [Kriton Kyrimis <kyrimis@cti.gr>]
1893
1894   *) Add readv/writev environment fallback definitions to pthread.h.in.
1895      [Ralf S. Engelschall]
1896
1897   *) Support for AmigaOS in pthreads.c: timespec attributes have (correct)
1898      ts_ prefix under AmigaOS and not the (bogus) POSIX tv_ prefix
1899      [Kriton Kyrimis <kyrimis@cti.gr>]
1900
1901   *) Add `#include <time.h>' for struct timespec to pthread.h.in
1902      and removed timespec references in pth.h.in.
1903      [Ralf S. Engelschall]
1904
1905   *) Fixed documentation for pth_spawn() and pth_wait().
1906      [Ralf S. Engelschall, Eric Newton <ecn@smart.net>]
1907
1908  Changes between 1.0.1 and 1.0.2 (22-Jul-1999 to 28-Jul-1999)
1909
1910   *) Upgraded to GNU shtool 1.4.5.
1911      [Ralf S. Engelschall]
1912
1913   *) Added `uninstall' target to Makefile
1914      [Ralf S. Engelschall]
1915
1916   *) Cleanup package to conform to the GNU standards: added AUTHORS document;
1917      renamed CHANGES to ChangeLog and added NEWS document; renamed LICENSE to
1918      COPYING; renamed CREDITS to THANKS; added hint to bug-pth@gnu.org to
1919      pth.pod manual.
1920      [Ralf S. Engelschall]
1921
1922   *) Fixed HAVE_SIGSTACK alternative in pth_mctx.c
1923      [Jim Jagielski <jim@jaguNET.com>]
1924
1925   *) Removed internal "was_blocking" attribute in event structure
1926      because it was never used.
1927      [Ralf S. Engelschall]
1928
1929   *) Fixed documentation of pth_xxx_init() synchronization functions.
1930      [Ralf S. Engelschall]
1931
1932  Changes between 1.0.0 and 1.0.1 (16-Jul-1999 to 22-Jul-1999)
1933
1934   *) Added missing documentation for pth_timeout().
1935      [Ralf S. Engelschall]
1936
1937   *) Moved pthread_p{read,write}() to pth_high.c as pth_p{read,write}()
1938      and added syscall wrapper support for it.
1939      [Ralf S. Engelschall]
1940
1941   *) Added support for readv(2) and writev(2): There are now
1942      four new API functions pth_readv, pth_readv_ev, pth_writev and
1943      pth_writev_ev. Additionally on platforms where no native
1944      readv(2)/writev(2) exists, the struct iovec is faked and the internal
1945      implementation is based on read(2)/write(2). This way the functionality
1946      is available everywhere. Finally, the syscall support was extended to
1947      cover readv and writev now, too.
1948      [Ralf S. Engelschall]
1949
1950   *) Added support for FNDELAY to pth_nonblocking.
1951      [Ralf S. Engelschall]
1952
1953   *) Cleaned up pthread.h and pth.h and added extra forward definitions for
1954      struct timeval/timespec to avoid problems on some platforms (like SCO).
1955      [Ralf S. Engelschall]
1956
1957   *) Added "make check" as an alias for "make test"
1958      [Ralf S. Engelschall]
1959
1960   *) Upgraded to GNU shtool 1.4.4 and use new `shtool tarball'
1961      [Ralf S. Engelschall]
1962
1963  Changes between 1.0b8 and 1.0.0 (16-Jul-1999 to 16-Jul-1999)
1964
1965   *) Fixed scheduler reinitialization.
1966      [Ralf S. Engelschall]
1967
1968   *) Upgraded to GNU shtool 1.4.4-dev.
1969      [Ralf S. Engelschall]
1970
1971   *) Cleaned up syscall stuff: usleep() is not longer mapped because it's too
1972      unstandardized, sigwait() is again mapped because it is standardized and
1973      those platforms which fail are broken.
1974      [Ralf S. Engelschall]
1975
1976   *) Fixed pthread-config.in: -lpth => -lpthread
1977      [Ralf S. Engelschall]
1978
1979   *) Downgraded required Autoconf version to 2.12
1980      [Ralf S. Engelschall]
1981
1982   *) Moved pth_readline[_ev]() from the Pth API into test_common.c because
1983      this function is just a half-way solution (pth_read doesn't use the same
1984      buffer) and when one needs buffered I/O it's better to use a _real_ I/O
1985      library like Sfio, etc.
1986      [Ralf S. Engelschall]
1987
1988   *) Cleanup to Makefile.in
1989      [Ralf S. Engelschall]
1990
1991  Changes between 1.0b7 and 1.0b8 (14-Jul-1999 to 16-Jul-1999)
1992
1993   *) Fixed result handling of stack growth detection.
1994      [Ralf S. Engelschall, Frank Carpenter <carpen@nortelnetworks.com>]
1995
1996   *) Added explicit libtool --mode flags in Makefile.in
1997      to avoid compiler guessing problems on esoteric platforms.
1998      [Ralf S. Engelschall]
1999
2000   *) Fixed broken condition variable handling: the scheduler
2001      incorrectly checked the condition variable flags.
2002      [Ralf S. Engelschall, Andrew Hunter <esvce@dcs.warwick.ac.uk>]
2003
2004   *) Allow main thread to be joinable to fulfill POSIX.
2005      [Ralf S. Engelschall]
2006
2007   *) Fixed a nasty bug in the scheduler: the write and exceptional
2008      filedescriptor sets were not passed to the select(): ARGL!
2009      [Ralf S. Engelschall]
2010
2011   *) Added implicit initialization to pth_syscall.c stuff
2012      and pthread.c stuff.
2013      [Ralf S. Engelschall]
2014
2015   *) Fixed again static initializations via PTHREAD_XXX_INITIALIZER
2016      [Ralf S. Engelschall]
2017
2018   *) Fixed again PTHREAD_ONCE_INIT
2019      [Ralf S. Engelschall]
2020
2021   *) Added PTHREAD_CANCELED to pthread.h.
2022      [Ralf S. Engelschall]
2023
2024   *) Fixed POSIX pthread_testcancel(): it is defined to have
2025      void return type and not int.
2026      [Ralf S. Engelschall]
2027
2028  Changes between 1.0b6 and 1.0b7 (14-Jul-1999 to 14-Jul-1999)
2029
2030   *) Replaced FALSE value for PTHREAD_ONCE_INIT in pthread.h with 0 to
2031      be not dependent on such defines.
2032      [Ralf S. Engelschall, Rick Brownrigg]
2033
2034   *) Disabled syscall soft mapping for usleep because it causes prototype
2035      conflicts with unistd.h on some platforms due to the fact that usleep(3)
2036      is bad standardized.
2037      [Ralf S. Engelschall, Rick Brownrigg]
2038
2039   *) Added pthread_cancel() to POSIX emulation.
2040      [Ralf S. Engelschall, Rick Brownrigg]
2041
2042   *) Fixed poll(2)/poll.h detection in Autoconf.
2043      [Ralf S. Engelschall, Igor A. Minyukoff <iam@inser.loniis.spb.su>]
2044
2045  Changes between 1.0b5 and 1.0b6 (11-Jul-1999 to 14-Jul-1999)
2046
2047   *) Fixed pth_attr_ctrl(): it failed with EACCES because
2048      of incorrect comparisons
2049      [Igor A. Minyukoff <iam@inser.loniis.spb.su>]
2050
2051   *) Replaced PTHREAD_{MUTEX,COND,RWLOCK}_INITIALIZER with an alternative
2052      implementation to allow the assignment to `static' variables, too.
2053      [Ralf S. Engelschall, Rick Brownrigg <brownrig@erg.sri.com>]
2054
2055  Changes between 1.0b4 and 1.0b5 (08-Jul-1999 to 11-Jul-1999)
2056
2057   *) Fixed pth_waitpid() semantics.
2058      [Ralf S. Engelschall]
2059
2060   *) Added pth_poll() and pth_poll_ev() with the following trick: it is always
2061      present (independent whether the platform has poll(2) or not), because it
2062      is (AND HAS TO BE) internally based on pth_select(). The poll function
2063      wrapping support was added, too.
2064      [Ralf S. Engelschall]
2065
2066   *) Moved pth_init() to the top of all test applications.
2067      [Ralf S. Engelschall]
2068
2069   *) Added direct system call mapping support: --enable-syscall-soft
2070      enables #define's in pth.h and pthread.h which do a soft-mapping of e.g.
2071      read to pth_read. This is _always_ possible. --enable-syscall-hard
2072      enables the exportation of syscall wrappers (e.g. read) by the Pth
2073      library and the calling of the real system calls via syscall(2), hence
2074      this variant is only available when the platform supports syscall(2)
2075      [e.g. yes: *BSD, Linux, Solaris, HP/UX, IRIX, UnixWare; no: AIX, SCO5]
2076
2077      For the soft variant the whole application sources have to include
2078      pth[read].h and existing libraries (like stdio!) can still block the
2079      whole process, while for the hard variant the application sources do not
2080      all have to include pth[read].h an existing libraries (including stdio!)
2081      magically use Pth's system call wrappers.
2082      [Ralf S. Engelschall]
2083
2084   *) Speeded up `configure --help' by not creating the header
2085      [Ralf S. Engelschall]
2086
2087   *) Added pth_select_ev() and pth_select() based on the new PTH_EVENT_SELECT
2088      and the old PTH_EVENT_TIME events which emulate 4.2BSD's select(2), but
2089      suspend only the current thread. Additionally added a select() wrapper to
2090      the POSIX wrapper API.
2091      [Ralf S. Engelschall]
2092
2093   *) Added PTH_EVENT_SELECT which can be used to suspend the current thread
2094      until an event occured in one of three fd _sets_ similar to select(2) but
2095      without the timeout facility.
2096      [Ralf S. Engelschall]
2097
2098   *) Upgraded to GNU shtool 1.4.3. This especially fixes
2099      the shared library generation under GNU/Linux now.
2100      [Ralf S. Engelschall]
2101
2102   *) Added pth_abort() and a corresponding pthread_abort()
2103      for cruel ways to cancel a thread.
2104      [Ralf S. Engelschall]
2105
2106   *) Fixed POSIX pread()/pwrite(): Their mutex variables have
2107      to be static variables and not local variables.
2108      [Ralf S. Engelschall]
2109
2110   *) Added #define for POSIX sched_yield() to pthread.h.in
2111      [Ralf S. Engelschall]
2112
2113  Changes between 1.0b3 and 1.0b4 (07-Jul-1999 to 08-Jul-1999)
2114
2115   *) Added POSIX pread() and pwrite() [parallel I/O] emulation
2116      functions to pthread.{ch].
2117      [Ralf S. Engelschall]
2118
2119   *) Removed double-definition of the fallback types in pthread.h.in.
2120      [Ralf S. Engelschall]
2121
2122   *) Added pthread_atfork() to pthread.c
2123      [Ralf S. Engelschall]
2124
2125   *) Added pth_atfork_{push,pop}() functions and moved them together with
2126      pth_fork() to a new pth_fork.c source files. Updated also the
2127      documentation to describe the new at-fork handlers.
2128      [Ralf S. Engelschall]
2129
2130   *) Write still missing documentation for pth_cleanup_{push,pop}()
2131      [Ralf S. Engelschall]
2132
2133   *) Fixed again pth_event_concat(): The last attempt was
2134      to inefficient and still had a bug.
2135      [Igor A. Minyukoff <iam@inser.loniis.spb.su>, Ralf S.  Engelschall]
2136
2137   *) Cleaned up all name references: The official long name is `GNU Portable
2138      Threads', the official short name is `GNU Pth' and the common prefix is
2139      `pth_' and `PTH_'.
2140      [Ralf S. Engelschall]
2141
2142  Changes between 1.0b2 and 1.0b3 (04-Jul-1999 to 07-Jul-1999)
2143
2144   *) Remove a trailing comma inside an enum in pthread.h.in
2145      [Martin Kraemer <martin.kraemer@mch.sni.de>]
2146
2147   *) Added two new API event-related functions which can be used to extract
2148      the contents of existing events: pth_event_typeof() and
2149      pth_event_extract().
2150      [Ralf S. Engelschall]
2151
2152   *) Fixed pth_event_concat(): It was broken because it
2153      handled real/non-single-event event rings not correctly.
2154      [Igor A. Minyukoff <iam@inser.loniis.spb.su>, Ralf S. Engelschall]
2155
2156   *) Fixed pth_event_walk(): It was broken for PTH_WALK_NEXT
2157      [Igor A. Minyukoff <iam@inser.loniis.spb.su>, Ralf S. Engelschall]
2158
2159   *) Fixed memory leak in pth_join()
2160      [Igor A. Minyukoff <iam@inser.loniis.spb.su>]
2161
2162   *) Fixed manual page pthread-config.pod
2163      [Ralf S. Engelschall]
2164
2165   *) Upgraded to GNU shtool 1.4.1 and GNU libtool 1.3.3
2166      [Ralf S. Engelschall]
2167
2168   *) Fixed test_pthread.c: sleep(3) requires unistd.h
2169      [Ralf S. Engelschall, Martin Kraemer <martin.kraemer@mch.sni.de>]
2170
2171   *) Cleaned up --enable-batch/--enable-pthread
2172      [Ralf S. Engelschall]
2173
2174  Changes between 1.0b1 and 1.0b2 (28-Jun-1999 to 04-Jul-1999)
2175
2176   *) Upgraded to GNU shtool 1.4.0
2177      [Ralf S. Engelschall]
2178
2179   *) Changed return value type of pth_version() from "int" to "long"
2180      to avoid problems with too large numbers.
2181      [Ralf S. Engelschall]
2182
2183   *) Simplified internal representation of pth_once_t
2184      [Ralf S. Engelschall]
2185
2186   *) !!ATTENTION!! Renamed _anything_ from the old
2187      coding-name nps/NPS to the new official name pth/PTH.
2188      [Ralf S. Engelschall]
2189
2190   *) Added the new POSIX.1c pthread emulation library
2191      (pthread* files). It has to be enabled explicitly
2192      via --enable-pthread because it's disabled per default)
2193      [Ralf S. Engelschall]
2194
2195   *) Enhanced pthread.pod manual page.
2196      [Ralf S. Engelschall]
2197
2198  Changes between 0.9.21 and 1.0b1 (25-Jun-1999 to 28-Jun-1999)
2199
2200   *) Added internal pth_util_cpystrn() to pth_util.c
2201      [Ralf S. Engelschall]
2202
2203   *) removed pth_attr(), pth_priority(), pth_detach()
2204      [Ralf S. Engelschall]
2205
2206   *) added new pth_attr_*() functions for manipulating pth_attr_t objects;
2207      this is now more flexible because those objects now can be also bound to
2208      threads when retrieved via pth_attr_of(). THIS IS A HEAVY BUT IMPORTANT
2209      API CHANGE! READ THE DOCS AND THE TEST PROGRAMS FOR DETAILS.  SORRY, BUT
2210      IS HAS TO BE DONE BEFORE WE ENTER THE STABLE 1.0 VERSIONS.
2211      [Ralf S. Engelschall]
2212
2213   *) Added --enable-profile and --enable-batch to Autoconf
2214      [Ralf S. Engelschall]
2215
2216   *) Updated pth.pod to reflect latest changes.
2217      [Ralf S. Engelschall]
2218
2219   *) Renamed pth_state_* to upper case names.
2220      [Ralf S. Engelschall]
2221
2222   *) Moved pth_sigmask() to pth_high.c
2223      [Ralf S. Engelschall]
2224
2225   *) Renamed pth_sigraise() to pth_raise() and added support for
2226      per-thread signal delivery via pth_raise().
2227      [Ralf S. Engelschall]
2228
2229   *) Renamed pth.c to pth_lib.c
2230      [Ralf S. Engelschall]
2231
2232   *) Upgraded to GNU shtool 1.3.1
2233      [Ralf S. Engelschall]
2234
2235   *) Added pth_version() function
2236      [Ralf S. Engelschall]
2237
2238   *) Added a real test Makefile target via new test_std.c
2239      [Ralf S. Engelschall]
2240
2241   *) Added more references to pth.pod
2242      [Ralf S. Engelschall]
2243
2244      ___   ___
2245     / _ \ / _ \
2246    | | | | (_) |
2247    | |_| |\__, |
2248  ___\___(_) /_/__________________________________________________________
2249
2250  Changes between 0.9.20 and 0.9.21 (24-Jun-1999 to 25-Jun-1999)
2251
2252   *) Upgraded to final shtool 1.3.0 release version
2253      [Ralf S. Engelschall]
2254
2255   *) Removed all variables names from prototypes to avoid conflicts
2256      [Ralf S. Engelschall]
2257
2258   *) Removed unnecessary casts for malloc() calls.
2259      [Ralf S. Engelschall]
2260
2261   *) Added pth_sigraise() function for later implementing pthread_kill() and
2262      currently at least for testing whether a thread still exists in the
2263      system (by sending it a signal 0).
2264      [Ralf S. Engelschall]
2265
2266   *) Renamed remaining XXX_INITIALIZER to XXX_INIT to be consistent with
2267      other init values.
2268      [Ralf S. Engelschall]
2269
2270   *) Prefixed all pth_attr_t attributes with "at_"
2271      [Ralf S. Engelschall]
2272
2273   *) Removed pth_equal(): we're not such crazy than POSIX...
2274      [Ralf S. Engelschall]
2275
2276  Changes between 0.9.19 and 0.9.20 (21-Jun-1999 to 24-Jun-1999)
2277
2278   *) Upgraded to latest shtool 1.3.0-dev
2279      [Ralf S. Engelschall]
2280
2281   *) Changed pth_yield(void) to pth_yield(pth_t) to allow the specification of
2282      a thread which should be favored.  This allows the usage of the old
2283      concept of co-routines where a thread/routine switches to a particular
2284      target thread.
2285      [Ralf S. Engelschall]
2286
2287   *) Added hint about async-safety to pth.pod
2288      [Ralf S. Engelschall]
2289
2290   *) Added POSIX-style consistency wrapper pth_sigmask() for sigprocmask().
2291      [Ralf S. Engelschall]
2292
2293   *) Added try argument to pth_mutex_acquire() to allow us later to
2294      emulate POSIX pthread_mutex_trylock()
2295      [Ralf S. Engelschall]
2296
2297   *) Moved errno stuff to a new dedicated pth_errno.c source file
2298      [Ralf S. Engelschall]
2299
2300   *) Changed function signatures to support return codes with errno
2301      [Ralf S. Engelschall]
2302
2303   *) pth_exit(val) in the main() thread now really just terminated the thread
2304      and not immediately the process, i.e. the thread goes sleeping until all
2305      other threads are gone and then does an exit(val).
2306      [Ralf S. Engelschall]
2307
2308  Changes between 0.9.18 and 0.9.19 (20-Jun-1999 to 21-Jun-1999)
2309
2310   *) Added a POSIX style pth_detach()
2311      [Ralf S. Engelschall]
2312
2313   *) Added pth_sync.c with POSIX style mutual exclusion locks (mutex),
2314      read-write locks (rwlock) and condition variable (cond) support
2315      [Ralf S. Engelschall]
2316
2317   *) Added a trivial mutex demo to test_misc.c
2318      [Ralf S. Engelschall]
2319
2320  Changes between 0.9.17 and 0.9.18 (18-Jun-1999 to 20-Jun-1999)
2321
2322   *) Greatly extended the manual page pth.pod
2323      [Ralf S. Engelschall]
2324
2325   *) Added inclusion hack to pthread.h.in
2326      [Ralf S. Engelschall]
2327
2328   *) Added per thread cleanup functions pth_cleanup_{push,pop}() modeled
2329      directly after the POSIX pthread_cleanup_{push,pop}() functions
2330      [Ralf S. Engelschall]
2331
2332   *) Fixed a memory leak related to pth_key_xxx().
2333      [Ralf S. Engelschall]
2334
2335   *) Added internal pth_pqueue_contains() function
2336      [Ralf S. Engelschall]
2337
2338   *) Added public API function pth_cancel(), pth_cancel_state() and
2339      pth_cancel_point() for thread cancellation support modeled after the
2340      POSIX thread cancellation facility.
2341      [Ralf S. Engelschall]
2342
2343   *) Removed pthread.* stuff. It will be re-integrated later for Pth 1.1.x
2344      [Ralf S. Engelschall]
2345
2346   *) Added cancellation flags to pth_attr().
2347      [Ralf S. Engelschall]
2348
2349   *) Added cancellation demo support to test_sig.c
2350      [Ralf S. Engelschall]
2351
2352  Changes between 0.9.16 and 0.9.17 (09-Jun-1999 to 18-Jun-1999)
2353
2354   *) Removed pthread_p.h
2355      [Ralf S. Engelschall]
2356
2357   *) Upgraded to latest shtool 1.3.0-dev
2358      [Ralf S. Engelschall]
2359
2360   *) Added stack overflow detection: a SIGSEGV is created when a
2361      guardian memory address at the bottom of the stack was
2362      overridden. This SIGSEGV can be even catched by the
2363      application.
2364      [Ralf S. Engelschall]
2365
2366  Changes between 0.9.15 and 0.9.16 (04-Jun-1999 to 09-Jun-1999)
2367
2368   *) Some Autoconf related cleanups.
2369      [Ralf S. Engelschall]
2370
2371   *) Added configure --enable-batch for FreeBSD port
2372      [Ralf S. Engelschall]
2373
2374   *) Removed TODO file
2375      [Ralf S. Engelschall]
2376
2377   *) Moved sigdelete stuff to new pth_util.c source
2378      [Ralf S. Engelschall]
2379
2380   *) Added pth_sigwait_ev()
2381      [Ralf S. Engelschall]
2382
2383   *) Updated pth.pod for recent changes
2384      [Ralf S. Engelschall]
2385
2386   *) Fixed GNU/Linux libc v5 pth_mctx_set() variant
2387      [Ralf S. Engelschall, Felix von Leitner <leitner@fefe.de>]
2388
2389  Changes between 0.9.14 and 0.9.15 (01-Jun-1999 to 04-Jun-1999)
2390
2391   *) Upgraded to shtool 1.2.9
2392      [Ralf S. Engelschall]
2393
2394   *) Avoid race conditions in emulated sigsetjmp() switching
2395      [Ralf S. Engelschall]
2396
2397   *) Added test_sig.c
2398      [Ralf S. Engelschall]
2399
2400   *) Fixed getsockopt() call: errlen wasn't initialized
2401      [Ralf S. Engelschall, Anton Umnikov <anton@rest.dvgu.ru>]
2402
2403   *) Allow pth_event_walk() also to use PTH_UNTIL_OCCURRED
2404      to walk to the next/prev. occurred event in a ring
2405      [Ralf S. Engelschall]
2406
2407   *) Completely overhauled the signal processing in the scheduler
2408      [Ralf S. Engelschall]
2409
2410   *) Added pth_sigwait() with POSIX semantics
2411      [Ralf S. Engelschall]
2412
2413   *) Fixed pth_join(): It returns -1 when only one thread is left
2414      [Ralf S. Engelschall]
2415
2416   *) Autoconf now no longer adds -g for gcc unless --enable-debug
2417      [Ralf S. Engelschall]
2418
2419  Changes between 0.9.13 and 0.9.14 (01-Jun-1999 to 01-Jun-1999)
2420
2421   *) Simplified the event construction by removing unnecessary PTH_UNTIL_XX
2422      flags and renaming the remaining ones to PTH_UNTIL_YY_XXX.
2423      [Ralf S. Engelschall]
2424
2425   *) Renamed PTH_EVENT_IRQ to PTH_EVENT_SIG and implemented it the first time
2426      via sigpending()/sigismember().
2427      [Ralf S. Engelschall]
2428
2429   *) Documented the event facility in the manual page
2430      [Ralf S. Engelschall]
2431
2432   *) Switched TCB's name attribute from "char *" to "char[40]" and copy in the
2433      value when spawning. This allows applications to generate the name
2434      temporarily only.
2435      [Ralf S. Engelschall]
2436
2437   *) Cleaned up source code at lots of edges...
2438      [Ralf S. Engelschall]
2439
2440  Changes between 0.9.12 and 0.9.13 (30-May-1999 to 01-Jun-1999)
2441
2442   *) Cleaned up Makefile.in even more
2443      [Ralf S. Engelschall]
2444
2445   *) Add stackaddr argument to pth_attr() to allow the application
2446      to specificy a particular stack
2447      [Ralf S. Engelschall]
2448
2449   *) Added pthread* files which will contain the POSIX.1c threading
2450      ("pthread") API wrapper for PTH. This is still work in progress and not
2451      enabled per default (one has to use --enable-pthread).
2452      [Ralf S. Engelschall]
2453
2454   *) Added SunSoft's pthread_June95.ps document ("PThreads Summary")
2455      as pthreads.ps
2456      [Ralf S. Engelschall]
2457
2458   *) Update pth.pod to reflect recent changes.
2459      [Ralf S. Engelschall]
2460
2461   *) Optimized pth_time_cmp()
2462      [Ralf S. Engelschall]
2463
2464   *) Added support for per-thread signal masks
2465      [Ralf S. Engelschall]
2466
2467   *) Made pth_mctx_set() more robust: It now uses sigsuspend for
2468      waiting, correctly blocks signals and restores SIGUSR1 stuff
2469      [Ralf S. Engelschall]
2470
2471   *) Fixed license messages in sources files
2472      [Ralf S. Engelschall]
2473
2474   *) Removed const from pth_connect and pth_connect_ev to avoid problems
2475      [Ralf S. Engelschall]
2476
2477   *) Make sure Autoconf doesn't add -lnsl twice
2478      [Ralf S. Engelschall]
2479
2480   *) Cleaned up pth_mctx.c even more
2481      [Ralf S. Engelschall]
2482
2483  Changes between 0.9.11 and 0.9.12 (28-May-1999 to 30-May-1999)
2484
2485   *) Some fixes to test_httpd.c: init of addrlen, REQ_MAX handling
2486      [Ralf S. Engelschall]
2487
2488   *) Allow pth_join(NULL) to join any available terminated thread
2489      [Ralf S. Engelschall]
2490
2491   *) Fixed incorrect pth_event_concat() usages: terminated NULL was missing
2492      [Ralf S. Engelschall]
2493
2494   *) Added pth_connect, pth_connect_ev and pth_accept_ev functions
2495      [Ralf S. Engelschall]
2496
2497   *) Removed unnecessary b_extra stuff from pth_read/pth_write
2498      [Ralf S. Engelschall]
2499
2500   *) Removed "intern" on pth_time(), it's a public API function
2501      [Ralf S. Engelschall]
2502
2503   *) Added pth_timeout() constructor function
2504      [Ralf S. Engelschall]
2505
2506   *) Fixed event handling for all pth_xxx_ev() functions
2507      [Ralf S. Engelschall]
2508
2509   *) Use pth_readline_ev() in test_mp to show how pth_xxx_ev() works
2510      [Ralf S. Engelschall]
2511
2512   *) Converted pth_nap() and pth_join() to use PTH_MODE_STATIC
2513      [Ralf S. Engelschall]
2514
2515   *) Fixed event initialization in event rings
2516      [Ralf S. Engelschall]
2517
2518   *) Kicked out the whole "occurred event ring" stuff because it's not really
2519      necessary (one can walk through a single ring and check for occurred
2520      events easily) and this way two nasty bugs can be fixed and the event
2521      manager simplified a lot. pth_wait() not has only one argument
2522      and this is a read-only one, i.e. only the occured flag is set
2523      in the events in this ring, but the ring is no longer changed.
2524      [Ralf S. Engelschall]
2525
2526  Changes between 0.9.10 and 0.9.11 (28-May-1999 to 28-May-1999)
2527
2528   *) Fix warnings in test_httpd.c
2529      [Ralf S. Engelschall]
2530
2531   *) Upgraded to final shtool 1.2.8
2532      [Ralf S. Engelschall]
2533
2534   *) Added PTH_KEY_INIT
2535      [Ralf S. Engelschall]
2536
2537   *) Added PTH_MODE_STATIC for statically allocating
2538      a per-thread event. This is now used by the various high-level functions
2539      to avoid unnecessary alloc/free sequences.
2540      [Ralf S. Engelschall]
2541
2542  Changes between 0.9.9 and 0.9.10 (25-May-1999 to 28-May-1999)
2543
2544   *) Cleaned up Makefile.in
2545      [Ralf S. Engelschall]
2546
2547   *) Upgraded to GNU libtool 1.3.2
2548      [Ralf S. Engelschall]
2549
2550   *) Upgraded to new shtool 1.2.8 which includes scpp
2551      [Ralf S. Engelschall]
2552
2553   *) Merged all pth_foo.h's into pth_foo.c's with the help of shtool scpp
2554      [Ralf S. Engelschall]
2555
2556   *) Updated dependencies after pth_p.h overhauling
2557      [Ralf S. Engelschall]
2558
2559   *) Added TODO file
2560      [Ralf S. Engelschall]
2561
2562  Changes between 0.9.8 and 0.9.9 (24-May-1999 to 25-May-1999)
2563
2564   *) Finally converted library generation to use GNU libtool
2565      [Ralf S. Engelschall]
2566
2567   *) Add hints to BIND 8 and adns to manual page
2568      [Ralf S. Engelschall]
2569
2570   *) Fixed memory leaks in test_httpd and test_mp
2571      [Ralf S. Engelschall, Flux <flux@iae.nl>]
2572
2573   *) Fixed typos in manual page
2574      [Ralf S. Engelschall]
2575
2576   *) Fix -lsocket -lnsl tests for Siemens platforms
2577      [Ralf S. Engelschall]
2578
2579   *) Fix chmod in Autoconf stuff
2580      [Ralf S. Engelschall]
2581
2582   *) Removed unneccessary pth_ring_linked()
2583      [Ralf S. Engelschall]
2584
2585  Changes between 0.9.7 and 0.9.8 (23-May-1999 to 24-May-1999)
2586
2587   *) Fixed bug in priority queue element counting (q_num)
2588      [Ralf S. Engelschall]
2589
2590   *) pth_spawn() now inherits the attributes from the parent thread
2591      [Ralf S. Engelschall]
2592
2593   *) Merged pth_stat() and pth_load() into a generic extensible pth_ctrl()
2594      [Ralf S. Engelschall]
2595
2596   *) Added new pth_fork() function
2597      [Ralf S. Engelschall]
2598
2599   *) Added depend target to Makefile.in and generated dependencies
2600      [Ralf S. Engelschall]
2601
2602   *) Moved joinable argument from pth_attr() to the flags argument
2603      [Ralf S. Engelschall]
2604
2605   *) Added PTH_CTRL_GETPRIO and PTH_CTRL_GETNAME.
2606      [Ralf S. Engelschall]
2607
2608   *) Typo was everywhere: preemtive => preemptive
2609      [Ralf S. Engelschall]
2610
2611   *) Typo was everywhere: occured => occurred
2612      [Ralf S. Engelschall]
2613
2614   *) Finished manual page
2615      [Ralf S. Engelschall]
2616
2617   *) Removed useless PTH_UNTIL_RUNNING
2618      [Ralf S. Engelschall]
2619
2620   *) Replaced errno support with a better variant
2621      [Ralf S. Engelschall]
2622
2623   *) Lots of small fixes and portability cleanups
2624      [Ralf S. Engelschall]
2625
2626  Changes between 0.9.6 and 0.9.7 (22-May-1999 to 23-May-1999)
2627
2628   *) Added PORTING document.
2629      [Ralf S. Engelschall]
2630
2631   *) Added errno support (pth_errno.[ch]).
2632      [Ralf S. Engelschall]
2633
2634   *) Added exponential average load calculations for scheduler.  The current
2635      load value can be retrieved by the application through pth_load().
2636      [Ralf S. Engelschall]
2637
2638  Changes between 0.9.5 and 0.9.6 (21-May-1999 to 22-May-1999)
2639
2640   *) Added more documentation.
2641      [Ralf S. Engelschall]
2642
2643   *) Autoconf now determines the direction of stack grow and pth_mctx_set()
2644      uses this information for sigstack() now.
2645      [Ralf S. Engelschall]
2646
2647   *) Fixed acconfig.h
2648      [Ralf S. Engelschall]
2649
2650   *) Increased stacksizes (was too small for Solaris and friends)
2651      [Ralf S. Engelschall]
2652
2653   *) Switched from BSD-style license to LGPL license
2654      [Ralf S. Engelschall]
2655
2656   *) Fixed a nasty bug in scheduler:
2657      when a thread was moved from the wait to the ready queue, it's state
2658      wasn't changed to pth_state_ready. This way the next time it was handled
2659      it was incorrectly filed to the waiting queue (which caused core dumps
2660      because the ev_waiting/ev_occurred pointers didn't exist).  This way now
2661      the stuff works great also under Solaris!
2662      [Ralf S. Engelschall]
2663
2664  Changes between 0.9.4 and 0.9.5 (21-May-1999 to 21-May-1999)
2665
2666   *) Renamed pth_{get,set}specific() to pth_key_{get,set}data().
2667      [Ralf S. Engelschall]
2668
2669   *) Renamed remaining pth_message_xxx() to pth_msgport_xxx()
2670      [Ralf S. Engelschall]
2671
2672   *) Added pth_{readline,read,write}_ev() functions which are similar to
2673      pth_{readline,read,write}() but have an additional event argument which
2674      can be used for timeouts and other parallel events.
2675      [Ralf S. Engelschall]
2676
2677  Changes between 0.9.3 and 0.9.4 (14-May-1999 to 21-May-1999)
2678
2679   *) Added ring datastructures (pth_ring.[ch]).
2680      [Ralf S. Engelschall]
2681
2682   *) Add an AmigaOS-style message port facility (pth_msg.[ch]).
2683      [Ralf S. Engelschall]
2684
2685   *) Added a message port related test program (test_mp.c).
2686      [Ralf S. Engelschall]
2687
2688   *) Fix scheduler event management bug: when no I/O events existed
2689      plus a next timer but other events (e.g. message ports) already occurred,
2690      the scheduler blocked instead of handling the already occurred events
2691      first.
2692      [Ralf S. Engelschall]
2693
2694   *) Fix bug in event creating: the event occurrence flag has to be cleared in
2695      pth_wait() to avoid spinning events which were already occurred.
2696      [Ralf S. Engelschall]
2697
2698  Changes between 0.9.2 and 0.9.3 (14-May-1999 to 14-May-1999)
2699
2700   *) Added pth_once() for later (pthreads!)
2701      [Ralf S. Engelschall]
2702
2703   *) Splitted pth.c into pth.c and pth_high.c
2704      [Ralf S. Engelschall]
2705
2706   *) Added pth_data.[ch] with pthread style data storage stuff
2707      [Ralf S. Engelschall]
2708
2709   *) Moved readline stuff from test_httpd to pth_high.c as pth_readline()
2710      [Ralf S. Engelschall]
2711
2712   *) Removed debugging fprintf from test_httpd to speed it up
2713      [Ralf S. Engelschall]
2714
2715   *) Fixed listen() call: now uses REQ_MAX for backlog and tests for -1
2716      [Ralf S. Engelschall]
2717
2718   *) Fix a polling-related timer bug in the event manager
2719      [Ralf S. Engelschall]
2720
2721  Changes between 0.9.1 and 0.9.2 (13-May-1999 to 14-May-1999)
2722
2723   *) renamed pth_asynchronize() to pth_nonblocking()
2724      [Ralf S. Engelschall]
2725
2726   *) removed implicit pth_nonblocking() calls
2727      [Ralf S. Engelschall]
2728
2729   *) speeded up pth_accept by optimizing event alloc/free
2730      [Ralf S. Engelschall]
2731
2732   *) cleaned up pth_waitpid
2733      [Ralf S. Engelschall]
2734
2735   *) Changed semantics of pth_wait(var, NULL): it now means
2736      that the events in var are not removed (although their
2737      chanining might be changed)
2738      [Ralf S. Engelschall]
2739
2740   *) Renamed internal pth_usleep() to pth_time_usleep()
2741      [Ralf S. Engelschall]
2742
2743   *) Replaced pth_sleep() with pth_nap() and added
2744      two replacement functions: pth_sleep() for a variant
2745      of sleep(3) and pth_usleep() for a variant of usleep(3).
2746      [Ralf S. Engelschall]
2747
2748   *) Optimized scheduler a little bit by inlining pth_time_{set,add,sub}
2749      [Ralf S. Engelschall]
2750
2751   *) Added pth_pqueue_{head,walk} functions and used it in eventmanager
2752      [Ralf S. Engelschall]
2753
2754   *) Rewrote pth_sched_eventmanager() without a surrounding loop
2755      [Ralf S. Engelschall]
2756
2757   *) Implemented a readline() function to speedup test_httpd
2758      [Ralf S. Engelschall]
2759
2760  Changes between 0.9.0 and 0.9.1 (12-May-1999 to 13-May-1999)
2761
2762   *) Imported into CVS repository
2763      [Ralf S. Engelschall]
2764
2765  Changes between GENESIS and 0.9.0 (Feb-1999 to 12-May-1999)
2766
2767   *) Created initial version on FreeBSD
2768      [Ralf S. Engelschall]
2769
2770   *) Ported to Linux
2771      [Ralf S. Engelschall]
2772
2773