I am a PhD candidate in the Programming Languages Research Group at the Delft University of Technology supervised by Eelco Visser. I am interested in domain-specific languages (DSLs), language workbenches, incremental execution, and software development pipelines (e.g., build scripts) and and their use in interactive environments such as IDEs.
The overarching theme of my research is language-parametric methods for developing interactive programming systems. A language-parametric method takes as input a description of a programming language (such as a DSL), and automatically implements (parts of) an interactive programming system, reducing development effort, thereby making programming language development more feasible.
This page lists my scientific publications and projects I’ve worked on, my experience and education, and my contact information.
Gabriël Konat, Roelof Sol, Sebastian Erdweg, and Eelco Visser: Precise, Efficient, and Expressive Incremental Build Scripts with PIE. IC 2019. [Link]
Gabriël Konat, Sebastian Erdweg, and Eelco Visser: Scalable Incremental Building with Dynamic Task Dependencies. ASE 2018. [DOI]
Gabriël Konat, Michael J. Steindorfer, Sebastian Erdweg, and Eelco Visser: PIE: A Domain-Specific Language for Interactive Software Development Pipelines. Programming Journal 2.3 (2018). [DOI]
Gabriël Konat, Sebastian Erdweg, and Eelco Visser: Bootstrapping Domain-Specific Meta-Languages in Language Workbenches. GPCE 2016. [DOI]
Gabriël Konat, Luís Eduardo de Souza Amorim, Sebastian Erdweg, and Eelco Visser: Bootstrapping, Default Formatting, and Skeleton Editing in the Spoofax Language Workbench. Language Workbench Challenge (LWC@SLE) 2016. [Link]
Sebastian Erdweg, Tijs van der Storm, Markus Völter, Laurence Tratt, Remi Bosman, William R. Cook, Albert Gerritsen, Angelo Hulshout, Steven Kelly, Alex Loh, Gabriël Konat, Pedro J. Molina, Martin Palatnik, Risto Pohjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad A. Vergu, Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der Woning: Evaluating and comparing language workbenches: Existing results and benchmarks for the future. Computer Languages, Systems & Structures 44 (2015). [DOI]
Eelco Visser, Guido Wachsmuth, Andrew P. Tolmach, Pierre Néron, Vlad A. Vergu, Augusto Passalaqua, and Gabriël Konat: A Language Designer’s Workbench: A One-Stop-Shop for Implementation and Verification of Language Designs. Onward! 2014. [DOI]
Guido Wachsmuth, Gabriël Konat, and Eelco Visser: Language Design with the Spoofax Language Workbench. IEEE Software 31.5 (2014). [DOI]
Sebastian Erdweg, Tijs van der Storm, Markus Völter, Meinte Boersma, Remi Bosman, William R. Cook, Albert Gerritsen, Angelo Hulshout, Steven Kelly, Alex Loh, Gabriël Konat, Pedro J. Molina, Martin Palatnik, Risto Pohjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad A. Vergu, Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der Woning: The State of the Art in Language Workbenches - Conclusions from the Language Workbench Challenge. SLE 2013. [DOI]
Guido Wachsmuth, Gabriël Konat, Vlad A. Vergu, Danny M. Groenewegen, and Eelco Visser. A Language Independent Task Engine for Incremental Name and Type Analysis. SLE 2013. [DOI]
The Spoofax Language Workbench is a platform for developing textual (domain-specific) programming languages and their corresponding interactive programming systems. In Spoofax, programming languages are specified in declarative meta-DSLs for syntax, static semantics, dynamic semantics, transformations, and editor services. From such a specification, Spoofax generates a parser, name and type analysis, interpreter, compiler, and an Eclipse or IntelliJ code editor with editor services.
Spoofax is a large project with many components that are being worked on in our group. I have worked on several parts of Spoofax:
- NaBL, TS, and the task engine is a framework for incremental name and type analysis in Spoofax. NaBL is a meta-DSL for declaratively specifying the name and scope rules of a language. TS is a meta-DSL for simple type system specification. The task engine is a framework for incrementally executing name and type analysis tasks. NaBL and TS generate a tree traversal for collecting name and type tasks of an abstract syntax tree (AST), which the task engine then incrementally executes.
- Spoofax Core is a project to turn Spoofax, which was fully based on the Eclipse IDE in 2013, into a platform-independent language workbench core which could be integrated with any platform. This required a full reimplementation of the core language workbench logic, as well as a full reimplementation of the integration with Eclipse, Maven, and the command-line. Together with Vlad Vergu, Hendrik van Antwerpen, and Daniel Pelsmaeker, we successfully implemented Spoofax Core and its various integrations. Spoofax Core has powered (and is powering) parts of our research and is being used by Oracle Labs to develop several DSLs.
- Meta-DSL bootstrapping in Spoofax is important, as we want to reap the benefits of our own meta-DSLs to improve our own meta-DSLs. To that end, we have developed a fixpoint bootstrapping approach that versions meta-DSL compilers, records explicit dependencies between them, and iteratively self-applies meta-DSL compilers until either a defect is found, or a new baseline is created when a fixpoint is found.
PIE: Pipelines for Interactive Environments
PIE is a DSL, API, and runtime for developing interactive software development pipelines, such as IDEs which need to process events responsively in a live environment, but also incremental build scripts which need to provide timely feedback. With PIE, pipeline developers can concisely write pipeline programs in terms of tasks and dependencies between tasks and files, which the PIE runtime then incrementally executes. We have developed a change-driven incremental build algorithm that makes incremental execution of PIE programs scale down to many low-impact changes, while scaling up to large dependency graphs.
Experience and Education
2012 - present
Ph.D. in Computer Science. Delft University of Technology. Department of Software Technology, Programming Languages Research Group
06/2013 - 08/2013, 07/2014 - 09/2014, 07/2015 - 09/2015
Research Assistant. Oracle Labs in Redwood Shores, California, United States of America
2009 - 2012
M.Sc. in Computer Science (cum laude). Delft University of Technology. Specialization: Software Engineering
2005 - 2009
B.Sc. in Computer Science. Rijswijk University of Technology. Specialization: Software Development
2000 - 2005
HAVO diploma. Segbroek College in Den Haag. Specialization: Nature & Technology