AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


Unifying STM and Side Effects in Clojure

Authors

; ;

Term

4. term

Publication year

2015

Submitted on

Pages

126

Abstract

At skrive samtidige programmer er svært, især når sideeffekter skal håndteres sikkert. Denne opgave undersøger Clojures kørselsmiljø og Software Transactional Memory (STM) og indfører nye konstruktioner i Clojure for at gøre arbejdet lettere. Projektet implementerer et event-baseret system til håndtering af sideeffekter i STM-transaktioner (handlinger der påvirker tilstanden uden for transaktionen) samt konstruktioner, der giver mere eksplicit, databaseret kontrol over transaktioner. Konstruktionerne blev afprøvet i en række brugsscenarier. En del af de nye kontrolkonstruktioner overlappede funktionelt med eksisterende Clojure-konstruktioner; denne del blev brugervenlighedsevalueret med to metrikker (bl.a. linjer kode og udviklingstid) og en kvalitativ diskussion af implementeringer af det klassiske samtidighedsproblem ”Santa Claus”. Evalueringen viste færre linjer kode og kortere udviklingstid, og samtidig blev Clojures samtidighedsmodel oplevet som mere eksplicit og udtryksfuld med de nye konstruktioner. Konklusionen er, at de tilføjede konstruktioner kan lette udviklingen af samtidige programmer i Clojure, men at større brugervenlighedsstudier og en egentlig ydelsesevaluering bør gennemføres for at bekræfte resultaterne.

Writing concurrent programs is challenging, especially when side effects must be handled safely. This thesis examines Clojure’s runtime and Software Transactional Memory (STM) and adds new constructs to Clojure to make this work easier. It implements an event-based system for handling side effects inside STM transactions (actions that change state outside the transaction) and constructs that provide more explicit, data-driven control over transactions. The constructs were tried out in several use cases. Some of the new control constructs overlapped functionally with existing Clojure features; that part was evaluated for usability using two metrics (including lines of code and development time) and a qualitative discussion based on implementations of the classic concurrency “Santa Claus” problem. The evaluation found fewer lines of code and shorter development time, and Clojure’s concurrency model was perceived as more explicit and expressive with the added constructs. The project concludes that these additions can ease the development of concurrent programs in Clojure, but larger usability studies and a performance evaluation are needed to validate the results.

[This abstract was generated with the help of AI]