Daniel Hillerström
- Senior Researcher at the Huawei Zurich Research Center, Switzerland.
- Honorary Fellow at The University of Edinburgh, Scotland, United Kingdom.
- Contact me at enable JavaScript to reveal this information.
- For corporate enquiries use enable JavaScript to reveal this information.
Research interests
My research interests revolve around effect handler oriented programming, a novel programming paradigm centred around effect handlers, which empowers programmers to build modular and scalable interactive software, enabling the development of safe, secure, reliable, and robust applications. My work focuses mostly on the foundations for effect handler oriented programming.
- I work with Sam Lindley, Andreas Rossberg, Luna Phipps-Costin, and others on the WasmFX project, which brings effect handlers to WebAssembly as a structured mechanism for stack switching. WasmFX is the basis of the official stack switching proposal for WebAssembly. We have a prototype implementation of the instruction set available in the production-grade off-the-web engine wasmtime.
- John Longley and I investigate the expressive power of effect handlers and how they fit into the landscape of programming abstractions. We are working on semantic characterisations of first-class control operators to unveil and better understand their mathematical content.
- With Wenhao Tang, I study frontend matters for programming with effect handlers such as the design of type-and-effect systems. Recently, we have developed the notion of control-flow linearity, a novel way of combining linear resources with unrestricted first-class control (i.e. multi-shot continuations) in a safe manner.
My research programme aims to push effect handlers into systems, and in particular systems programming languages, to provide a principled means for controlling the effectful nature of systems. A particular interest of mine is applications of effect handlers in operating systems as many concepts in this space have elegant and modular formulations in terms of effect handlers.
Publications
Papers
-
- Modal Effect Types
- Draft, July 2024
-
- Asymptotic Speedup with Effect Handlers
- In JFP (ICFP'20 special issue) 34:e5
-
- Soundly Handling Linearity
- In POPL'24
- Distinguished Paper
-
- Continuing WebAssembly with Effect Handlers
- In OOPSLA'23
-
- Structural Subtyping as Parametric Polymorphism
- In OOPSLA'23
-
- Effect Handlers, Evidently
- In ICFP'20
-
- Effects for Efficiency: Asymptotic Speedup with First-Class Control
- In ICFP'20
-
- Effect Handlers via Generalised Continuations
- In JFP (special issue on algebraic effects and handlers) 30:e5
-
- Shallow Effect Handlers
- In APLAS'18
-
- Concurrent Systems Programming with Effect Handlers
- In TFP'17
-
- Continuation Passing Style for Effect Handlers
- In FSCD'17
-
- Liberating Effects with Rows and Handlers
- In TyDe@ICFP'16
Dissertations
-
- Foundations for Programming and Implementing Effect Handlers
- PhD dissertation, School of Informatics, The University of Edinburgh, 2021
-
- Compilation of Effect Handlers and their Applications in Concurrency
- MSc(R) dissertation, School of Informatics, The University of Edinburgh, 2016
- Distinguished Dissertation
-
- Handlers for Algebraic Effects in Links
- MSc dissertation, School of Informatics, The University of Edinburgh, 2015
- Distinguished Dissertation
-
- The Constructive Completeness of Intuitionistic Propositional Logic
- BSc dissertation, Department of Computer Science, Aalborg University, 2013
Extended abstracts
-
- Foundations for Programming and Implementing Effect Handlers (JFP PhD Abstract)
- JFP vol. 32:e7 2022
-
- Composing UNIX with Effect Handlers
- ML Family Workshop 2021
-
- Broken Links (Presentation)
- ProWeb Workshop 2020
-
- Handlers.Js (Presentation)
- ProWeb Workshop 2018
-
- Effectively Tackling the Awkward Squad
- ML Family Workshop 2017
-
- Compiling Links Effect Handlers to the OCaml Backend
- ML Family Workshop 2016
Talks
-
- Effect Handlers All the Way Down
-
- Global Software Technology Summit, Edinburgh, Scotland, UK, Jul 2024
-
- invited talk
-
- Introduction to Effect Handler Oriented Programming
-
- 3rd Workshop on Nanos, FunctionFlow, and HiCR, Shanghai, China, Jun 2024
- Huawei Zurich Research Center, Switzerland, Jun 2023
-
- WasmFX: Structured Stack Switching via Effect Handlers in WebAssembly
-
- WebAssembly Stacks Subgroup, virtual event, May 2024
- WebAssembly Workshop (WAW@POPL), London, UK, Jan 2024
-
- invited talk
- Wasm Research Day, Munich, Germany, Oct 2023
- Huawei Industry Standards Group, virtual event, Sep 2023
- WebAssembly Community Group, virtual event, Aug 2023
- EHOP Workshop, The Burn, Scotland, UK, Jul 2023
- WebAssembly Stacks Subgroup, virtual event, Jul 2023
- Huawei Zurich Research Center topic meeting, Switzerland, Apr 2023
- Dagstuhl seminar 23101, Germany, Mar 2023
- Huawei Edinburgh Joint Lab Workshop, The University of Edinburgh, Scotland, UK, Jan 2023
- Wasm Research Day, San Francisco, California, USA, Oct 2022
- SPLS, virtual event, Oct 2021
- Wasm Stacks Subgroup, virtual event, Sep 2021
-
- Composing UNIX with Effect Handlers: A Case Study in Effect Handler Oriented Programming
-
- Elements of Programming Languages guest lecture, The University of Edinburgh, Scotland, UK, Nov 2022
- Programming Research Lab, Northeastern University, Boston, Massachusetts, USA, Nov 2022
- Huawei Zurich Research Center, Switzerland, Oct 2022
- Microsoft Research, Redmond, Washington, USA, May 2022
- ML Family Workshop, virtual event, Seoul, South Korea, Aug 2021
- Dagstuhl seminar 21992, virtual event, Germany, Jul 2021
- PLUG, virtual event, University of Glasgow, Scotland, UK, Dec 2020
-
- Asymptotic Speedup with Effect Handlers
-
- FATA seminar, University of Glasgow, Scotland, UK, Dec 2022
- ICFP, virtual event, New Jersey, USA, Aug 2020
- Shonan seminar 146, Japan, Mar 2019
- PLInG meeting, The University of Edinburgh, Scotland, UK, Jul 2018
-
- Effect Handlers, Evidently
-
- Microsoft Research, Redmond, Washington, USA, Sep 2019
-
- Breaking Links
-
- Shonan seminar 146, Japan, Mar 2019
-
- Taking Back Control
-
- Google, Aarhus, Denmark, Dec 2018
-
- Handlers.Js
-
- Tarides, Paris, France, Nov 2022
- Dagstuhl seminar 18172, Germany, Apr 2018
- ProWeb, Nice, France, Apr 2018
-
- Concurrent Programming with Effect Handlers
-
- CUFP@ICFP, Oxford, England, UK, Sep 2017
-
- Continuation Passing Style for Effect Handlers
-
- FSCD, Oxford, England, UK, Sep 2017
-
- An Abstract Machine Semantics for Handlers
-
- SPLS, University of St Andrews, Scotland, UK, Mar 2017
-
- Compiling Links Effect Handlers to the OCaml Backend
-
- ML Family Workshop, Nara, Japan, Sep 2017
-
- Liberating Effects with Rows and Handlers
-
- TyDe@ICFP, Nara, Japan, Sep 2017
-
- Asynchronous Effect-based Input and Output
-
- CDT Pervasive Parallelism student showcase, The University of Edinburgh, Scotland, UK, Jun 2017
-
- Runtime Agnostic Concurrency with Handlers
-
- Pervasive Parallelism lunch talk, The University of Edinburgh, Scotland, UK, Oct 2016
-
- Programming with Algebraic Effects and Handlers
-
- Critical Blue Ltd, Edinburgh, Scotland, UK, May 2016
-
- Towards Compilation of Affine Algebraic Effect Handlers
-
- Systems Research Group Meeting, University of Cambridge, England, UK, Apr 2016
Software
As a byproduct of my research I have developed or contributed to software projects, mainly programming language implementations.
-
-
Dart Programming Language
Dart is a Google led project. Dart is a production-grade application-oriented programming language providing a high-degree of portability across multiple platforms, e.g. web, mobile, and desktop.
I was part of the Dart frontend team in 2018-2019, where I contributed to the design and implementation of the type checker and kernel compiler during the transition from the dynamically-typed Dart v1.0 to the statically-typed Dart v2.0.
-
-
-
Koka Programming Language
Koka is a research project led by Daan Leijen at Microsoft Research. Koka is a garbage-collector-free function-oriented programming language focused on providing an "abstraction without remorse" programming experience, as it were, through its sophisticated reuse analysis.
I contributed to the development of Koka during 2019, when I was working with Daan Leijen on compilation of effect handlers to C via a novel the evidence passing translation.
-
-
-
Links: Linking Theory to Practice for the Web
Links is a functional programming language designed for multi-tier web programming, enabling web programs to be written in a single source language. It features language-integrated database-query support, a distributed-computing model model á la Erlang, session-typed communication, an effect system, and effect handlers. Links is actively used as a research vehicle at The University of Edinburgh and the University of Glasgow.
I am a core contributor to Links. In particular, I designed and implemented the effect handlers extension.
-
-
-
OCaml Programming Language
OCaml is an INRIA led project. OCaml is an industrial-strength statically-typed functional programming language from the ML family, offering a powerful module system extending that of Standard ML and a feature-rich, class-based object system.
I am a contributor to the design and implementation of OCaml. In particular, I helped design and implement features of the effect handlers extension in the Multicore OCaml project, which was upstreamed as part the release of OCaml 5. I also maintain the multicont package, which provides facilities for programming with multi-shot continuations in OCaml.
-
-
-
Wasmtime: A Fast and Secure Runtime for WebAssembly
Wasmtime is a Bytecode Alliance led project. Wasmtime is a production-grade, standards compliant, fast, and secure WebAssembly engine, which is built on the optimising Cranelift to quickly translate WebAssembly code into high-quality machine code.
I primarily use Wasmtime as a vehicle for prototyping my research and proposals for WebAssembly, e.g. I maintain a fork of Wasmtime as a prototype implementation of the WasmFX instruction set.
I am a Bytecode Alliance recognised contributor.
-
-
-
WebAssembly Reference Interpreter
The WebAssembly reference interpreter is an official reference implementation of the WebAssembly specification. I have contributed to the specification, design, and implementation of the function references, exception handling, and stack switching proposals.
-
Service
- TOSEM'24
- ACMSRC'24
- MFPS'24 (external reviewer)
- <Programming> vol. 8
- ICFP'23 (external reviewer)
- HOPE'23 (co-chair)
- SRC@ICFP'23 (co-chair)
- EHOP'23
- HOPE'22 (co-chair)
- SRC@ICFP'22 (co-chair)
- AEC@ESOP'22
- SPLS'22
- Effect Handlers Benchmark suite (co-chair) 2021-22
- APLAS'21 (external reviewer)
- ProWeb'21
- JFP'19 special issue
- SPLS'19
- AEC@ICFP'19
- ICFP Programming Contest 2017