Dalarna: A Simplistic Capability-Based Dynamic Language Design For Data Race Freedom
Dynamic languages like Erlang, Clojure, JavaScript, and E adopted data-race freedom by design. To enforce data-race freedom, these languages either deep copy objects during actor (thread) communication or proxy back to their owning context. We present Dalarna, a simple programming model that ensures data-race freedom while supporting efficient inter-thread communication. Dalarna is a dynamic, concurrent, capability-based language that relies on three core capabilities: immutable values can be shared freely; isolated mutable objects can be transferred between threads but not aliased; local objects can be aliased but not transferred. We show how data-race free programs interact with unsafe programs and how one can recover data-race freedom. We present a formal model of Dalarna and the proofs (in appendix).