Eelco Visser
News
-
November 11, 2019: I will give a lecture at the Programming Languages Implementation Summer School (PLISS 2020) in Bertinoro, Italy in May 2020.
-
October 14, 2019: Proud to present: Proceedings of the ACM on Programming Languages. Volume 3 Issue OOPSLA, October 2019. All 73 articles are open access. The editorial message explains the reviewing process.
-
October 1, 2019: I will be speaking at a KNAW symposium on safety-critical software (in dutch) about language-based software safety. Attendance on October 31 is free (register at the website).
-
September 29, 2019: Fast and Safe Linguistic Abstraction for the Masses (my contribution to the 2018 workshop A Research Agenda for Formal Methods in the Netherlands)
-
August 27, 2019: Jasper Denkers wins best paper and best presentation award at ESEC/FSE 2019 Doctoral Symposium for his paper on “A Longitudinal Field Study on Creation and Use of Domain-Specific Languages in Industry” based on work with/at Océ.
-
August 9, 2019: The Spoofax team has a vacancy for a PhD student in language engineering
-
June 19, 2019: Eduardo Amorim successfully defended his PhD thesis Declarative Syntax Definition for Modern Language Workbenches and was awarded the degree of doctor.
-
June 11, 2019: The paper Scopes and Frames Improve Meta-Interpreter Specialization by Vlad Vergu, Andrew Tolmach, and Eelco Visser has been accepted at ECOOP 2019.
-
April 25, 2019: Oracle donates $100K to support research on Flexible, Composable, and Incremental Compiler Pipelines
-
April 10, 2019: The ‘brave new idea’ paper Towards Language-Parametric Semantic Editor Services Based on Declarative Type System Specifications by Daniël Pelsmaeker, Hendrik van Antwerpen, and Eelco Visser has been accepted at ECOOP 2019.
-
March 27, 2019: Daco Harkes successfully defended his PhD thesis Declarative Specification of Information System Data Models and Business Logic and was awarded the degree of doctor.
-
March 15, 2019: The PL group has an opening for an assistant or associate professor in programming languages
-
March 13, 2019: Talk A Direct Semantics for Declarative Disambiguation Rules
-
March 7, 2019: The PL group has a website, including a page with upcoming seminar talks!
-
February 24, 2019: Dissertation Daco Harkes printed
-
February 19, 2019: Slides: Declarative type system specification with Statix
-
Janary 1, 2019: Welcome to Casper Bach Poulsen as new assistant professor in the Programming Languages Group.
Open Positions
We have open positions for
- a PhD student in language engineering
- student programmers
- grammar engineer to develop high quality SDF3 grammars
- web programmer in the academic workflow engineering team
Other opportunities
If you would be interested in working with me, send me an email.
Coordinates
- Full Professor
- Antoni van Leeuwenhoek Professor
- Chair of Programming Languages Group
- Department of Software Technology
- Faculty of Electrical Engineering, Mathematics and Computer Science
- Delft University of Technology
- Delft, The Netherlands (CEST/CET)
- Email: e.visser@tudelft.nl, visser@acm.org
- Web: http://eelcovisser.org (this page)
Research
I lead the Software Language Design and Engineering research program. Our mission is to enable software engineers to effectively design, implement, and apply domain-specific languages. We are doing research in three tracks:
-
Language engineering: investigate the automatic derivation of efficient, scalable, incremental compilers and usable IDEs from high-level, declarative language definitions
-
Semantics engineering: investigate the automatic verification of the consistency of language definitions in order to check properties such as type soundness and semantics preservation
-
Language design: investigate the systematic design of domain-specific software languages with an optimal tradeoff between expressivity, completeness, portability, coverage, and maintainability.
Recommended Publications
Static semantics
- Scopes as types (PACMPL/OOPSLA 2018)
- A constraint language for static semantic analysis based on scope graphs (PEPM 2016)
- A theory of name resolution (ESOP 2015)
- Declarative name binding and scope rules (SLE 2012)
Dynamic semantics
- Scopes and frames improve meta-interpreter specialization (ECOOP 2019)
- Intrinsically typed definitional Interpreters for imperative languages (POPL 2018)
- Specializing a meta-interpreter (ManLang 2018)
- Scopes describe Frames: A uniform model for memory layout in dynamic semantics (ECOOP 2016)
- DynSem: A DSL for dynamic semantics specification (RTA 2015)
Integrated development environments
- Towards language-parametric semantic editor services based on declarative type system specifications (ECOOP 2019)
- A language designer’s workbench: A one-stop-shop for implementation and verification of language designs (Onward! 2014)
- Software development environments on the Web: A research agenda (Onward! 2012)
- The Spoofax language workbench. Rules for declarative specification of languages and IDEs (OOPSLA 2010)
Build and deployment
- Scalable incremental building with dynamic task dependencies (ASE 2018)
- PIE: A domain-specific language for interactive software development pipelines (Programming 2018)
- Bootstrapping domain-specific meta-Languages in language workbenches (GPCE 2016)
- Nix: A safe and policy-free system for software deployment (LISA 2004)
- Imposing a memory management discipline on software deployment (ICSE 2004)
Transformation and analysis
- FlowSpec: declarative dataflow analysis specification (SLE 2017)
- Integrated language definition testing. Enabling test-driven language development (OOPSLA 2011)
- Decorated attribute grammars. Attribute evaluation meets strategic programming (CC 2009)
- Stratego/XT 0.17. A language and toolset for program transformation (SCP 2008)
- Program transformation with scoped dynamic rewrite rules (FI 2006)
- A survey of strategies in rule-based program transformation systems (JSC 2005)
- Composing source-to-source data-flow transformations with rewriting strategies and dependent dynamic rewrite rules (CC 2005)
- Building program optimizers with rewriting strategies (ICFP 1998)
Syntax definition and parsing
- Declarative specification of indentation rules (SLE 2018)
- Towards zero-overhead disambiguation of deep priority conflicts (Programming 2018)
- Deep priority conflicts in the wild: a pilot study (SLE 2017)
- Principled syntactic code completion using placeholders (SLE 2016)
- Natural and flexible error recovery for generated modular language environments (TOPLAS 2012)
- Pure and declarative syntax definition: Paradise lost and regained (Onward! 2010)
Language composition
- Preventing injection attacks with syntax embeddings (SCP 2010)
- Parse table composition. Separate compilation and binary extensibility of grammars (SLE 2008)
- Mixing source and bytecode. A case for compilation by normalization (OOPSLA 2008)
- Transformations for abstractions (SCAM 2005)
- Generalized type-based disambiguation of meta programs with concrete object syntax (GPCE 2005)
- Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions (OOPSLA 2004)
- Meta-programming with concrete object syntax (GPCE 2002)
Programming with relations
- Migrating business logic to an incremental computing DSL: A case study (SLE 2018)
- IceDust 2: Derived bidirectional relations and calculation strategy composition (ECOOP 2017)
- IceDust: Incremental and eventual computation of derived values in persistent object graphs (ECOOP 2016)
- Unifying and generalizing relations in role-based data modeling and navigation (SLE 2014)
Abstractions for web programming
- PixieDust: Declarative incremental user interface rendering through static dependency tracking (WWW 2018)
- Static consistency checking of web applications with WebDSL (JSC 2011)
- Declaratively programming the mobile Web with mobl (OOPSLA 2011)
- Separation of concerns and linguistic integration in WebDSL (IEEE Software 2010)
- Declarative access control for WebDSL (ICWE 2008)
More publications | biggest hits | TU Delft PL talks |
Projects
- The Language Designer’s Workbench
- Spoofax: a language workbench
- SDF3: a syntax definition formalism
- NaBL2: a name binding language
- DynSem: a dynamic semantics specification language
- Stratego: a program transformation language
- WebDSL: a web programming language
- researchr: a bibliography management system
- researchr/conf: a domain-specific content management system for conferences
- WebLab: a learning management system
Current Activities
- Review Committee Chair: OOPSLA 2019
- Associate Editor: PACMPL
- SPLASH Steering Committee Chair
All my professional activities | Presentations |
Quote
MetaBorg provides generic technology for allowing a host language (collective) to incorporate and assimilate external domains (cultures) in order to strengthen itself. The ease of implementing embeddings makes resistance futile.