Summary: CCSTM deadlock prevention relies on priorities, but since CommitBarrier delays transaction commit for the entire group and they have different priorities, a cycle can form. The cycle requires two commit barriers, at least one of which has two transactions, and Ref conflicts between the transactions in different commit barriers. The deadlock was isolated very cleanly by Matthias Rahne, and his distilled version is included here as a unit test.
Summary: Scala 2.9's TreeMap generated a lot of garbage during iteration, so I hacked an efficient custom iteration using reflection and direct access to encapsulated types. Scala 2.10 fixes the perf problem while changing the implementation, so the hack goes from helping to breaking. This diff falls back to the stock iterator for 2.10 or higher.
Summary: atomic.unrecorded executes an atomic block (top-level or nested) and discards all of its Ref reads and writes, but still returns the value computed by the atomic block. The primary use case for this is debugging information, either in a debugger itself or via logging. The actual definition is in TxnExecutor.
Reflection is used to call the scala.concurrent.package's blocking method, which cooperates with fork-join scheduling. This is present in 2.10, but not in 2.9.2. See issue #35
Added transformAndExtract, which uses f: A => (A,B) to transform a Ref from v to f(v)._1, while returning f(v)._2. Added transformAndGet and getAndTransform to Ref and TxnLocal, previously these were only in View-s.