TU Delft Programming Languages Group

The TU Delft Programming Languages group on December 13, 2017

  • Daniël Pelsmaeker
  • Jasper Denkers
  • Olaf Maas
  • Wiebe van Geest
  • Albert ten Napel
  • Sebastian Erdweg
  • Casper Bach Poulsen
  • Elmer van Chastelet
  • Jeff Smits
  • Michael Steindorfer
  • Danny Groenewegen
  • Nick ten Veen
  • Daco Harkes
  • Sven Keidel
  • Eduardo Amorim
  • Gabriël Konat
  • Arjen Rouvoet
  • Ioannis Papadopoulos
  • Robbert Krebbers
  • Peter Mosses
  • Sander Bosma
  • Jente Hidskes
  • Hendrik van Antwerpen
  • Eelco Visser

more group pictures

Talk by Jeff Smits about the paper:

Jeff Smits, Eelco Visser. FlowSpec: declarative dataflow analysis specification. In Benoît Combemale, Marjan Mernik, Bernhard Rumpe, editors, Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017, Vancouver, BC, Canada, October 23-24, 2017. pages 221-231, ACM, 2017. [doi] [researchr]

Abstract: We present FlowSpec, a declarative specification language for the domain of dataflow analysis. FlowSpec has declarative support for the specification of control flow graphs of programming languages, and dataflow analyses on these control flow graphs. We define the formal semantics of FlowSpec, which is rooted in Monotone Frameworks. We also discuss a prototype implementation of the language, built in the Spoofax Language Workbench. Finally, we evaluate the expressiveness and conciseness of the language with two case studies. These case studies are analyses for Green-Marl, an industrial, domain-specific language for graph processing. The first case study is a classical dataflow analysis, scaled to this full language. The second case study is a domain-specific analysis of Green-Marl.

Talk by Daco Harkes at ECOOP 2017 about the paper:

Daco Harkes, Eelco Visser. IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition. In Peter Müller 0001, editor, 31st European Conference on Object-Oriented Programming, ECOOP 2017, June 19-23, 2017, Barcelona, Spain. Volume 74 of LIPIcs, Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 2017. [doi] [PDF]

Abstract: Derived values are values calculated from base values. They can be expressed with views in relational databases, or with expressions in incremental or reactive programming. However, relational views do not provide multiplicity bounds, and incremental and reactive programming require significant boilerplate code in order to encode bidirectional derived values. Moreover, the composition of various strategies for calculating derived values is either disallowed, or not checked for producing derived values which will be consistent with the derived values they depend upon. In this paper we present IceDust2, an extension of the declarative data modeling language IceDust with derived bidirectional relations with multiplicity bounds and support for statically checked composition of calculation strategies. Derived bidirectional relations, multiplicity bounds, and calculation strategies all influence runtime behavior of changes to data, leading to hundreds of possible behavior definitions. IceDust2 uses a product-line based code generator to avoid explicitly defining all possible combinations, making it easier to reason about correctness. The type system allows only sound composition of strategies and guarantees multiplicity bounds. Finally, our case studies validate the usability of IceDust2 in applications.

A talk about scope graphs at Curry On 2017 in Barcelona

Talk by Casper Bach Poulsen at ECOOP 2016 about the paper:

Casper Bach Poulsen, Pierre Néron, Andrew P. Tolmach, Eelco Visser. Scopes Describe Frames: A Uniform Model for Memory Layout in Dynamic Semantics. In Shriram Krishnamurthi, Benjamin S. Lerner, editors, 30th European Conference on Object-Oriented Programming, ECOOP 2016, July 18-22, 2016, Rome, Italy. Volume 56 of LIPIcs, Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 2016. [PDF] [researchr]

Abstract: Semantic specifications do not make a systematic connection between the names and scopes in the static structure of a program and memory layout, and access during its execution. In this paper, we introduce a systematic approach to the alignment of names in static semantics and memory in dynamic semantics, building on the scope graph framework for name resolution. We develop a uniform memory model consisting of frames that instantiate the scopes in the scope graph of a program. This provides a language-independent correspondence between static scopes and run-time memory layout, and between static resolution paths and run-time memory access paths. The approach scales to a range of binding features, supports straightforward type soundness proofs, and provides the basis for a language-independent specification of sound reachability-based garbage collection.