Software Languages Lab
Published on Software Languages Lab (http://soft.vub.ac.be/soft)

Home > ClojureTxTk

ClojureTxTk

Groups audience: 
BDP [1]
Logo Image: 
Promoted to Artifact Page: 
Yes
Keywords: 
parallelism
concurrency
Software Transactional Memory
Description
Description: 

ClojureTxTk is a fork of Clojure, in which its Software Transactional Memory is extended with support for Transactional Tasks. A "transactional task" is a thread that was created in a software transaction. Hence, ClojureTxTk allows you to create threads inside transactions, that allow you to modify the transactional state, while these changes are part of the encompassing transaction.

Examples: 

Two programs written using ClojureTxTk are available on GitHub [2] and in here [3]:

  • LabyrinthTxTk finds non-overlapping paths in a grid. It uses transactional tasks to implement a parallel search algorithm, in its transactions.
  • BayesTxTk learns the structure of a Bayesian network given observed data. It uses transactional tasks to speed up the calculations that occur in its transactions.
Download: 

ClojureTxTk is available on GitHub [4]. You can also find more information on this page [3].

Publications: 

Janwillem Swalens, Joeri De Koster, & Wolfgang De Meuter. 2016. Transactional Tasks: Parallelism in Software Transactions [5]. In Proceedings of the 30th European Conference on Object-Oriented Programming (ECOOP 2016).


Source URL: http://soft.vub.ac.be/soft/content/clojuretxtk

Links
[1] http://soft.vub.ac.be/soft/bdp
[2] https://github.com/jswalens/ecoop-2016-benchmarks
[3] http://soft.vub.ac.be/~jswalens/ecoop-2016-artifact/
[4] https://github.com/jswalens/transactional-futures
[5] http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.23