# A Tail Calling Interpreter For Python (And Other Updates)

DevFeed: [A Tail Calling Interpreter For Python (And Other Updates)](<https://devfeed.tech/articles/a-tail-calling-interpreter-for-python-and-other-updates-21140.md>)

Original publisher: [Read original article](<https://blog.reverberate.org/2025/02/10/tail-call-updates.html>)

Author: Haberman

Published: 2025-02-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Josh Haberman](<https://devfeed.tech/sources/josh-haberman.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Python 3.14](<https://devfeed.tech/topics/python-3-14.md>), [Python](<https://devfeed.tech/topics/python.md>), [Lua](<https://devfeed.tech/topics/lua.md>), [JIT](<https://devfeed.tech/topics/jit.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [jit](<https://devfeed.tech/tags/jit.md>), [lua](<https://devfeed.tech/tags/lua.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [python](<https://devfeed.tech/tags/python.md>), [python-3-14](<https://devfeed.tech/tags/python-3-14.md>)

## AI overview

The article updates readers on tail-call interpreter developments following the author's earlier work. It reports that Python's tail-calling interpreter was merged and is slated for Python 3.14, with an opt-in configuration requirement, and discusses the experimental LuaJIT Remake project and its use of tail-call techniques.

## Source excerpt

It's been nearly four years since I published Parsing Protobuf at 2+GB/s: How I Learned To Love Tail Calls in C. In that article, I presented a technique I co-developed for how to write really fast interpreters through the use of tail calls and the musttail attribute. While the article focused on Protocol Buffer parsers, the technique applies to many kinds of parsers and VM interpreters. I published the article in the hopes that the technique would catch on and be adopted in other projects. In the time since that article was published, there have been many exciting developments in this space. I want to take this opportunity to share some updates. Tail Calling Interpreter for Python I recently learned that a tail calling interpreter was going through PR review on GitHub. Authored by Ken Jin as part of his Bachelor's theses, it uses the techniques described in my article and claims a 9-15% improvement geomean improvement on pyperformance, the official Python benchmark suite. Last Friday that interpreter was merged, and it is officially slated to be released in Python 3.14 (release notes). Note that the tail call interpreter is not the default yet. It has to be enabled at configuration time with --with-tail-call-interp. Hopefully it will be the default in a future release. I'm very excited to see this development. In my original article, I made the following prediction: I think it's likely that all of the major language interpreters written in C (Python, Ruby, PHP, Lua, etc.) could get significant performance benefits by adopting this technique. I'm happy to see that this seems to have come true for Python. Congratulations to Ken on this accomplishment. Tail Calling Interpreter for LuaJIT Remake In 2022-2024, Haoran Xu published a series of articles and papers about an ambitious and experimental effort to automatically generate interpreters and JIT compilers from a description of the language semantics. This project is called Deegen, and Haoran used it to build LuaJIT