Incrementalizing WebDSL Static Analyses with Statix
Master Project of Max de Krieger


Project description

In the process of programming, a developer benefits from getting quick feedback on his code without executing it. Static analyses provide this feedback by checking certain aspects of a program. Examples of static analyses include type checking, liveness analyses, alias analyses. In order to provide feedback as new code is being developed or existing code is being altered, the static analyses is executed many times per minute and typically should return feedback within seconds. The execution time of static analyses generally scale with the size of a program, and can take longer than desirable when analysing a whole program over and over when small changes are being made. To prevent re-analyzing a large program when a local piece of code is changed, the analysis can be incrementalized. An incremental analysis only re-analysis those parts of the program that are affected by the changed piece of code.

Statix is a language which generates a type checker from a declarative specification [1]. Previous projects improved the analysis time of Statix by incrementalization [2]. This project focusses on reimplementing WebDSL type checking in the Statix, to gain the performance benefits of Statix. WebDSL is a domain-specific language for web applications, which is used in applications for academia and industry [3]. WebDSL is the largest domain-specific language developed and maintained by the Programming Languages group at Delft University of Technology.

This project aims to answer the question: is the Statix functionality enough to generate an incremental type checker for WebDSL?

  1. Hendrik van Antwerpen, Casper Bach Poulsen, Arjen Rouvoet, Eelco Visser: Scopes as types. Proceedings of the ACM on Programming Languages, vol. 2 (OOPSLA), 2018, https://doi.org/10.1145/3276484
  2. Taico Aerts: Incrementalizing Statix: A Modular and Incremental Approach for Type Checking and Name Binding using Scope Graphs. Master’s thesis, Delft University of Technology (2020), http://resolver.tudelft.nl/uuid:3e0ea516-3058-4b8c-bfb6-5e846c4bd982
  3. Danny M. Groenewegen, Zef Hemel, Lennart C. L. Kats, Eelco Visser. WebDSL: a domain-specific language for dynamic web applications. In Gail E. Harris, editor, Companion to the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-13, 2007, Nashville, TN, USA. pages 779-780, ACM, 2008, http://doi.org/10.1145/1449814.1449858

Incrementalizing WebDSL Static Analyses with Statix

Student: Max de Krieger
Supervisor(s): Eelco Visser, Danny Groenewegen