Portrait of Claudio Russo

Claudio Russo

Principal Research Software Development Engineer


I’m a Principal RSDE in the Programming Principles and Tools group at Microsoft Research Cambridge.

I’m currently working on probabilistic programming. My other research interests include type systems and operational semantics for programming languages, especially module systems, functional and, more recently, object-oriented languages. I also work on concurrency and parallelism.

I obtained my PhD in Computer Science under the supervision of Don Sannella at the LFCS, at the University of Edinburgh. Before joining Microsoft in 2000, I briefly worked for Harlequin Ltd. on their Dylan compiler.  I designed and implemented the extended module system of Moscow ML, a popular byte-code compiler for Standard ML. I was also a post-doc researcher under Andrew Pitts at the University of Cambridge Computer Laboratory. At Microsoft, together with Andrew Kennedy and Nick Benton, I developed SML.NET, a Standard ML compiler with object oriented extensions, that targets the Common Language Runtime and is integrated with Visual Studio .NET. Working with Andrew Kennedy and Don Syme, I  contributed to the design and implementation of Generics on the Common Language Runtime, focusing on verification. I was also responsible for the implementation of the concurrency constructs in , an extension of C# with native support for join patterns as well as type-safe manipulation of XML and SQL-like data. Combining Generics and Cω led to my implementation of the Joins library, an efficient combinator library for Cω-style join patterns implemented in C# 2.0 and easily usable from (at least) C# 2.0 and Visual Basic 8.0.


Infer.NET Fun

Established: April 2, 2012

"I think it's extraordinarily important that we in computer science keep fun in computing." Alan J. Perlis - ACM Turing Award Winner 1966. Infer.NET Fun turns the simple succinct syntax of F# into an executable modeling language for Bayesian machine learning. We propose a marriage of probabilistic functional programming with Bayesian reasoning. Infer.NET Fun turns F# into a probabilistic modeling language – you can code up the conditional probability distributions of Bayes’ rule using…






Scalable Join Patterns
Aaron J. Turon, Claudio Russo, in OOPSLA '11 Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, Portland, Oregon, USA, ACM New York, NY, USA, October 22, 2011, View abstract, Download PDF



Parallel Concurrent ML
John Reppy, Claudio Russo, Yingqi Xiao, in ICFP '09 Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, Edinburgh, Scotland, ACM New York, NY, USA, August 31, 2009, View abstract, Download PDF






Shrinking Reductions in SML.NET
Nick Benton, Andrew Kennedy, Sam Lindley, Claudio Russo, in IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages, Lübeck, Germany, Springer-Verlag Berlin, Heidelberg, September 8, 2004, View abstract, Download PDF








September 2015

    Click the icon to access this download

  • Github

Core Tabular Source Code

July 2015

    Click the icon to access this download

  • Github

Joins – A Concurrency Library

August 2006

    Click the icon to access this download

  • Website


Against all odds, I’m now working on probabilistic programming, most recently on project Tabular, a machine learning addin for Excel based on Infer.NET. The software is available for download.

The original (lock-based) joins library served as the runtime for Concurrent Basic – a natural extension of Visual Basic 9.0 with join pattern style concurrency. Thanks to Erik Meijer and Lucian Wischik for their support.
Together with John Reppy, I worked on a parallel implementation of CML’s higher-order concurrency constructs, primarily for Manticore but also with a C# implementation for .NET.

Separately, Dimitrios Vytiniotis and I have used Coq to study type inference for QML, a simple variant of ML with impredicative polymorphism (think System F extended with ML’s implicit let-polymorphism).
I’ve also worked with Andreas Rossberg and Derek Dreyer on formalizing variants of ML modules in Coq.
Aaron Turon and I came up with novel, non-blocking implementation of join patterns (a re-implementation of the lock-based C# Joins Library) that scales well on multi-core processors. This new implementation offers high-level, declarative synchronization (as before) with good parallel performance (the new bit).

I worked with Gavin Bierman, Geoffrey Mainland, Erik Meijer and Mads Torgersen to give a high-level operational semantics for C#’s latest feature, asynchronous methods. Asynchronous methods make it easy to write asynchronous, concurrent code without resorting to explicit continuation passing style. See our forthcoming ECOOP 2012 paper.

Awards and Activities


I’m deeply honoured (and quite surprised) to have received the 2011 Most Influential ICFP Paper Award for a paper Recursive Structures for Standard ML that I wrote back in 2001.


  • I was a PC member for OOPSLA’13 and PADL’15.
  • I was co-chair for PADL’12: the 14th International Symposium on Practical Aspects of Declarative Languages.
  • I organized the The 2007 ACM SIGPLAN Workshop on ML.