ERC Project "RustBelt"

Announcement

We are very pleased to announce the awarding of a 2015 ERC Consolidator Grant for the project "RustBelt: Logical Foundations for the Future of Safe Systems Programming". The project concerns the development of rigorous formal foundations for the Rust programming language (see project summary below).

The project is 5 years long and will include funding for several postdoc and PhD student positions supervised by Derek Dreyer at the Max Planck Institute for Software Systems (MPI-SWS) in Saarbruecken, Germany.

Open positions

Postdoctoral positions

For the postdoc positions, we are seeking exceptional candidates with a strong, internationally competitive track record of research in programming languages and/or verification. The primary criterion is quality, but we are particularly interested in candidates who have specialized expertise in one or more of the following areas:

Rust

substructural/ownership type systems

verification of concurrent programs

weak/relaxed memory models

interactive theorem proving in Coq

compiler verification

PhD student positions

Experience programming in Rust is a welcome bonus, but not required.

For the PhD student positions, we are seeking exceptional candidates who have at least some background in programming language theory and/or formal methods, and who are eager to work on deep foundational problems with the potential for direct impact on a real, actively developed language. A bachelor's or master's degree is required. Experience with Rust and/or Coq is a plus. The thesis research will be conducted under Dr. Dreyer's supervision at the Max Planck Institute for Software Systems (MPI-SWS) in Saarbruecken, Germany. The working language at MPI-SWS is English. (See here for more details about the graduate program at MPI-SWS).

How to apply

If you are interested in a postdoc or PhD position working on RustBelt, please send email directly to dreyer@mpi-sws.org, and also submit an application through the MPI-SWS application site. Please note in your application that you are interested in the RustBelt project. Starting dates are negotiable.

The RustBelt team

The Foundations of Programming group, led by Derek Dreyer at MPI-SWS, has a strong track record both in terms of publications and people. Current and former postdocs in the group have included Andreas Rossberg (co-designer of WebAssembly), Chung-Kil Hur, Neel Krishnaswami, Aaron Turon (former manager of the Rust project at Mozilla), Jacques-Henri Jourdan, Ori Lahav, Pierre-Marie Pédrot, Azalea Raad, and Rodolphe Lepigre. Current and former PhD students in the group have included Georg Neis, Beta Ziliani, Scott Kilpatrick, David Swasey, Ralf Jung, Jan-Oliver Kaiser, Hoang-Hai Dang, Marko Doko, Joshua Yanovski, Michael Sammler, and Simon Spies. The RustBelt project benefits from longstanding active collaborations with Deepak Garg (MPI-SWS), Viktor Vafeiadis (MPI-SWS), Lars Birkedal (Aarhus University), Chung-Kil Hur (Seoul National University), Jeehoon Kang (KAIST), Robbert Krebbers (TU Delft), and Joe Tassarotti (Boston College), as well as the many contributors to the Iris project.

Current Team Members @ MPI-SWS

Former Team Members @ MPI-SWS

Project Collaborators

Summary of the RustBelt project proposal

We are collaborating actively with a number of researchers around the world on work that is directly relevant to the RustBelt project. We have generous funds available for members of the RustBelt team to travel and visit with our collaborators.

A longstanding question in the design of programming languages is how to balance safety and control. C-like languages give programmers low-level control over resource management at the expense of safety, whereas Java-like languages give programmers safe high-level abstractions at the expense of control.

Rust is a new language developed at Mozilla Research that marries together the low-level flexibility of modern C++ with a strong "ownership-based" type system guaranteeing type safety, memory safety, and data race freedom. As such, Rust has the potential to revolutionize systems programming, making it possible to build software systems that are safe by construction, without having to give up low-level control over performance.

Unfortunately, none of Rust's safety claims have been formally investigated, and it is not at all clear that they hold. To rule out data races and other common programming errors, Rust's core type system prohibits the aliasing of mutable state, but this is too restrictive for implementing some low-level data structures. Consequently, Rust's standard libraries make widespread internal use of "unsafe" blocks, which enable them to opt out of the type system when necessary. The hope is that such "unsafe" code is properly encapsulated, so that Rust's language-level safety guarantees are preserved. But due to Rust's reliance on a weak memory model of concurrency, along with its bleeding-edge type system, verifying that Rust and its libraries are actually safe will require fundamental advances to the state of the art.

In this project, we aim to equip Rust programmers with the first formal tools for verifying safe encapsulation of "unsafe" code. Any realistic languages targeting this domain in the future will encounter the same problem, so we expect our results to have lasting impact. To achieve this goal, we will build on recent breakthrough developments by the PI and collaborators in concurrent program logics and semantic models of type systems.

RustBelt Publications

Related/Older Publications

Related projects

Iris : Higher-Order Concurrent Separation Logic in Coq

: Higher-Order Concurrent Separation Logic in Coq GPS : Strong Logic for Weak Memory

: Strong Logic for Weak Memory ModuRes : Modular Reasoning about Concurrent Higher-Order Imperative Programs

: Modular Reasoning about Concurrent Higher-Order Imperative Programs Mtac: A Monad for Typed Tactic Programming in Coq

Derek Dreyer