The bzr branch also happens to be current. Since there's several
months of changes since my last release, a brief summary is in order.
* Cancellation is improved. Most often it will use a signal to
interrupt outstanding syscalls, which has minimal overhead in the
common (uncancelled) case.
* __shared__ = True boilerplate is no longer necessary in classes.
from __future__ import shared_module does it all.
* frozenset instances are shareable if their contents are (just like tuples)
* floats are shareable
* abc, warnings, re, io modules are shareable, although instances
created from them may not be. Unfortunately, abc is currently
crippled due to a desire to cache isinstance lookups
* some of subprocess.Popen has been rewritten in C, avoiding the nasty
problems of trying to use fork from python code
* the tp_alloc/tp_free slots have been readded, to make porting C
extensions easier. However, they must always be set to the standard
alloc/free functions (or 0).
* test.thread_pystone can now be run directly with "./python -m
test.thread_pystone <threadcount>"
* __slots__ now works on variably sized objects, such as tuple or int
* threadtools.Cubby has been added
* threadtools.Immutable has been added
Cubby is helper type for building a datastructure in a Monitor. It
allows you to store an unshareable object, pass the cubby outside your
Monitor, and once you get the cubby back you can access the contents
again.
Immutable allows you to easily build objects that are frozen and can
be simultaneously accessed by multiple threads. All you need to do is
subclass it - it will then ensure all your attributes are shareable.
After __init__ finishes it will mark your instance as frozen, and it
becomes shareable.
--
Adam Olsen, aka Rhamphoryncus