===== Elastic Transactions ===== //Elastic Transactions// are a complementary alternative to traditional transactions, particularly appealing when implementing search structures. Both forms of transactions can safely be combined within the same application. Elastic transactions are a variant of the transactional model. Upon conflict detection, an elastic transaction might drop what it did so far within a separate transaction that immediately commits, and initiate a new transaction which might itself be elastic. ==== ε-STM ==== ε-STM is the first software transactional memory supporting elastic transactions. ε-STM implementation is faster than a state-of-the-art software transactional memory in various workloads and with a speedup of 36% on average. Here is the simple API, ε-STM provides to the user: * BEGIN(elastic); * BEGIN(normal); * END; * READ(x); * WRITE(x,v). The simplicity of using ε-STM comes from the very few information the programmer has to provide. The programmer has to indicate whether his(her) transaction is normal or elastic and no extra-information (i.e., release action, or on-abort-action) is necessary. ε-STM is created/maintained by [[http://lpd.epfl.ch/gramoli|Vincent Gramoli]]. ==== C Release ==== Here is our word-based version of ε-STM, implemented in C. * [[http://lpd.epfl.ch/gramoli/doc/sw/estm-0.2.7.tgz|estm-0.2.7]]. ==== Java Release ==== Here is our field-based version of ε-STM, implemented in Java. It requires the Deuce instrumentation framework. * [[http://lpd.epfl.ch/gramoli/doc/sw/estm-java-0.2.tgz|estm-java-0.2]]. ==== Related Publications ==== Felber, P., Gramoli, V., Guerraoui, R. (2009) [[http://infoscience.epfl.ch/record/140819|Elastic Transactions.]] //Proceedings of the 23rd International Symposum on Distributed Computing (DISC).//