Release 1.4: changes since release 1.3 --------------------------------------- - Added PyPI / Trove metadata to the package. - Update to require Spread 3.17.1 (library names changed from 'libsp' and 'libtsp' to 'libspread' and 'libtspread'). - Documentation cleanup. Release 1.3: changes since release 1.2 -------------------------------------- - Critical bugfix: We didn't realize that the service_type argument to Spread's SP_receive() is an input parameter as well as an output parameter, and consequently didn't initialize it. Depending on what trash happened to be sitting on the stack, this could cause Spread to deliberately drop data (a backward compatibility feature in Spread triggered by passing the DROP_RECV flag in service_type on input). Release 1.2: changes since release 1.1 -------------------------------------- - Changed internal uses of Python's object memory API to stop using macro versions of the names (that worked fine, but was dubious practice for non-core extension modules). - Changed mbox.disconnect() to be as safe as possible when SPREAD_DISCONNECT_RACE_BUG is not defined. - Added a test to ensure than the scenario described below doesn't deadlock (two threads in a process sharing an mbox, and one thread doing mbox.receive() waiting for the other thread to do mbox.multicast()). This test deadlocks with high probability if you define SPREAD_DISCONNECT_RACE_BUG. - SPREAD_DISCONNECT_RACE_BUG is turned off, although Spread 3.16.2 still suffers the insecurity it was guarding against. Alas, the workaround can cause deadlocks, depending on how the app uses Spread. See the message thread at: http://lists.spread.org/pipermail/spread-users/2002-April/000735.html for details. If, for each mbox, your multithreaded app only does mbox.receive() from a single thread, and always use select() or mbox.poll() before mbox.receive() to ensure that there's a message waiting to be read, you may wish to define SPREAD_DISCONNECT_RACE_BUG when compiling spreadmodule.c. Defining SPREAD_DISCONNECT_RACE_BUG causes all Spread calls via a given mbox to be serialized, so can cause deadlock if an mbox.receive() waits for a message to be sent by another thread in the same process via the same mbox. Release 1.1: changes since release 1.0 -------------------------------------- - The README recommend using 3.16.2rc1 or later. - Using Spread 3.16.2, it now works on Windows. - Changes to the test suite to make it less accident-prone. - Fixed race conditions having to do with disconnects in multi-threaded programs. When one of the errors CONNECTION_CLOSED or ILLEGAL_SESSION is received, mark the mbox as closed. In addition, use a lock to serialize access to the disconnected flag. - Fixed a memory leak that leaked about 50 bytes per mbox.receive() call.