Python 3.14 incluye una optimización en las tripas del intérprete que no requiere que toques una sola lÃnea de tu código para notar sus efectos. Se llama tail-call threading y afecta a cómo CPython ejecuta su propio bucle de interpretación.
Qué es el tail-call threading
El bucle de interpretación de CPython está formado por muchas funciones C pequeñas, una por cada opcode. En el modelo clásico, estas funciones se llaman entre sà de forma convencional, lo que genera cierto overhead en la pila de llamadas. El nuevo enfoque reorganiza ese flujo para que cada función transfiera el control a la siguiente mediante una llamada en cola, sin acumular frames en la pila.
El resultado es un bucle de interpretación más compacto, con menos movimiento de datos entre llamadas y mejor aprovechamiento de las predicciones de rama del procesador.
Un 3-5% en pyperformance con compiladores modernos
Los benchmarks del suite pyperformance muestran una mejora media del 3 al 5% cuando se compila CPython con Clang 19 o superior. No es una cifra espectacular en términos absolutos, pero hay que ponerla en contexto: se consigue sin cambiar el lenguaje, sin tocar las bibliotecas estándar y sin pedir nada al desarrollador.
La mejora tampoco es uniforme en todos los benchmarks. Algunos test que miden operaciones muy simples en bucles intensivos ven ganancias mayores; otros, con más I/O o llamadas a C puro, apenas se mueven. Pero la media positiva es consistente.
Transparente para el código Python
Este cambio vive por debajo del nivel al que trabaja el desarrollador Python. No hay nuevas palabras clave, no hay flags de compilación que activar, no hay cambios en la API. Si tu código funciona en 3.13, funciona en 3.14 y va algo más rápido.
Para quienes usáis frameworks donde el intérprete está bajo carga constante, como NiceGUI y Streamlit, frameworks Python donde el rendimiento del intérprete importa, este tipo de mejora acumulativa tiene más peso del que parece. No resuelve cuellos de botella de diseño, pero rebaja el coste base de cada operación.
Una pieza más en la apuesta por el rendimiento
El tail-call threading no llega solo. 3.14 combina esta mejora con el modo free-threaded sin GIL ya estable y con otras optimizaciones en el compilador de bytecode. El camino hacia un Python más rápido sin sacrificar su carácter dinámico es una dirección constante desde hace varios ciclos de versión, como detallamos al analizar las mejoras de rendimiento en Python en 2025.
La documentación técnica completa está disponible en docs.python.org.
Imagen: Pexels / Nemuel Sereti
