More notes
More notes
Modified the core STM system to use separate read/write sets. This
has not yet been tested, so it probably doesn't work yet.
Mid-way through adding support for track() to the core STM system
More progress
Even more progress.

Basic support for watchers is almost done, but nested transactions don't yet
validate watchers when they commit (but watchers proposed in nested
transactions are correctly validated when the base transaction commits).
A few bugfixes. I don't believe it, it actually works!

(I'm sure I'll be able to break it if I try hard enough, so now to write
proper tests for the STM system...)
Fix a call to _check_clean
A few things:

Change TWeakRef to create the underlying weak reference inside __init__. This fixes a bug where creating a TWeakRef to an unweakrefable value (like an int) would cause breakage inside _make_mature.

Get rid of support for TWeakRef(None). The code for making this work was becoming burdensome, and it'll be a lot easier to handle this sort of thing in a utility wrapper class.

Add is_alive, which just returns self.get() is not None. This will allow for API compatibility with a utility wrapper class that allows None values.
Get rid of the old TVar/callback wrapper hack; it's no longer needed with the changes made in the last commit.
Comments on TMutableWeakRef
Add TPossiblyWeakRef, a wrapper around TWeakRef that holds strong references when its referent isn't weakrefable
Added stm.utils.changes_only, a callback decorator that filters out duplicate invocations, and added watcher (which I think I'm going to get rid of)
Allow stm.watch to be used as a decorator
Add atomically_watch, a wrapper around stm.watch that automatically invokes stm.atomically, and documented changes_only
Add EventLoop.scheduled_function and stm.eventloop.scheduled_function, decorators which cause their underlying functions to be run on the event loop
Bugfix in TWeakRef._check_clean
Add changes_only_according_to, a variant of changes_only that allows the comparison predicate to be specified, and make changes_only always hold strong refs for now

The logic behind only holding strong refs is that holding weak refs could really screw with a potential use of changes_only_according_to(operator.eq): allowing the watched function to be one that produces anonymous tuples of values, which for obvious reasons would have no references themselves after being passed through the callback.
Get rid of redundant documentation
Bugfix