Lukas Diekmann

About Me

I am a Research Fellow in the Software Development Team in the Department of Informatics at King's College London working on compilers, JITs, and hardware meta-tracing (previously language composition, incremental parsing/lexing, and editors).


2024-06-25 UB or not UB: How gcc and clang handle statically known undefined behaviour


2020 Don't Panic! Better, Fewer, Syntax Errors for LR Parsers [HTML, Experiment]
Lukas Diekmann, Laurence Tratt
ECOOP, July 2020
2019 Default Disambiguation for Online Parsers [HTML, Experiment]
Lukas Diekmann, Laurence Tratt
SLE, October 2019
Editing composed languages
Lukas Diekmann
PhD thesis, June 2019
2016 Fine-grained language composition [HTML, Experiment]
Edd Barrett, Lukas Diekmann, Laurence Tratt
ECOOP, July 2016
2014 Eco: A Language Composition Editor [HTML, Software]
Lukas Diekmann, Laurence Tratt
SLE, September 2014
2013 Storage Strategies for Collections in Dynamically Typed Languages [HTML, Experiment]
Carl Friedrich Bolz, Lukas Diekmann, Laurence Tratt
OOPSLA, October 2013
Parsing Composed Grammars with Language Boxes
Laurence Tratt, Lukas Diekmann
Workshop on Scalable Language Specification, June 2013
2012 Memory Optimisations for Data Types in Dynamic Languages
Lukas Diekmann
MSc thesis, February 2012



An integration for the Mattermost platform written in Python, that allows receiving and forwarding of Github notifications to specific Mattermost channels.


PyPy originally started as a Python interpreter written in Python but over time became a common translation framework for dynamic languages. PyPy aims to provide an easy way to write flexible implementations for different dynamic languages. The implementations can be translated into various environments while automatically adding garbage collection or a tracing JIT in the process.

For my master's thesis I developed storage strategies to reduce memory overhead for data types like lists and dictionaries in PyPy. The results were merged into PyPy and have been part of shipping release since version 1.9, released in June 2012.


Rust library that efficiently encodes a two-dimensional matrix of integers using row displacement.


Rust libraries for parsing text at compile-time or run-time. Included in this suite is lrpar, a LR parser that allows the parsing of original Yacc grammars, adding advanced error recovery algorithms and a Yacc grammar variant that uses Rust as action code.

Academic services

Copyright © Lukas Diekmann