Functional programmer and programming languages enthusiast, who discovered this passion only after graduating from Computer Science, where the main focus was on algorithms.
I work as a Scala developer working on backend systems. I constantly find myself dissatisfied with the tools we have today and cannot resist the urge to try to find a better way. Libretto is the result of such an endeavor.
Mainstream programming languages today are still sequential-first, with execution model based on some notion of a thread (OS thread, virtual thread, fiber, actor, ...).
Concurrency is then bolted onto the core language via side effects like starting a thread/fiber/actor, writing to a shared mutable variable, sending a message, completing a promise.
References to threads, actors, mutable variables, etc. are liabilities managed by the programmer. As a result, writing concurrent programs is difficult and error-prone.
In this talk, I will present Libretto, a Scala DSL that is concurrent by default, with no notion of a thread. The goal is for causal dependence to be the only form of sequencing. Everything else is automatically concurrent—no need to manage concurrency manually. Session types facilitate safe interaction between parts of the program, while linear types ensure resource safety.
We will see that concurrent programming can be made as seamless as sequential programming is today.
The main takeaway should be that we are still stuck in the sequential paradigm of threads, but that sequentiality is not fundamental. Concurrent interpretation is more natural since it avoids accidental sequencing of unrelated operations. Finally, we will see that concurrent programming can be made as seamless as sequential programming is today.