Saltar al contenido

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.

Por Tech AI Wire Team

4 min de lectura

XLinkedIn
Captura de pantalla de la publicación de Python Insider «Python 3.15.0 (final) is here!», de Hugo van Kemenade, fechada el 9 de octubre de 2026, con la ilustración de la versión 3.15.

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:

PEPFunciónQué hace
810Importaciones diferidas explícitasPermite que el código retrase la carga de un módulo hasta su primer uso, para arrancar más rápido
814frozendictUn diccionario integrado que no se puede modificar después de crearlo
661Tipo centinelaUn tipo integrado para valores marcadores únicos
686UTF-8 por defectoPython lee y escribe texto como UTF-8 salvo que se indique lo contrario
798Desempaquetado en comprensionesPermite desempaquetar dentro de las comprensiones
829Archivos de arranque de paquetesNuevos archivos de configuración de arranque para paquetes
799Paquete de perfiladoAñade el perfilador por muestreo Tachyon
803, 820, 793ABI estable para free-threadingUna sola extensión compilada puede funcionar en distintas compilaciones con free-threading
831Punteros de marcoActivados 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:

PlataformaMejora del JIT
Linux x86-647-8 % sobre el intérprete estándar
macOS AArch6411-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. cProfile se mantiene.
  • Las líneas que ejecutan código en los archivos .pth quedan 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=0 solo 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 profile ya. Desaparece en Python 3.17, así que cambia a cProfile o al nuevo paquete de perfilado.

Antes de actualizar sistemas en producción, comprueba que tus dependencias clave son compatibles con 3.15.

Fuentes

  1. Python 3.15.0 final is here! - Python Insider
  2. Python Release Python 3.15.0 - Python.org
  3. Python 3.15.0 (final) is here! - Discussions on Python.org
  4. What's new in Python 3.15 - Python documentation
  5. Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible

Artículos relacionados