Log In Sign Up

Dala: A Simple Capability-Based Dynamic Language Design For Data Race-Freedom

by   Kiko Fernandez-Reyes, et al.

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 thread. We present Dala, a simple programming model that ensures data-race freedom while supporting efficient inter-thread communication. Dala 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 within their owning thread but not dereferenced by other threads. Objects with capabilities can co-exist with unsafe objects, that are unchecked and may suffer data races, without compromising the safety of safe objects. We present a formal model of Dala, prove data race-freedom and state and prove a dynamic gradual guarantee. These theorems guarantee data race-freedom when using safe capabilities and show that the addition of capabilities is semantics preserving modulo permission and cast errors.


page 1

page 2

page 3

page 4


A simple proof of three properties on Simpson's 4-slot Algorithm

In this paper we present an invariance proof of three properties on Simp...

Reference Capabilities for Safe Parallel Array Programming

The array is a fundamental data structure that provides an efficient way...

Taming x86-TSO Persistency (Extended Version)

We study the formal semantics of non-volatile memory in the x86-TSO arch...

Gradual Parametricity, Revisited (with Appendix)

Bringing the benefits of gradual typing to a language with parametric po...

Decidability of Liveness on the TSO Memory Model

An important property of concurrent objects is whether they support prog...

Automated Verification of CountDownLatch

The CountDownLatch (CDL) is a versatile concurrency mechanism that was f...

Gradual Parametricity, Revisited

Bringing the benefits of gradual typing to a language with parametric po...