Carl Friedrich Bolz

I am researcher in Computer Science with Laurence Tratt as a member of the Software Development Team at King's College London since 2013. I live in Hamburg. Before, I was at Hasso-Plattner-Institute Potsdam with Robert Hirschfeld and Heinrich-Heine-Universität Düsseldorf with Michael Leuschel.

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:

  • Core PyPy: PyPy 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, a dynamic compiler and targeting more than one platform (like C, the JVM and the CLR). The long-term goal 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 PyPy development, among them the Python interpreter, the translation toolchain (including optimizations, garbage collectors) and the meta-tracing JIT. (mercurial)

  • 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)

  • The SPy VM: The SPy VM is an implementation of a Smalltalk VM in RPython that tries to be compatible with Squeak images. The VM itself is nearly done; many primitives are missing.

    I was at the original SPy sprint in 2007 and have been working on SPy on-and-off since then. (mercurial)

  • 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):

1: Storage strategies for collections in dynamically typed languages [Experiment, HTML, PDF] Carl Friedrich Bolz, Lukas Diekmann, Laurence Tratt To appear, Object-Oriented Programming, Systems, Languages & Applications (OOPSLA) 2013, October 2013
2: Unipycation: a case study in cross-language tracing [Experiment, PDF] Edd Barrett, Carl Friedrich Bolz, Laurence Tratt To appear, Workshop on Virtual Machines and Intermediate Languages (VMIL), October 2013
3: The impact of meta-tracing on VM design and implementation [DOI, Experiment, HTML, PDF] Carl Friedrich Bolz, Laurence Tratt To appear, Science of Computer Programming, February 2013 Find citations: Google Scholar (5)
4: Loop-Aware Optimizations in PyPy’s Tracing JIT [PDF] Håkan Ardö, Carl Friedrich Bolz, Maciej Fijałkowski Proc. Dynamic Languages Symosium (DLS), October 2012
5: The Efficient Handling of Guards in the Design of RPython’s Tracing JIT [PDF] David Schneider, Carl Friedrich Bolz Proc. Workshop on Virtual Machines and Intermediate Languages (VMIL), October 2012
6: 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
7: Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages [PDF] Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski, Michael Leuschel, Samuele Pedroni, Armin Rigo Proc. Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), July 2011
8: Allocation Removal by Partial Evaluation in a Tracing JIT [PDF] Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski, Michael Leuschel, Samuele Pedroni, Armin Rigo Proc. Partial Evaluation and Program Manipulation (PEPM), January 2011
9: Towards a Jitting VM for Prolog Execution [PDF] Carl Friedrich Bolz, Michael Leuschel, David Schneider Proc. Principle and Practice of Declarative Programming (PPDP), July 2010
10: Jitting Prolog for Fun and Profit [PDF] David Schneider, Carl Friedrich Bolz, Michael Leuschel Proc. Dynamic Languages and Applications (DYLA), June 2010
11: Towards Just-in-time Partial Evaluation of Prolog [PDF] Carl Friedrich Bolz, Michael Leuschel, Armin Rigo Proc. Logic-Based Program Synthesis and Transformation (LOPSTR), September 2009
12: Tracing the Meta-Level: PyPy's Tracing JIT Compiler [PDF] Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski, Armin Rigo Proc. Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), July 2009
13: Back to the Future in One Week — Implementing a Smalltalk VM in PyPy [PDF] Carl Friedrich Bolz, Adrian Lienhard, Adrian Lienhard, Nicholas Matsakis, Oscar Nierstrasz, Lukas Diekmann, Armin Rigo, Toon Verwaest Self-Sustaining Systems, May 2008
14: How to not write a Virtual Machine [PDF] Carl Friedrich Bolz, Armin Rigo Proc. Dynamic Languages and Applications (DYLA), July 2007

Academic Service

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.

Various

I play the bassoon.

I sometimes post articles at the PyPy status blog.

Carl Friedrich Bolz

Twitter: