This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

New snapshot 2004-11-03 available


Announcing a new snapshot 2004-11-03.

See
http://sources.redhat.com/pthreads-win32/

or go directly to:
ftp://sources.redhat.com/pub/pthreads-win32/

Red Hat have a low ftp concurrent user limit. Mirrors are at (available as they update):
http://sources.redhat.com/mirrors.html


NOTES:
1) There has been an ABI change that makes this version's DLL incompatible with older applications. Don't distribute a DLL from this snapshot to application users without also providing new builds of your applications. The change is in the definition of pthread_t in pthread.h.


2) This snapshot doesn't include a pre-built pthreadVCE.dll/pthreadVCE.lib (the variant that uses MSVC++ exception handling for cancelation/pthread_exit) because MSVC++ 6.0 (that's all I have access to) produces a broken dll. The problem appears to be the same as that reported in the BUGS file (#2), only the workaround doesn't work this time (fails tests\semaphore4.c). All other variants - pthreadGC.dll, pthreadGCE.dll, pthreadVC.dll, pthreadVSE.dll - work fine. A pthreadVCE.dll built with a later version of MSVC++ may work. If you find that this is the case, could you please report it.

If you've been using pthreadVCE.dll, try/consider using pthreadVC.dll instead. Unless you are explicitly defining __CLEANUP_CXX or __CLEANUP_SEH for both pthread dll and application builds, then you're using the preferred pthreadVC.dll anyway. See the README file if you're not confused enough already.

3) Although I've applied the relevant contributed patches, I have not been able to build working Watcom or Borland versions, due to things like errno weirdness and differences. I'm happy to apply patches to get these versions working, but please only send patches once you've verified they pass the full test suite, or suitably patched versions of the tests.

Below is a summary of what's new (from the NEWS file).

Regards.
Ross

SNAPSHOT 2004-11-03
-------------------


DLLs produced from this snapshot cannot be used with older applications without
recompiling the application, due to a change to pthread_t to provide unique POSIX
thread IDs.


Although this snapshot passes the extended test suite, many of the changes are
fairly major, and some applications may show different behaviour than previously,
so adopt with care. Hopefully, any changed behaviour will be due to the library
being better at it's job, not worse.


Bug fixes
---------


* pthread_create() no longer accepts NULL as the thread reference arg.
A segfault (memory access fault) will result, and no thread will be
created.


* pthread_barrier_wait() no longer acts as a cancelation point.


* Fix potential race condition in pthread_once()
- Tristan Savatier <tristan at mpegtv.com>


* Changes to pthread_cond_destroy() exposed some coding weaknesses in several
test suite mini-apps because pthread_cond_destroy() now returns EBUSY if the CV
is still in use.


New features
------------


* Added for compatibility:
PTHREAD_RECURSIVE_MUTEX_INITIALIZER,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER,
PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP


* Initial support for Digital Mars compiler
- Anuj Goyal <anuj.goyal at gmail.com>


* Faster Mutexes. These have been been rewritten following a model provided by
Alexander Terekhov that reduces kernel space checks, and eliminates some additional
critical sections used to manage a race between timedlock expiration and unlock.
Please be aware that the new mutexes do not enforce strict absolute FIFO scheduling
of mutexes, however any out-of-order lock acquisition should be very rare.


* Faster semaphores. Following a similar model to mutexes above, these have been
rewritten to use preliminary users space checks.


* sem_getvalue() now returns the number of waiters.


* The POSIX thread ID now has much stronger uniqueness characteristics. The library
garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
destruction/creation cycles.




New tests
---------


* semaphore4.c: Tests cancelation of the new sem_wait().


* semaphore4t.c: Likewise for sem_timedwait().


* rwlock8.c: Tests and times the slow execution paths of r/w locks, and the CVs,
mutexes, and semaphores that they're built on.




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]