FreeST

A concurrent programming language, based on a core functional language with primitives to fork new threads, create channels and exchange messages along these channels.
The powerful type system of context-free session types governs the interactions on communication channels.
The compiler builds on a novel algorithm for deciding type equivalence of context-free session types.