I am a researcher interested in the efficient implementation of dynamic
programming languages, currently on sabbatical. I live in Duisburg. I used to
work with Laurence Tratt as a member of the Software Development Team at
King's College London from 2013-2016. Before, I was at
Hasso-Plattner-Institute Potsdam with Robert Hirschfeld and
Heinrich-Heine-Universität Düsseldorf with Michael Leuschel. I received
my PhD from HHU Düsseldorf in 2013.
My main research interests are techniques for the efficient implementation of
dynamic programming languages. I am interested in tracing JITs, optimizations,
partial evaluation, particularly at runtime. I am a member of the Python
Software Foundation.
Contact
Projects
I am mainly involved in the PyPy project, as well as projects around it:
- RPython and its JIT: RPython is a project that tries to make implementing
dynamic languages a lot easier by providing a toolchain that helps with
various things such as garbage collection and most importantly, a good JIT
compiler. The long-term vision of PyPy is to realize the vision of really
efficient dynamic programming languages without too much implementation
effort on the side of the language implementors. I work on many aspects of
core RPython development, most importantly its meta-tracing JIT compiler.
(mercurial)
- PyPy: The most important application of RPython is PyPy, a fast and
compatible Python interpreter written in RPython. I have been a core
developer in the PyPy project since 2005 and have worked on almost all
aspects of the interpreter.
- Pyrolog: Pyrolog is a Prolog implementation in RPython that I wrote for my
Bachelor's thesis. The execution engine and many ISO builtins are
implemented. David Schneider and I improved on it in 2010 so that it works
with PyPy's JIT generator. This makes it a lot faster (but not quite as fast
as good C-based VMs). (mercurial)
- Pycket: Pycket is an implementation of Racket in RPython. (git)
- RSQueak (formerly called the SPy VM): RSQueak is an implementation of a
Smalltalk VM in RPython that tries to be compatible with Squeak images. I was
at the SPy sprint in 2007 that started the project and have helped out on
various aspects since then. (git)
- JitPL: JitPL is a dynamic (i.e. just-in-time) partial evaluator for Prolog
that I wrote for my Master's thesis. It has no relation with PyPy on the
code level. However, it served to prototype some ideas for the PyPy JIT
generator and continues to do so in its newer incarnations. (svn)
Publications
A list of my publications (they can also be found on my Google Scholar page):
2016
2015
2014
2013
2012
| The Efficient Handling of Guards in the Design of RPython’s Tracing JIT
David Schneider, Carl Friedrich Bolz
Proc. Workshop on Virtual Machines and Intermediate Languages (VMIL), October 2012
|
| The Functional Programming Language R and the Paradigm of Dynamic Scientific Programming
Baltasar Trancón y Widemann, Carl Friedrich Bolz, Clemens Grelck
Trends in Functional Programming, June 2012
|
2011
2010
2009
| Towards Just-in-time Partial Evaluation of Prolog
Carl Friedrich Bolz, Michael Leuschel, Armin Rigo
Proc. Logic-Based Program Synthesis and Transformation (LOPSTR), September 2009
|
| Tracing the Meta-Level: PyPy's Tracing JIT Compiler
Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski, Armin Rigo
Proc. Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), July 2009
|
2008
| Back to the Future in One Week — Implementing a Smalltalk VM in PyPy
Carl Friedrich Bolz, Adrian Lienhard, Adrian Lienhard, Nicholas Matsakis, Oscar Nierstrasz, Lukas Diekmann, Armin Rigo, Toon Verwaest
Self-Sustaining Systems, May 2008
|
2007
| How to not write a Virtual Machine
Carl Friedrich Bolz, Armin Rigo
Proc. Dynamic Languages and Applications (DYLA), July 2007
|
Teaching
In the winter semester 2008/2009 I designed and taught "Dynamic Programming
Languages" as part of the Master's in Computer Science together with Armin
Rigo. I taught the course a second time in the summer semester 2010, and
again in winter semester 2011.