Python 3.15.0 llega con importaciones diferidas y frozendict
Python 3.15.0 llegó el 9 de octubre con 5643 commits de 1012 colaboradores: importaciones diferidas, un frozendict integrado, UTF-8 por defecto y un JIT más rápido.
4 min de lectura

En cifras
- commits since Python 3.14
- 5,643
- contributors to the release
- 1,012
- JIT speedup on x86-64 Linux, geometric mean
- 7-8%
- roughly when security updates end, per PEP 602
- 2031
Python 3.15.0 se publicó el 9 de octubre de 2026. Es la versión anual de nuevas funciones del lenguaje. Trae importaciones diferidas explícitas (lazy imports), un tipo frozendict integrado y UTF-8 como codificación de texto predeterminada. "Python 3.15.0 es la versión principal más reciente del lenguaje de programación Python", escribió el responsable de la versión, Hugo van Kemenade, en Python Insider. La versión reunió 5643 commits de 1012 colaboradores. Llega una semana más tarde de lo previsto en un principio, después de que una tercera versión candidata sorpresa corrigiera errores de última hora en las importaciones diferidas.
Las funciones estrella
Cada gran cambio procede de un PEP, una propuesta de mejora de Python (Python Enhancement Proposal). Es el documento de diseño de una función. Las notas de la versión enumeran estos:
| PEP | Función | Qué hace |
|---|---|---|
| 810 | Importaciones diferidas explícitas | Permite que el código retrase la carga de un módulo hasta su primer uso, para arrancar más rápido |
| 814 | frozendict | Un diccionario integrado que no se puede modificar después de crearlo |
| 661 | Tipo centinela | Un tipo integrado para valores marcadores únicos |
| 686 | UTF-8 por defecto | Python lee y escribe texto como UTF-8 salvo que se indique lo contrario |
| 798 | Desempaquetado en comprensiones | Permite desempaquetar dentro de las comprensiones |
| 829 | Archivos de arranque de paquetes | Nuevos archivos de configuración de arranque para paquetes |
| 799 | Paquete de perfilado | Añade el perfilador por muestreo Tachyon |
| 803, 820, 793 | ABI estable para free-threading | Una sola extensión compilada puede funcionar en distintas compilaciones con free-threading |
| 831 | Punteros de marco | Activados por defecto en las compilaciones |
Las anotaciones de tipo también reciben tres cambios: los PEP 728, 747 y 800. El compilador JIT experimental, los mensajes de error y los colores de la línea de comandos también mejoraron, según la página What's New.
El cambio a UTF-8 importa sobre todo en Windows, según Linux Compatible. El código que dependía de la antigua codificación predeterminada puede volver a ella con PYTHONUTF8=0.
Más rápido, pero no en todas partes
El JIT es un compilador que convierte en código máquina el código Python que más se ejecuta, mientras el programa está en marcha. Ahora es más rápido. Python Insider da estas mejoras en media geométrica:
| Plataforma | Mejora del JIT |
|---|---|
| Linux x86-64 | 7-8 % sobre el intérprete estándar |
| macOS AArch64 | 11-12 % sobre el intérprete de llamadas de cola (tail-calling) |
Los resultados varían mucho según la carga de trabajo. Las pruebas de rendimiento individuales van desde alrededor de un 15 % más lentas hasta más de un 100 % más rápidas, según Linux Compatible.
Los instaladores oficiales también cambiaron. Las compilaciones de Windows de 64 bits usan ahora el intérprete de llamadas de cola, una forma más rápida de ejecutar el bucle principal de Python. Linux Compatible cifra esa mejora en un 15-20 %, y hasta un 40 % en scripts pequeños de Python puro que se ejecutan durante mucho tiempo. Los instaladores oficiales de macOS incluyen ahora compatibilidad con free-threading por defecto. El free-threading permite a Python ejecutar código en varios núcleos de CPU a la vez sin el bloqueo global del intérprete.
Problema conocido en macOS 27
Hay una advertencia para los usuarios de Mac. En macOS 27.0, IDLE y otras aplicaciones de tkinter "pueden bloquearse al usar un comando de menú de una aplicación que abre un cuadro de diálogo", según Python Insider. Después hay que forzar el cierre de la aplicación.
El equipo de Python atribuye el fallo a un cambio en el sistema operativo y cree que afecta a todas las versiones de Tk, el conjunto de herramientas que usa tkinter. Se sigue como la incidencia #158053. La página de la versión sugiere esperar antes de pasar a macOS 27.0 si dependes de aplicaciones Tk.
Qué queda obsoleto
Hay tres cosas en vías de desaparecer, según las notas de la versión y Linux Compatible:
- El módulo
profile, escrito en Python puro, queda obsoleto y se eliminará en Python 3.17.cProfilese mantiene. - Las líneas que ejecutan código en los archivos
.pthquedan obsoletas en favor de los nuevos archivos de arranque de PEP 829. - Las funciones de C
PyGILState_*quedan obsoletas en suave (soft-deprecated), pero no se eliminan.
Python 3.15 recibe dos años de correcciones de errores y después correcciones de seguridad hasta octubre de 2031, aproximadamente, según Linux Compatible. Así lo marca el calendario de PEP 602.
Qué significa esto para los desarrolladores
- Prueba las importaciones diferidas en herramientas que arrancan despacio. Las herramientas de línea de comandos y las aplicaciones con importaciones pesadas son las que más ganan. Prueba cualquier módulo que dependa de código que se ejecuta en el momento de importar, ya que diferir la importación cambia cuándo se ejecuta ese código.
- Revisa el manejo de texto en Windows. UTF-8 es ahora el valor predeterminado. Ejecuta en Windows tus pruebas de entrada y salida de archivos, y usa
PYTHONUTF8=0solo como solución provisional. - Usa frozendict para ajustes fijos. Un diccionario que no se puede modificar es más seguro para la configuración y se puede usar donde se necesita un valor hashable.
- Haz pruebas de rendimiento antes de contar con el JIT. Las mejoras medias son modestas, y algunas cargas de trabajo van más lentas. Mide tu propio código.
- Espera para pasar a macOS 27.0 si usas tkinter. IDLE y las aplicaciones Tk pueden bloquearse hasta que se corrija el error.
- Abandona
profileya. Desaparece en Python 3.17, así que cambia acProfileo al nuevo paquete de perfilado.
Antes de actualizar sistemas en producción, comprueba que tus dependencias clave son compatibles con 3.15.
Fuentes
- Python 3.15.0 final is here! - Python Insider
- Python Release Python 3.15.0 - Python.org
- Python 3.15.0 (final) is here! - Discussions on Python.org
- What's new in Python 3.15 - Python documentation
- Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible
Artículos relacionados

Python 3.15.0 final se retrasa al 9 de octubre tras una rc3 sorpresa
Python 3.15.0rc3 salió el 2 de octubre para corregir errores de última hora en las importaciones diferidas, y retrasa una semana la versión final de Python 3.15.0, hasta el 9 de octubre de 2026.

Python 3.10 llega al fin de su vida útil y cinco versiones corrigen 8 CVE
Python 3.10.22 es la última versión de la rama 3.10: llegó al fin de su vida útil el 1 de octubre de 2026, mientras 3.11 a 3.14 recibían correcciones para hasta ocho CVE.

El Python Language Summit 2026 debate Rust y un nuevo GC
Ya están los informes del Python Language Summit 2026: 47 desarrolladores del núcleo debatieron Rust en CPython, un nuevo recolector de basura, un espacio std y un arranque más rápido.