ccstm
ccstm copied to clipboard
CCSTM is a library-based STM for Scala
`TxnLocal` should get some of the methods from `Ref`: - the access shortcuts `apply()` and `update(v)` - read+write forms `swap`, `transform`, `transformIfDefined`, `+=`, `-=`, and `*=` I think `compareAndSet` (and...
The only method signatures that `Ref` and `Ref.View` have in common are those inherited from `AnyRef`. This implies that if we are careful in our definition of `equals` we can...
To properly support retry/orElse we must implement partial rollback, at least when rolling back with retry. There are several components - child vs. top-level commit and rollback handlers - dynamic...
Currently, the bodies are Txn => Unit. This allows a single body to be reused for multiple transactions, but seems to be making code that uses lifecycle callbacks more bulky...
`TxnFieldUpdater` leads to some boilerplate, which should be automated with a compiler plugin that processes a per-field annotation. The resulting fields would get transactional getters and setters, and also a...
To facilitate comparison with other STMs. We should include both directly transformed collection and index structures and transactionally-predicated ones.
examples
Currently the best examples are in the test src, but they are not constructed to facilitate learning, they are not gathered together, and there is no supporting documentation. This should...
The @specialized annotation (in combination with the -Yspecialize option for scalac) has the promise of reducing boxing overheads, especially for reads (txn and non-txn) and non-txn writes. (Txn writes must...
Good implementations of TSet and TMap should be chosen and moved from the experimental.impl area into the main src.
The modular blocking operator (and the non-transactional single-Ref equivalent) would be more useful if they also provided a timeout. Since the underlying implementation uses Object.wait(), this should be possible.