Janwillem Swalens

Office: 10F723
E-mail: jswalens@vub.be
Vrije Universiteit Brussel
Faculty of Sciences, DINF – SOFT
Pleinlaan 2
B-1050 Brussels, Belgium

Job Description

I'm a postdoctoral researcher at the Software Languages Lab of the Vrije Universiteit Brussel. My research focuses on multicore programming and concurrency, specifically designing programming languages to make programming complex programs with concurrency easier.

Research Description

My research focuses on concurrency in complex interactive applications. Applications such as a web browser, an IDE, or a CAD editor, have a large number of diverse requirements, and need concurrency to handle these simultaneously. Different concurrency models have been developed to ease the programming of such programs, for example Software Transactional Memory (STM), the actor model, Communicating Sequential Processes (CSP), or futures and promises. However, complex applications have diverse requirements, and different concurrency models facilitate different requirements. Consequently, we see that these programs use more than one concurrency model. This is also reflected in programming languages, which offer a number of concurrency models to the programmer. For instance, Clojure offers atomic variables, agents, STM, futures, promises, and CSP; similarly Scala has either built-in support or libraries for using actors, STM, futures and promises, and dataflow concurrency.

Unfortunately, combining different concurrency models is not always easy. While two models might both guarantee the absence of race conditions, combining them could introduce new race conditions. Similarly for deadlocks and livelocks, a program that combines two models that guarantee progress is not always guaranteed to progress.

The aim of my research is to examine the issues that can appear in typical applications that combine concurrency models, and to investigate how a language's concurrency features can be designed so that different concurrency models can be composed easily, correctly and efficiently.

You can find related publications here.

Combinations of concurrency models

The illustration above shows how, currently, complex applications compose concurrency models in an ad-hoc way. We want to create a unified way to compose these models.