Symposium Build Systems
Eelco Dolstra, Andrey Mokhov, Jeff Smits, Matthew Flatt, Sebastian Erdweg
Date: Mon, November 18, 2019
Time: 10:00
Room: EEMCS (building 28), Social Data Lab 0E.220, Van Mourik Broekmanweg 6, 2628 XE Delft
Note: Lunch is served in the room. Please register to attend by sending an email to R.Sharabi@tudelft.nl
On the occasion of the PhD defense of Gabriel Konat, we are organizing a symposium on Build Systems with talks by Eelco Dolstra (Tweag I/O), Andrey Mokhov (Newcastle), Jeff Smits (TU Delft), Matthew Flatt (Utah) and Sebastian Erdweg (Mainz) followed by the defense itself.
Reflections on the Nix build system DSL
Eelco Dolstra (Tweag I/O)
Date: Mon, November 18, 2019
Time: 10:00
Room: Social Data Lab 0.E220
Nix is a purely functional build system: it builds immutable artifacts from a description in a simple purely functional DSL. It is used on its own and as the basis for NixOS, a Linux distribution with a declarative configuration model. In this talk I’ll reflect on the successes and failures of the Nix DSL: why it makes sense to use a DSL over a general-purpose language, but also why a sufficiently powerful DSL turns out to be both a blessing and a curse.
[more]Selective Applicative Functors
Andrey Mokhov (Newcastle University)
Date: Mon, November 18, 2019
Time: 10:35
Room: Social Data Lab 0.E220
Applicative functors and monads have conquered the world of functional programming by providing general and powerful ways of describing effectful computations using pure functions. Applicative functors provide a way to compose independent effects that cannot depend on values produced by earlier computations, and all of which are declared statically. Monads extend the applicative interface by making it possible to compose dependent effects, where the value computed by one effect determines all subsequent effects, dynamically.
[more]Incremental Compilers with Internal Build Systems
Jeff Smits (TU Delft / PL)
Date: Mon, November 18, 2019
Time: 11:10
Room: Social Data Lab 0.E220
Compilation time is an important factor in the adaptability of a software project. Fast (incremental) recompilation enables cheap experimentation with changes to a project, as those changes can be tested quickly. Despite the benefits of an incremental compiler, such compilers are usually not the default. Published research on incremental compilation often shows how to build an incremental compiler from the ground up, based on a programming language that is well-suited for such a compilation scheme. We have found in our own work that when the first compiler for a language is not incremental, and language features are not developed with that incremental compiler in mind, it can be hard to develop such a compiler at a later time. We address this problem by developing a compiler design approach that reuses parts of an existing non-incremental compiler to lower the cost of building an incremental compiler. The key idea on which we build our incremental compiler is that we use an incremental build system internally to wire together the components we extract from the original compiler. We demonstrate our design approach on the Stratego programming language.
[more]Compiler and Runtime Support for Continuation Marks
Matthew Flatt (University of Utah)
Date: Mon, November 18, 2019
Time: 12:15
Room: Social Data Lab 0.E220
Continuation marks enable dynamic binding and context inspection in a language with proper handling of tail calls and first-class continuations. The simplest and most direct use of continuation marks is to implement dynamically scoped variables, such as the current output stream or the current exception handler. By exposing continuation marks to users of a programming language, more kinds of language extensions can be implemented as libraries without further changes to the compiler. Our new implementation of continuation marks for Chez Scheme (in support of Racket) makes dynamic binding and lookup constant-time and fast and preserves the performance of Chez Scheme’s first-class continuations.
[more]tba
Sebastian Erdweg (Johannes Gutenberg University Mainz)
Date: Mon, November 18, 2019
Time: 12:50
Room: Social Data Lab 0.E220
Part of the Symposium on Build Systems
[more]Language-Parametric Methods for Developing Interactive Programming Systems
Gabriël Konat (TU Delft)
Date: Mon, November 18, 2019
Time: 15:00
Room: Senaatszaal, Auditorium
Note: This is a PhD defense. The candidate's talk starts at 14.30.
All computers run software, such as operating systems, web browsers, and video games, which are used by billions of people around the world. Therefore, it is important to develop high-quality software, which is only possible through interactive programming systems that involve programmers in the exchange of correct and responsive feedback. Fortunately, for many general-purpose programming languages, integrated development environments provide interactive programming systems through code editors and editor services.
[more]Previous:
Maurício Aniche | Machine Learning 4 Software Refactoring
Next:
Eelco Dolstra | Reflections on the Nix build system DSL