ccstm icon indicating copy to clipboard operation
ccstm copied to clipboard

CCSTM is a library-based STM for Scala

Results 11 ccstm issues
Sort by recently updated
recently updated
newest added

`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...

API

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...

API
performance

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...

functionality

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...

API

`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...

API

To facilitate comparison with other STMs. We should include both directly transformed collection and index structures and transactionally-predicated ones.

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...

documentation

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...

performance

Good implementations of TSet and TMap should be chosen and moved from the experimental.impl area into the main src.

functionality

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.

functionality