/[pcsx2_0.9.7]/trunk/3rdparty/w32pthreads/NEWS
ViewVC logotype

Contents of /trunk/3rdparty/w32pthreads/NEWS

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (show annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (9 years, 11 months ago) by william
File size: 38620 byte(s)
committing r3113 initial commit again...
1 RELEASE 2.8.0
2 -------------
3 (2006-12-22)
4
5 General
6 -------
7 New bug fixes in this release since 2.7.0 have not been applied to the
8 version 1.x.x series. It is probably time to drop version 1.
9
10 Testing and verification
11 ------------------------
12 This release has not yet been tested on SMP architechtures. All tests pass
13 on a uni-processor system.
14
15 Bug fixes
16 ---------
17 Sem_destroy could return EBUSY even though no threads were waiting on the
18 semaphore. Other races around invalidating semaphore structs (internally)
19 have been removed as well.
20
21 New tests
22 ---------
23 semaphore5.c - tests the bug fix referred to above.
24
25
26 RELEASE 2.7.0
27 -------------
28 (2005-06-04)
29
30 General
31 -------
32 All new features in this release have been back-ported in release 1.11.0,
33 including the incorporation of MCS locks in pthread_once, however, versions
34 1 and 2 remain incompatible even though they are now identical in
35 performance and functionality.
36
37 Testing and verification
38 ------------------------
39 This release has been tested (passed the test suite) on both uni-processor
40 and multi-processor systems.
41 - Tim Theisen
42
43 Bug fixes
44 ---------
45 Pthread_once has been re-implemented to remove priority boosting and other
46 complexity to improve robustness. Races for Win32 handles that are not
47 recycle-unique have been removed. The general form of pthread_once is now
48 the same as that suggested earlier by Alexander Terekhov, but instead of the
49 'named mutex', a queue-based lock has been implemented which has the required
50 properties of dynamic self initialisation and destruction. This lock is also
51 efficient. The ABI is unaffected in as much as the size of pthread_once_t has
52 not changed and PTHREAD_ONCE_INIT has not changed, however, applications that
53 peek inside pthread_once_t, which is supposed to be opaque, will break.
54 - Vladimir Kliatchko
55
56 New features
57 ------------
58 * Support for Mingw cross development tools added to GNUmakefile.
59 Mingw cross tools allow building the libraries on Linux.
60 - Mikael Magnusson
61
62
63 RELEASE 2.6.0
64 -------------
65 (2005-05-19)
66
67 General
68 -------
69 All of the bug fixes and new features in this release have been
70 back-ported in release 1.10.0.
71
72 Testing and verification
73 ------------------------
74 This release has been tested (passed the test suite) on both uni-processor
75 and multi-processor systems. Thanks to Tim Theisen at TomoTherapy for
76 exhaustively running the MP tests and for providing crutial observations
77 and data when faults are detected.
78
79 Bugs fixed
80 ----------
81
82 * pthread_detach() now reclaims remaining thread resources if called after
83 the target thread has terminated. Previously, this routine did nothing in
84 this case.
85
86 New tests
87 ---------
88
89 * detach1.c - tests that pthread_detach properly invalidates the target
90 thread, which indicates that the thread resources have been reclaimed.
91
92
93 RELEASE 2.5.0
94 -------------
95 (2005-05-09)
96
97 General
98 -------
99
100 The package now includes a reference documentation set consisting of
101 HTML formatted Unix-style manual pages that have been edited for
102 consistency with Pthreads-w32. The set can also be read online at:
103 http://sources.redhat.com/pthreads-win32/manual/index.html
104
105 Thanks again to Tim Theisen for running the test suite pre-release
106 on an MP system.
107
108 All of the bug fixes and new features in this release have been
109 back-ported in release 1.9.0.
110
111 Bugs fixed
112 ----------
113
114 * Thread Specific Data (TSD) key management has been ammended to
115 eliminate a source of (what was effectively) resource leakage (a HANDLE
116 plus memory for each key destruct routine/thread association). This was
117 not a true leak because these resources were eventually reclaimed when
118 pthread_key_delete was run AND each thread referencing the key had exited.
119 The problem was that these two conditions are often not met until very
120 late, and often not until the process is about to exit.
121
122 The ammended implementation avoids the need for the problematic HANDLE
123 and reclaims the memory as soon as either the key is deleted OR the
124 thread exits, whichever is first.
125
126 Thanks to Richard Hughes at Aculab for identifying and locating the leak.
127
128 * TSD key destructors are now processed up to PTHREAD_DESTRUCTOR_ITERATIONS
129 times instead of just once. PTHREAD_DESTRUCTOR_ITERATIONS has been
130 defined in pthread.h for some time but not used.
131
132 * Fix a semaphore accounting race between sem_post/sem_post_multiple
133 and sem_wait cancellation. This is the same issue as with
134 sem_timedwait that was fixed in the last release.
135
136 * sem_init, sem_post, and sem_post_multiple now check that the
137 semaphore count never exceeds _POSIX_SEM_VALUE_MAX.
138
139 * Although sigwait() is nothing more than a no-op, it should at least
140 be a cancellation point to be consistent with the standard.
141
142 New tests
143 ---------
144
145 * stress1.c - attempts to expose problems in condition variable
146 and semaphore timed wait logic. This test was inspired by Stephan
147 Mueller's sample test code used to identify the sem_timedwait bug
148 from the last release. It's not a part of the regular test suite
149 because it can take awhile to run. To run it:
150 nmake clean VC-stress
151
152 * tsd2.c - tests that key destructors are re-run if the tsd key value is
153 not NULL after the destructor routine has run. Also tests that
154 pthread_setspecific() and pthread_getspecific() are callable from
155 destructors.
156
157
158 RELEASE 2.4.0
159 -------------
160 (2005-04-26)
161
162 General
163 -------
164
165 There is now no plan to release a version 3.0.0 to fix problems in
166 pthread_once(). Other possible implementations of pthread_once
167 will still be investigated for a possible future release in an attempt
168 to reduce the current implementation's complexity.
169
170 All of the bug fixes and new features in this release have been
171 back-ported for release 1.8.0.
172
173 Bugs fixed
174 ----------
175
176 * Fixed pthread_once race (failures on an MP system). Thanks to
177 Tim Theisen for running exhaustive pre-release testing on his MP system
178 using a range of compilers:
179 VC++ 6
180 VC++ 7.1
181 Intel C++ version 8.0
182 All tests passed.
183 Some minor speed improvements were also done.
184
185 * Fix integer overrun error in pthread_mutex_timedlock() - missed when
186 sem_timedwait() was fixed in release 2.2.0. This routine no longer returns
187 ENOTSUP when NEED_SEM is defined - it is supported (NEED_SEM is only
188 required for WinCE versions prior to 3.0).
189
190 * Fix timeout bug in sem_timedwait().
191 - Thanks to Stephan Mueller for reporting, providing diagnostic output
192 and test code.
193
194 * Fix several problems in the NEED_SEM conditionally included code.
195 NEED_SEM included code is provided for systems that don't implement W32
196 semaphores, such as WinCE prior to version 3.0. An alternate implementation
197 of POSIX semaphores is built using W32 events for these systems when
198 NEED_SEM is defined. This code has been completely rewritten in this
199 release to reuse most of the default POSIX semaphore code, and particularly,
200 to implement all of the sem_* routines supported by pthreads-win32. Tim
201 Theisen also run the test suite over the NEED_SEM code on his MP system. All
202 tests passed.
203
204 * The library now builds without errors for the Borland Builder 5.5 compiler.
205
206 New features
207 ------------
208
209 * pthread_mutex_timedlock() and all sem_* routines provided by
210 pthreads-win32 are now implemented for WinCE versions prior to 3.0. Those
211 versions did not implement W32 semaphores. Define NEED_SEM in config.h when
212 building the library for these systems.
213
214 Known issues in this release
215 ----------------------------
216
217 * pthread_once is too complicated - but it works as far as testing can
218 determine..
219
220 * The Borland version of the dll fails some of the tests with a memory read
221 exception. The cause is not yet known but a compiler bug has not been ruled
222 out.
223
224
225 RELEASE 2.3.0
226 -------------
227 (2005-04-12)
228
229 General
230 -------
231
232 Release 1.7.0 is a backport of features and bug fixes new in
233 this release. See earlier notes under Release 2.0.0/General.
234
235 Bugs fixed
236 ----------
237
238 * Fixed pthread_once potential for post once_routine cancellation
239 hanging due to starvation. See comments in pthread_once.c.
240 Momentary priority boosting is used to ensure that, after a
241 once_routine is cancelled, the thread that will run the
242 once_routine is not starved by higher priority waiting threads at
243 critical times. Priority boosting occurs only AFTER a once_routine
244 cancellation, and is applied only to that once_control. The
245 once_routine is run at the thread's normal base priority.
246
247 New tests
248 ---------
249
250 * once4.c: Aggressively tests pthread_once() under realtime
251 conditions using threads with varying priorities. Windows'
252 random priority boosting does not occur for threads with realtime
253 priority levels.
254
255
256 RELEASE 2.2.0
257 -------------
258 (2005-04-04)
259
260 General
261 -------
262
263 * Added makefile targets to build static link versions of the library.
264 Both MinGW and MSVC. Please note that this does not imply any change
265 to the LGPL licensing, which still imposes psecific conditions on
266 distributing software that has been statically linked with this library.
267
268 * There is a known bug in pthread_once(). Cancellation of the init_routine
269 exposes a potential starvation (i.e. deadlock) problem if a waiting thread
270 has a higher priority than the initting thread. This problem will be fixed
271 in version 3.0.0 of the library.
272
273 Bugs fixed
274 ----------
275
276 * Fix integer overrun error in sem_timedwait().
277 Kevin Lussier
278
279 * Fix preprocessor directives for static linking.
280 Dimitar Panayotov
281
282
283 RELEASE 2.1.0
284 -------------
285 (2005-03-16)
286
287 Bugs fixed
288 ----------
289
290 * Reverse change to pthread_setcancelstate() in 2.0.0.
291
292
293 RELEASE 2.0.0
294 -------------
295 (2005-03-16)
296
297 General
298 -------
299
300 This release represents an ABI change and the DLL version naming has
301 incremented from 1 to 2, e.g. pthreadVC2.dll.
302
303 Version 1.4.0 back-ports the new functionality included in this
304 release. Please distribute DLLs built from that version with updates
305 to applications built on pthreads-win32 version 1.x.x.
306
307 The package naming has changed, replacing the snapshot date with
308 the version number + descriptive information. E.g. this
309 release is "pthreads-w32-2-0-0-release".
310
311 Bugs fixed
312 ----------
313
314 * pthread_setcancelstate() no longer checks for a pending
315 async cancel event if the library is using alertable async
316 cancel. See the README file (Prerequisites section) for info
317 on adding alertable async cancelation.
318
319 New features
320 ------------
321
322 * pthread_once() now supports init_routine cancellability.
323
324 New tests
325 ---------
326
327 * Agressively test pthread_once() init_routine cancellability.
328
329
330 SNAPSHOT 2005-03-08
331 -------------------
332 Version 1.3.0
333
334 Bug reports (fixed)
335 -------------------
336
337 * Implicitly created threads leave Win32 handles behind after exiting.
338 - Dmitrii Semii
339
340 * pthread_once() starvation problem.
341 - Gottlob Frege
342
343 New tests
344 ---------
345
346 * More intense testing of pthread_once().
347
348
349 SNAPSHOT 2005-01-25
350 -------------------
351 Version 1.2.0
352
353 Bug fixes
354 ---------
355
356 * Attempted acquisition of a recursive mutex could cause waiting threads
357 to not be woken when the mutex was released.
358 - Ralf Kubis <RKubis at mc.com>
359
360 * Various package omissions have been fixed.
361
362
363 SNAPSHOT 2005-01-03
364 -------------------
365 Version 1.1.0
366
367 Bug fixes
368 ---------
369
370 * Unlocking recursive or errorcheck mutexes would sometimes
371 unexpectedly return an EPERM error (bug introduced in
372 snapshot-2004-11-03).
373 - Konstantin Voronkov <beowinkle at yahoo.com>
374
375
376 SNAPSHOT 2004-11-22
377 -------------------
378 Version 1.0.0
379
380 This snapshot primarily fixes the condvar bug introduced in
381 snapshot-2004-11-03. DLL versioning has also been included to allow
382 applications to runtime check the Microsoft compatible DLL version
383 information, and to extend the DLL naming system for ABI and major
384 (non-backward compatible) API changes. See the README file for details.
385
386 Bug fixes
387 ---------
388
389 * Condition variables no longer deadlock (bug introduced in
390 snapshot-2004-11-03).
391 - Alexander Kotliarov and Nicolas at saintmac
392
393 * DLL naming extended to avoid 'DLL hell' in the future, and to
394 accommodate the ABI change introduced in snapshot-2004-11-03. Snapshot
395 2004-11-03 will be removed from FTP sites.
396
397 New features
398 ------------
399
400 * A Microsoft-style version resource has been added to the DLL for
401 applications that wish to check DLL compatibility at runtime.
402
403 * Pthreads-win32 DLL naming has been extended to allow incompatible DLL
404 versions to co-exist in the same filesystem. See the README file for details,
405 but briefly: while the version information inside the DLL will change with
406 each release from now on, the DLL version names will only change if the new
407 DLL is not backward compatible with older applications.
408
409 The versioning scheme has been borrowed from GNU Libtool, and the DLL
410 naming scheme is from Cygwin. Provided the Libtool-style numbering rules are
411 honoured, the Cygwin DLL naming scheme automatcally ensures that DLL name
412 changes are minimal and that applications will not load an incompatible
413 pthreads-win32 DLL.
414
415 Those who use the pre-built DLLs will find that the DLL/LIB names have a new
416 suffix (1) in this snapshot. E.g. pthreadVC1.dll etc.
417
418 * The POSIX thread ID reuse uniqueness feature introduced in the last snapshot
419 has been kept as default, but the behaviour can now be controlled when the DLL
420 is built to effectively switch it off. This makes the library much more
421 sensitive to applications that assume that POSIX thread IDs are unique, i.e.
422 are not strictly compliant with POSIX. See the PTW32_THREAD_ID_REUSE_INCREMENT
423 macro comments in config.h for details.
424
425 Other changes
426 -------------
427 Certain POSIX macros have changed.
428
429 These changes are intended to conform to the Single Unix Specification version 3,
430 which states that, if set to 0 (zero) or not defined, then applications may use
431 sysconf() to determine their values at runtime. Pthreads-win32 does not
432 implement sysconf().
433
434 The following macros are no longer undefined, but defined and set to -1
435 (not implemented):
436
437 _POSIX_THREAD_ATTR_STACKADDR
438 _POSIX_THREAD_PRIO_INHERIT
439 _POSIX_THREAD_PRIO_PROTECT
440 _POSIX_THREAD_PROCESS_SHARED
441
442 The following macros are defined and set to 200112L (implemented):
443
444 _POSIX_THREADS
445 _POSIX_THREAD_SAFE_FUNCTIONS
446 _POSIX_THREAD_ATTR_STACKSIZE
447 _POSIX_THREAD_PRIORITY_SCHEDULING
448 _POSIX_SEMAPHORES
449 _POSIX_READER_WRITER_LOCKS
450 _POSIX_SPIN_LOCKS
451 _POSIX_BARRIERS
452
453 The following macros are defined and set to appropriate values:
454
455 _POSIX_THREAD_THREADS_MAX
456 _POSIX_SEM_VALUE_MAX
457 _POSIX_SEM_NSEMS_MAX
458 PTHREAD_DESTRUCTOR_ITERATIONS
459 PTHREAD_KEYS_MAX
460 PTHREAD_STACK_MIN
461 PTHREAD_THREADS_MAX
462
463
464 SNAPSHOT 2004-11-03
465 -------------------
466
467 DLLs produced from this snapshot cannot be used with older applications without
468 recompiling the application, due to a change to pthread_t to provide unique POSIX
469 thread IDs.
470
471 Although this snapshot passes the extended test suite, many of the changes are
472 fairly major, and some applications may show different behaviour than previously,
473 so adopt with care. Hopefully, any changed behaviour will be due to the library
474 being better at it's job, not worse.
475
476 Bug fixes
477 ---------
478
479 * pthread_create() no longer accepts NULL as the thread reference arg.
480 A segfault (memory access fault) will result, and no thread will be
481 created.
482
483 * pthread_barrier_wait() no longer acts as a cancelation point.
484
485 * Fix potential race condition in pthread_once()
486 - Tristan Savatier <tristan at mpegtv.com>
487
488 * Changes to pthread_cond_destroy() exposed some coding weaknesses in several
489 test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV
490 is still in use.
491
492 New features
493 ------------
494
495 * Added for compatibility:
496 PTHREAD_RECURSIVE_MUTEX_INITIALIZER,
497 PTHREAD_ERRORCHECK_MUTEX_INITIALIZER,
498 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
499 PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
500
501 * Initial support for Digital Mars compiler
502 - Anuj Goyal <anuj.goyal at gmail.com>
503
504 * Faster Mutexes. These have been been rewritten following a model provided by
505 Alexander Terekhov that reduces kernel space checks, and eliminates some additional
506 critical sections used to manage a race between timedlock expiration and unlock.
507 Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling
508 of mutexes, however any out-of-order lock acquisition should be very rare.
509
510 * Faster semaphores. Following a similar model to mutexes above, these have been
511 rewritten to use preliminary users space checks.
512
513 * sem_getvalue() now returns the number of waiters.
514
515 * The POSIX thread ID now has much stronger uniqueness characteristics. The library
516 garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
517 destruction/creation cycles.
518
519 New tests
520 ---------
521
522 * semaphore4.c: Tests cancelation of the new sem_wait().
523
524 * semaphore4t.c: Likewise for sem_timedwait().
525
526 * rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs,
527 mutexes, and semaphores that they're built on.
528
529
530 SNAPSHOT 2004-05-16
531 -------------------
532
533 Attempt to add Watcom to the list of compilers that can build the library.
534 This failed in the end due to it's non-thread-aware errno. The library
535 builds but the test suite fails. See README.Watcom for more details.
536
537 Bug fixes
538 ---------
539 * Bug and memory leak in sem_init()
540 - Alex Blanco <Alex.Blanco at motorola.com>
541
542 * ptw32_getprocessors() now returns CPU count of 1 for WinCE.
543 - James Ewing <james.ewing at sveasoft.com>
544
545 * pthread_cond_wait() could be canceled at a point where it should not
546 be cancelable. Fixed.
547 - Alexander Terekhov <TEREKHOV at de.ibm.com>
548
549 * sem_timedwait() had an incorrect timeout calculation.
550 - Philippe Di Cristo <philipped at voicebox.com>
551
552 * Fix a memory leak left behind after threads are destroyed.
553 - P. van Bruggen <pietvb at newbridges.nl>
554
555 New features
556 ------------
557 * Ported to AMD64.
558 - Makoto Kato <raven at oldskool.jp>
559
560 * True pre-emptive asynchronous cancelation of threads. This is optional
561 and requires that Panagiotis E. Hadjidoukas's QueueUserAPCEx package be
562 installed. This package is included in the pthreads-win32 self-unpacking
563 Zip archive starting from this snapshot. See the README.txt file inside
564 the package for installation details.
565
566 Note: If you don't use async cancelation in your application, or don't need
567 to cancel threads that are blocked on system resources such as network I/O,
568 then the default non-preemptive async cancelation is probably good enough.
569 However, pthreads-win32 auto-detects the availability of these components
570 at run-time, so you don't need to rebuild the library from source if you
571 change your mind later.
572
573 All of the advice available in books and elsewhere on the undesirability
574 of using async cancelation in any application still stands, but this
575 feature is a welcome addition with respect to the library's conformance to
576 the POSIX standard.
577
578 SNAPSHOT 2003-09-18
579 -------------------
580
581 Cleanup of thread priority management. In particular, setting of thread
582 priority now attempts to map invalid Win32 values within the range returned
583 by sched_get_priority_min/max() to useful values. See README.NONPORTABLE
584 under "Thread priority".
585
586 Bug fixes
587 ---------
588 * pthread_getschedparam() now returns the priority given by the most recent
589 call to pthread_setschedparam() or established by pthread_create(), as
590 required by the standard. Previously, pthread_getschedparam() incorrectly
591 returned the running thread priority at the time of the call, which may have
592 been adjusted or temporarily promoted/demoted.
593
594 * sched_get_priority_min() and sched_get_priority_max() now return -1 on error
595 and set errno. Previously, they incorrectly returned the error value directly.
596
597
598 SNAPSHOT 2003-09-04
599 -------------------
600
601 Bug fixes
602 ---------
603 * ptw32_cancelableWait() now allows cancelation of waiting implicit POSIX
604 threads.
605
606 New test
607 --------
608 * cancel8.c tests cancelation of Win32 threads waiting at a POSIX cancelation
609 point.
610
611
612 SNAPSHOT 2003-09-03
613 -------------------
614
615 Bug fixes
616 ---------
617 * pthread_self() would free the newly created implicit POSIX thread handle if
618 DuplicateHandle failed instead of recycle it (very unlikely).
619
620 * pthread_exit() was neither freeing nor recycling the POSIX thread struct
621 for implicit POSIX threads.
622
623 New feature - Cancelation of/by Win32 (non-POSIX) threads
624 ---------------------------------------------------------
625 Since John Bossom's original implementation, the library has allowed non-POSIX
626 initialised threads (Win32 threads) to call pthreads-win32 routines and
627 therefore interact with POSIX threads. This is done by creating an on-the-fly
628 POSIX thread ID for the Win32 thread that, once created, allows fully
629 reciprical interaction. This did not extend to thread cancelation (async or
630 deferred). Now it does.
631
632 Any thread can be canceled by any other thread (Win32 or POSIX) if the former
633 thread's POSIX pthread_t value is known. It's TSD destructors and POSIX
634 cleanup handlers will be run before the thread exits with an exit code of
635 PTHREAD_CANCELED (retrieved with GetExitCodeThread()).
636
637 This allows a Win32 thread to, for example, call POSIX CV routines in the same way
638 that POSIX threads would/should, with pthread_cond_wait() cancelability and
639 cleanup handlers (pthread_cond_wait() is a POSIX cancelation point).
640
641 By adding cancelation, Win32 threads should now be able to call all POSIX
642 threads routines that make sense including semaphores, mutexes, condition
643 variables, read/write locks, barriers, spinlocks, tsd, cleanup push/pop,
644 cancelation, pthread_exit, scheduling, etc.
645
646 Note that these on-the-fly 'implicit' POSIX thread IDs are initialised as detached
647 (not joinable) with deferred cancelation type. The POSIX thread ID will be created
648 automatically by any POSIX routines that need a POSIX handle (unless the routine
649 needs a pthread_t as a parameter of course). A Win32 thread can discover it's own
650 POSIX thread ID by calling pthread_self(), which will create the handle if
651 necessary and return the pthread_t value.
652
653 New tests
654 ---------
655 Test the above new feature.
656
657
658 SNAPSHOT 2003-08-19
659 -------------------
660
661 This snapshot fixes some accidental corruption to new test case sources.
662 There are no changes to the library source code.
663
664
665 SNAPSHOT 2003-08-15
666 -------------------
667
668 Bug fixes
669 ---------
670
671 * pthread.dsp now uses correct compile flags (/MD).
672 - Viv <vcotirlea@hotmail.com>
673
674 * pthread_win32_process_detach_np() fixed memory leak.
675 - Steven Reddie <Steven.Reddie@ca.com>
676
677 * pthread_mutex_destroy() fixed incorrect return code.
678 - Nicolas Barry <boozai@yahoo.com>
679
680 * pthread_spin_destroy() fixed memory leak.
681 - Piet van Bruggen <pietvb@newbridges.nl>
682
683 * Various changes to tighten arg checking, and to work with later versions of
684 MinGW32 and MsysDTK.
685
686 * pthread_getschedparam() etc, fixed dangerous thread validity checking.
687 - Nicolas Barry <boozai@yahoo.com>
688
689 * POSIX thread handles are now reused and their memory is not freed on thread exit.
690 This allows for stronger thread validity checking.
691
692 New standard routine
693 --------------------
694
695 * pthread_kill() added to provide thread validity checking to applications.
696 It does not accept any non zero values for the signal arg.
697
698 New test cases
699 --------------
700
701 * New test cases to confirm validity checking, pthread_kill(), and thread reuse.
702
703
704 SNAPSHOT 2003-05-10
705 -------------------
706
707 Bug fixes
708 ---------
709
710 * pthread_mutex_trylock() now returns correct error values.
711 pthread_mutex_destroy() will no longer destroy a recursively locked mutex.
712 pthread_mutex_lock() is no longer inadvertantly behaving as a cancelation point.
713 - Thomas Pfaff <tpfaff@gmx.net>
714
715 * pthread_mutex_timedlock() no longer occasionally sets incorrect mutex
716 ownership, causing deadlocks in some applications.
717 - Robert Strycek <strycek@posam.sk> and Alexander Terekhov <TEREKHOV@de.ibm.com>
718
719
720 SNAPSHOT 2002-11-04
721 -------------------
722
723 Bug fixes
724 ---------
725
726 * sem_getvalue() now returns the correct value under Win NT and WinCE.
727 - Rob Fanner <rfanner@stonethree.com>
728
729 * sem_timedwait() now uses tighter checks for unreasonable
730 abstime values - that would result in unexpected timeout values.
731
732 * ptw32_cond_wait_cleanup() no longer mysteriously consumes
733 CV signals but may produce more spurious wakeups. It is believed
734 that the sem_timedwait() call is consuming a CV signal that it
735 shouldn't.
736 - Alexander Terekhov <TEREKHOV@de.ibm.com>
737
738 * Fixed a memory leak in ptw32_threadDestroy() for implicit threads.
739
740 * Fixed potential for deadlock in pthread_cond_destroy().
741 A deadlock could occur for statically declared CVs (PTHREAD_COND_INITIALIZER),
742 when one thread is attempting to destroy the condition variable while another
743 is attempting to dynamically initialize it.
744 - Michael Johnson <michaelj@maine.rr.com>
745
746
747 SNAPSHOT 2002-03-02
748 -------------------
749
750 Cleanup code default style. (IMPORTANT)
751 ----------------------------------------------------------------------
752 Previously, if not defined, the cleanup style was determined automatically
753 from the compiler/language, and one of the following was defined accordingly:
754
755 __CLEANUP_SEH MSVC only
756 __CLEANUP_CXX C++, including MSVC++, GNU G++
757 __CLEANUP_C C, including GNU GCC, not MSVC
758
759 These defines determine the style of cleanup (see pthread.h) and,
760 most importantly, the way that cancelation and thread exit (via
761 pthread_exit) is performed (see the routine ptw32_throw() in private.c).
762
763 In short, the exceptions versions of the library throw an exception
764 when a thread is canceled or exits (via pthread_exit()), which is
765 caught by a handler in the thread startup routine, so that the
766 the correct stack unwinding occurs regardless of where the thread
767 is when it's canceled or exits via pthread_exit().
768
769 In this and future snapshots, unless the build explicitly defines (e.g.
770 via a compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then
771 the build NOW always defaults to __CLEANUP_C style cleanup. This style
772 uses setjmp/longjmp in the cancelation and pthread_exit implementations,
773 and therefore won't do stack unwinding even when linked to applications
774 that have it (e.g. C++ apps). This is for consistency with most
775 current commercial Unix POSIX threads implementations. Compaq's TRU64
776 may be an exception (no pun intended) and possible future trend.
777
778 Although it was not clearly documented before, it is still necessary to
779 build your application using the same __CLEANUP_* define as was
780 used for the version of the library that you link with, so that the
781 correct parts of pthread.h are included. That is, the possible
782 defines require the following library versions:
783
784 __CLEANUP_SEH pthreadVSE.dll
785 __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll
786 __CLEANUP_C pthreadVC.dll or pthreadGC.dll
787
788 E.g. regardless of whether your app is C or C++, if you link with
789 pthreadVC.lib or libpthreadGC.a, then you must define __CLEANUP_C.
790
791
792 THE POINT OF ALL THIS IS: if you have not been defining one of these
793 explicitly, then the defaults as described at the top of this
794 section were being used.
795
796 THIS NOW CHANGES, as has been explained above, but to try to make this
797 clearer here's an example:
798
799 If you were building your application with MSVC++ i.e. using C++
800 exceptions and not explicitly defining one of __CLEANUP_*, then
801 __CLEANUP_C++ was automatically defined for you in pthread.h.
802 You should have been linking with pthreadVCE.dll, which does
803 stack unwinding.
804
805 If you now build your application as you had before, pthread.h will now
806 automatically set __CLEANUP_C as the default style, and you will need to
807 link with pthreadVC.dll. Stack unwinding will now NOT occur when a thread
808 is canceled, or the thread calls pthread_exit().
809
810 Your application will now most likely behave differently to previous
811 versions, and in non-obvious ways. Most likely is that locally
812 instantiated objects may not be destroyed or cleaned up after a thread
813 is canceled.
814
815 If you want the same behaviour as before, then you must now define
816 __CLEANUP_C++ explicitly using a compiler option and link with
817 pthreadVCE.dll as you did before.
818
819
820 WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY?
821 Because no commercial Unix POSIX threads implementation allows you to
822 choose to have stack unwinding. Therefore, providing it in pthread-win32
823 as a default is dangerous. We still provide the choice but unless
824 you consciously choose to do otherwise, your pthreads applications will
825 now run or crash in similar ways irrespective of the threads platform
826 you use. Or at least this is the hope.
827
828
829 WHY NOT REMOVE THE EXCEPTIONS VERSIONS OF THE LIBRARY ALTOGETHER?
830 There are a few reasons:
831 - because there are well respected POSIX threads people who believe
832 that POSIX threads implementations should be exceptions aware and
833 do the expected thing in that context. (There are equally respected
834 people who believe it should not be easily accessible, if it's there
835 at all, for unconditional conformity to other implementations.)
836 - because pthreads-win32 is one of the few implementations that has
837 the choice, perhaps the only freely available one, and so offers
838 a laboratory to people who may want to explore the effects;
839 - although the code will always be around somewhere for anyone who
840 wants it, once it's removed from the current version it will not be
841 nearly as visible to people who may have a use for it.
842
843
844 Source module splitting
845 -----------------------
846 In order to enable smaller image sizes to be generated
847 for applications that link statically with the library,
848 most routines have been separated out into individual
849 source code files.
850
851 This is being done in such a way as to be backward compatible.
852 The old source files are reused to congregate the individual
853 routine files into larger translation units (via a bunch of
854 # includes) so that the compiler can still optimise wherever
855 possible, e.g. through inlining, which can only be done
856 within the same translation unit.
857
858 It is also possible to build the entire library by compiling
859 the single file named "pthread.c", which just #includes all
860 the secondary congregation source files. The compiler
861 may be able to use this to do more inlining of routines.
862
863 Although the GNU compiler is able to produce libraries with
864 the necessary separation (the -ffunction-segments switch),
865 AFAIK, the MSVC and other compilers don't have this feature.
866
867 Finally, since I use makefiles and command-line compilation,
868 I don't know what havoc this reorganisation may wreak amongst
869 IDE project file users. You should be able to continue
870 using your existing project files without modification.
871
872
873 New non-portable functions
874 --------------------------
875 pthread_num_processors_np():
876 Returns the number of processors in the system that are
877 available to the process, as determined from the processor
878 affinity mask.
879
880 pthread_timechange_handler_np():
881 To improve tolerance against operator or time service initiated
882 system clock changes.
883
884 This routine can be called by an application when it
885 receives a WM_TIMECHANGE message from the system. At present
886 it broadcasts all condition variables so that waiting threads
887 can wake up and re-evaluate their conditions and restart
888 their timed waits if required.
889 - Suggested by Alexander Terekhov
890
891
892 Platform dependence
893 -------------------
894 As Win95 doesn't provide one, the library now contains
895 it's own InterlockedCompareExchange() routine, which is used
896 whenever Windows doesn't provide it. InterlockedCompareExchange()
897 is used to implement spinlocks and barriers, and also in mutexes.
898 This routine relies on the CMPXCHG machine instruction which
899 is not available on i386 CPUs. This library (from snapshot
900 20010712 onwards) is therefore no longer supported on i386
901 processor platforms.
902
903
904 New standard routines
905 ---------------------
906 For source code portability only - rwlocks cannot be process shared yet.
907
908 pthread_rwlockattr_init()
909 pthread_rwlockattr_destroy()
910 pthread_rwlockattr_setpshared()
911 pthread_rwlockattr_getpshared()
912
913 As defined in the new POSIX standard, and the Single Unix Spec version 3:
914
915 sem_timedwait()
916 pthread_mutex_timedlock() - Alexander Terekhov and Thomas Pfaff
917 pthread_rwlock_timedrdlock() - adapted from pthread_rwlock_rdlock()
918 pthread_rwlock_timedwrlock() - adapted from pthread_rwlock_wrlock()
919
920
921 pthread.h no longer includes windows.h
922 --------------------------------------
923 [Not yet for G++]
924
925 This was done to prevent conflicts.
926
927 HANDLE, DWORD, and NULL are temporarily defined within pthread.h if
928 they are not already.
929
930
931 pthread.h, sched.h and semaphore.h now use dllexport/dllimport
932 --------------------------------------------------------------
933 Not only to avoid the need for the pthread.def file, but to
934 improve performance. Apparently, declaring functions with dllimport
935 generates a direct call to the function and avoids the overhead
936 of a stub function call.
937
938 Bug fixes
939 ---------
940 * Fixed potential NULL pointer dereferences in pthread_mutexattr_init,
941 pthread_mutexattr_getpshared, pthread_barrierattr_init,
942 pthread_barrierattr_getpshared, and pthread_condattr_getpshared.
943 - Scott McCaskill <scott@magruder.org>
944
945 * Removed potential race condition in pthread_mutex_trylock and
946 pthread_mutex_lock;
947 - Alexander Terekhov <TEREKHOV@de.ibm.com>
948
949 * The behaviour of pthread_mutex_trylock in relation to
950 recursive mutexes was inconsistent with commercial implementations.
951 Trylock would return EBUSY if the lock was owned already by the
952 calling thread regardless of mutex type. Trylock now increments the
953 recursion count and returns 0 for RECURSIVE mutexes, and will
954 return EDEADLK rather than EBUSY for ERRORCHECK mutexes. This is
955 consistent with Solaris.
956 - Thomas Pfaff <tpfaff@gmx.net>
957
958 * Found a fix for the library and workaround for applications for
959 the known bug #2, i.e. where __CLEANUP_CXX or __CLEANUP_SEH is defined.
960 See the "Known Bugs in this snapshot" section below.
961
962 This could be made transparent to applications by replacing the macros that
963 define the current C++ and SEH versions of pthread_cleanup_push/pop
964 with the C version, but AFAIK cleanup handlers would not then run in the
965 correct sequence with destructors and exception cleanup handlers when
966 an exception occurs.
967
968 * Cancelation once started in a thread cannot now be inadvertantly
969 double canceled. That is, once a thread begins it's cancelation run,
970 cancelation is disabled and a subsequent cancel request will
971 return an error (ESRCH).
972
973 * errno: An incorrect compiler directive caused a local version
974 of errno to be used instead of the Win32 errno. Both instances are
975 thread-safe but applications checking errno after a pthreads-win32
976 call would be wrong. Fixing this also fixed a bad compiler
977 option in the testsuite (/MT should have been /MD) which is
978 needed to link with the correct library MSVCRT.LIB.
979
980
981 SNAPSHOT 2001-07-12
982 -------------------
983
984 To be added
985
986
987 SNAPSHOT 2001-07-03
988 -------------------
989
990 To be added
991
992
993 SNAPSHOT 2000-08-13
994 -------------------
995
996 New:
997 - Renamed DLL and LIB files:
998 pthreadVSE.dll (MS VC++/Structured EH)
999 pthreadVSE.lib
1000 pthreadVCE.dll (MS VC++/C++ EH)
1001 pthreadVCE.lib
1002 pthreadGCE.dll (GNU G++/C++ EH)
1003 libpthreadw32.a
1004
1005 Both your application and the pthread dll should use the
1006 same exception handling scheme.
1007
1008 Bugs fixed:
1009 - MSVC++ C++ exception handling.
1010
1011 Some new tests have been added.
1012
1013
1014 SNAPSHOT 2000-08-10
1015 -------------------
1016
1017 New:
1018 - asynchronous cancelation on X86 (Jason Nye)
1019 - Makefile compatible with MS nmake to replace
1020 buildlib.bat
1021 - GNUmakefile for Mingw32
1022 - tests/Makefile for MS nmake replaces runall.bat
1023 - tests/GNUmakefile for Mingw32
1024
1025 Bugs fixed:
1026 - kernel32 load/free problem
1027 - attempt to hide internel exceptions from application
1028 exception handlers (__try/__except and try/catch blocks)
1029 - Win32 thread handle leakage bug
1030 (David Baggett/Paul Redondo/Eyal Lebedinsky)
1031
1032 Some new tests have been added.
1033
1034
1035 SNAPSHOT 1999-11-02
1036 -------------------
1037
1038 Bugs fixed:
1039 - ctime_r macro had an incorrect argument (Erik Hensema),
1040 - threads were not being created
1041 PTHREAD_CANCEL_DEFERRED. This should have
1042 had little effect as deferred is the only
1043 supported type. (Ross Johnson).
1044
1045 Some compatibility improvements added, eg.
1046 - pthread_setcancelstate accepts NULL pointer
1047 for the previous value argument. Ditto for
1048 pthread_setcanceltype. This is compatible
1049 with Solaris but should not affect
1050 standard applications (Erik Hensema)
1051
1052 Some new tests have been added.
1053
1054
1055 SNAPSHOT 1999-10-17
1056 -------------------
1057
1058 Bug fix - Cancelation of threads waiting on condition variables
1059 now works properly (Lorin Hochstein and Peter Slacik)
1060
1061
1062 SNAPSHOT 1999-08-12
1063 -------------------
1064
1065 Fixed exception stack cleanup if calling pthread_exit()
1066 - (Lorin Hochstein and John Bossom).
1067
1068 Fixed bugs in condition variables - (Peter Slacik):
1069 - additional contention checks
1070 - properly adjust number of waiting threads after timed
1071 condvar timeout.
1072
1073
1074 SNAPSHOT 1999-05-30
1075 -------------------
1076
1077 Some minor bugs have been fixed. See the ChangeLog file for details.
1078
1079 Some more POSIX 1b functions are now included but ony return an
1080 error (ENOSYS) if called. They are:
1081
1082 sem_open
1083 sem_close
1084 sem_unlink
1085 sem_getvalue
1086
1087
1088 SNAPSHOT 1999-04-07
1089 -------------------
1090
1091 Some POSIX 1b functions which were internally supported are now
1092 available as exported functions:
1093
1094 sem_init
1095 sem_destroy
1096 sem_wait
1097 sem_trywait
1098 sem_post
1099 sched_yield
1100 sched_get_priority_min
1101 sched_get_priority_max
1102
1103 Some minor bugs have been fixed. See the ChangeLog file for details.
1104
1105
1106 SNAPSHOT 1999-03-16
1107 -------------------
1108
1109 Initial release.

  ViewVC Help
Powered by ViewVC 1.1.22