Viktor Strate Kløvedal

Tempo

Posted on September 5, 2025

Tempo is a new choreographic programming langauge that I have been working on over the last couple of months now.

What is Choreographic Programming?

Choreographic programming is a relatively new programming paradigm for writing distributed systems from a global viewpoint.

A choreographic program specifies the communications performed by the participating processes in the system and the local computations they perform.

A compiler can automatically transform a choreographic program into an executable implementation for each role. This compilation procedure is called projection. Running the projections concurrently will yield the global behavior described by the choreography.

Choreographic Programming in Practice

Currently, a lot of choreographic programming languages are purely theoretical.1 However, more and more practical languages have arrived over the last couple of years. Some are full programming languages such as Choral which targets Java, while others (Klor, HasChor, and ChoRus) are implemented as library-level DSLs.

Why make another one?

I set out to build a completely new choreographic programming language from scratch because I wanted a choreographic language that can project to multiple host languages. The idea is that you can write one choreographic program and then project it to libraries in multiple different normal programming languages.

Currently, Tempo can project to Go, TypeScript, and Java libraries.


  1. The Introduction to Choreographies book, gives a simple introduction to the theory. ↩︎