Philipp Haller

Programming languages researcher, developer and consultant at Typesafe.

Previously, I was a post-doctoral researcher in the Programming Methods Lab (LAMP) at EPFL, Switzerland, and in the Pervasive Parallelism Lab at Stanford University. Prior to that I was a PhD student of Martin Odersky. My main research interests are in the design and implementation of programming languages and managed runtime environments to support concurrent and parallel software. I received a PhD in Computer Science from EPFL in Lausanne, Switzerland, in 2010.

I am a member of the Scala team, and a top-5 contributor of the Scala project. Recently, I have been working on Scala 2.10’s futures (SIP-14) as well as Scala’s upcoming Async feature for asynchronous and concurrent programming.

Projects

  • Futures and Promises in Scala 2.10 (SIP-14)

  • Unique References for Scala. A type system extension to Scala which proposes a new approach to uniqueness. The idea is to use capabilities for enforcing both at-most-once consumption of unique references, and a flexible notion of uniqueness. It provides simple foundations for uniqueness and borrowing while avoiding common problems involving borrowing and destructive reads.

  • Scala Actors. The first major Actors library on the JVM. Scala Actors demonstrate how thread-based and event-based programming can be unified under a single abstraction in a way that scales to a very large number of lightweight concurrent processes. Scala Actors were also one of the first systems to demonstrate how to provide an expressive, high-level programming interface for concurrency as a domain-specific language embedded in a general-purpose programming language.

  • Delite. A compiler framework and runtime for parallel embedded domain-specific languages (DSLs) whose goal is enable the rapid construction of high performance, highly productive DSLs.

  • Menthor: Parallelizing Machine Learning–Functionally. A framework and abstraction for distributing/parallelizing iterative algorithms common to fields like machine learning and convex optimization.

  • Scala Joins. Join patterns are an attractive declarative way to synchronize both threads and asynchronous distributed computations. We explore joins in the context of extensible pattern matching that recently appeared in languages such as F# and Scala. Our implementation supports join patterns with multiple synchronous events, and guards. Furthermore, we integrated joins into an existing actor-based concurrency framework, enabling join patterns to be used in the context of more advanced synchronization modes, such as future-type message sending and token-passing continuations.

Publications

Book

Actors in Scala, by Philipp Haller and Frank Sommers. Walnut Creek, California. Artima Inc, 2012.

Actors in Scala is the authoritative guide to programming with the actors framework of Scala's standard library, co-written by the creator and lead maintainer, Philipp Haller. The book provides a comprehensive introduction to the actor model of concurrency and shows how Scala's actors enable you to build efficient, scalable, and robust concurrent software for the JVM.

Journal Publications

Scala-Virtualized: Enhancing the DSL Support of a General-Purpose Language,
by Tiark Rompf, Adriaan Moors, Nada Amin, Philipp Haller, and Martin Odersky.
under review,
2013.
by Philipp Haller and Martin Odersky.
Journal of Theoretical Computer Science,
Volume 410, Issue 2-3.
2009.
pages 202-220.

Conference and Workshop Publications

On the Integration of the Actor Model in Mainstream Technologies-- The Scala Perspective,
by Philipp Haller.
ACM SIGPLAN Workshop on Programming Based on Actors, Agents, and Decentralized Control,
(AGERE! 2012),
Tucson, Arizona, USA,
October 2012.
FlowPools: A Lock-Free Deterministic Concurrent Dataflow Abstraction,
by Aleksandar Prokopec, Heather Miller, Tobias Schlatter, Philipp Haller, and Martin Odersky.
Languages and Compilers for Parallel Computing,
(LCPC 2012),
Tokyo, Japan,
September 2012.
by Lukas Rytz, Martin Odersky, and Philipp Haller.
European Conference on Object-Oriented Programming,
(ECOOP 2012),
Beijing, China,
June 2012.
by Adriaan Moors, Tiark Rompf, Philipp Haller, and Martin Odersky.
ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation,
(PEPM 2012),
Philadelphia, PA, USA,
January 2012.
by Heather Miller, Philipp Haller, and Martin Odersky.
NIPS Workshop on Parallel and Large-Scale Machine Learning,
(BigLearn 2011),
Sierra Nevada, Spain,
December 2011.
by Philipp Haller and Heather Miller.
Scala Workshop,
Stanford, CA, USA,
June 2011.
by Philipp Haller.
SPLASH Workshop on Concurrency for the Application Programmer,
Reno, Nevada, USA,
October 2010.
by Philipp Haller and Martin Odersky.
European Conference on Object-Oriented Programming,
(ECOOP 2010),
Maribor, Slovenia,
June 2010.
by Philipp Haller.
Scala Workshop,
Lausanne, Switzerland,
April 2010.
by Philipp Haller and Tom Van Cutsem.
10th International Conference on Coordination Models and Languages,
(Coordination 2008),
Oslo, Norway,
June 2008.
by Philipp Haller and Martin Odersky.
9th International Conference on Coordination Models and Languages,
(Coordination 2007),
Paphos, Cyprus,
June 2007.
by Philipp Haller and Martin Odersky.
7th Joint Modular Languages Conference,
(JMLC 2006),
Oxford, UK,
September 2006.

In Preparation

Scala Async: Optimizing Asynchronous Continuations,
by Philipp Haller and Jason Zaugg.
Efficient, Type-safe Pickling for Scala,
by Heather Miller, Philipp Haller, and Martin Odersky.

Theses

by Philipp Haller.
Ph.D. Dissertation.
École Polytechnique Fédérale de Lausanne.
2010.
by Philipp Haller.
Diploma thesis, IPD Goos.
University of Karlsruhe.
2006.

Talks

  • Correctly and Efficiently Combining Concurrency Abstractions,
    Skills Matter,
    London, UK,
    December 2012.
  • invited
    Futures and Promises in Scala 2.10,
    The Scala eXchange,
    London, UK,
    November 2012.
  • invited
    On the Integration of the Actor Model in Mainstream Technologies-- The Scala Perspective,
    AGERE! @ SPLASH 2012,
    Tucson, Arizona, USA,
    October 2012.
  • Futures and Promises in Scala 2.10,
    with Heather Miller,
    Scala Enthusiasts Lausanne Meeting,
    Lausanne, Switzerland,
    September 2012.
  • Futures and Promises in Scala 2.10,
    with Heather Miller,
    Boston Area Scala Enthusiasts,
    Boston, Massachusetts, USA,
    August 2012.
  • The Many Flavors of Parallel Programming in Scala,
    Scalathon 2011,
    Philadelphia, Pennsylvania, USA,
    July 2011.
  • Scala for Multicore Programming,
    UPMARC Multicore Computing Summer School,
    Stockholm, Sweden,
    June 2011.
  • Parallelizing Machine Learning-- Functionally,
    with Heather Miller,
    Second Annual Scala Workshop,
    Stanford, California, USA,
    June 2011.
  • Capabilities for Uniqueness and Borrowing,
    24th European Conference on Object-Oriented Programming (ECOOP 2010),
    Maribor, Slovenia,
    June 2010.
  • Lightweight language support for type-based, concurrent event processing,
    First Annual Scala Workshop,
    Lausanne, Switzerland,
    April 2010.
  • Scala: How to Make Best Use of Functions and Objects,
    with Lukas Rytz and Martin Odersky,
    Tutorial at ACM Symposium on Applied Computing,
    Sierre, Switzerland,
    March 2010.
  • Actor-Based Concurrency in Scala,
    with Frank Sommers,
    JavaOne 2009,
    San Francisco, California, USA,
    June 2009.
  • invited
    An Overview of Scala,
    Copenhagen Programming Language Seminar (COPLAS),
    Copenhagen, Denmark,
    June 2008.
  • Implementing Joins using Extensible Pattern Matching,
    10th International Conference on Coordination Models and Languages (COORDINATION'08),
    Oslo, Norway,
    June 2008.
  • invited
    Concurrent Programming in Scala: Actors and Joins,
    2nd International Summer School on Trends in Concurrency (TiC'08),
    Prague, Czech Republic,
    June 2008.
  • Implementing Joins using Extensible Pattern Matching,
    Workshop on Declarative Aspects of Multicore Programming (DAMP'08) @ POPL 2008,
    San Francisco, California, USA,
    January 2008.
  • Actors that Unify Threads and Events,
    9th International Conference on Coordination Models and Languages (COORDINATION'07),
    Paphos, Cyprus,
    June 2007.
  • Scala Actors-- Scalable Multithreading on the JVM,
    IBM Development Lab,
    Boeblingen, Germany,
    May 2007.