El 7 de octubre de 2024, el equipo de desarrollo de Python lanzó oficialmente Python 3.13.0. Esta versión estable trae consigo una serie de nuevas características, optimizaciones de rendimiento y mejoras en la gestión de tipos.
Además, introduce algunos cambios experimentales significativos, como la posibilidad de ejecutar Python sin el bloqueo global del intérprete (GIL). En este artículo, exploramos las principales características y cambios de Python 3.13.0 en comparación con su predecesor, Python 3.12.
Tabla de contenidos
Principales Novedades en Python 3.13.0
Python 3.13.0 introduce varias funcionalidades que mejoran la experiencia del desarrollador, optimizan el rendimiento y amplían el soporte de plataformas.
1. Nuevo Intérprete Interactivo Mejorado
Una de las actualizaciones más notables es el nuevo intérprete interactivo, inspirado en PyPy. Ahora cuenta con edición de líneas múltiples, soporte para color y trazas de excepción colorizadas, lo cual facilita la depuración y mejora la experiencia de codificación en tiempo real.
2. Modo Experimental Sin GIL
Python 3.13 introduce un modo de compilación sin el Global Interpreter Lock (GIL), lo que permite que los hilos se ejecuten de forma más concurrente. Actualmente, este modo está disponible de manera experimental en las instalaciones para Windows y macOS. Esta funcionalidad promete un gran avance en la ejecución paralela en Python.
3. JIT Experimental
Para mejorar el rendimiento a largo plazo, Python 3.13.0 presenta un Just-In-Time Compiler (JIT) en modo experimental, proporcionando las bases para un aumento significativo de velocidad en futuras versiones.
4. Mejora en el Manejo de locals()
La función locals(), utilizada para obtener un mapeo de las variables locales en el ámbito actual, ahora tiene una semántica bien definida cuando se modifica el mapeo retornado. Esta modificación facilita un manejo más consistente en herramientas de depuración.
5. Inclusión de mimalloc
Se incluye una versión modificada de mimalloc, un asignador de memoria de Microsoft. Este es opcional y está habilitado por defecto en plataformas compatibles, y es un requisito para el modo sin GIL.
6. Optimización de Docstrings
Las docstrings ahora eliminan automáticamente la indentación inicial, reduciendo el uso de memoria y el tamaño de los archivos .pyc. Esta mejora beneficia especialmente a herramientas que ya gestionaban las docstrings sin espacios iniciales.
7. Nuevo Backend para dbm: dbm.sqlite3
El módulo dbm ahora cuenta con un nuevo backend dbm.sqlite3, que se utiliza por defecto al crear archivos nuevos. Esto facilita la interoperabilidad con bases de datos SQLite3.
Cambios en el Soporte de Plataformas
Python 3.13 también modifica y expande el soporte de plataformas:
macOS: La versión mínima soportada pasa de 10.9 a 10.13 (High Sierra).
WebAssembly System Interface (WASI): Python ahora soporta oficialmente WASI como plataforma de nivel 2.
Emscripten: Ya no es una plataforma soportada oficialmente, aunque Pyodide sigue ofreciendo soporte para Emscripten.
iOS y Android: Ambos son ahora plataformas de nivel 3, lo que indica que Python puede usarse en estos sistemas con soporte limitado.
Cambios en la Gestión de Tipos
Python 3.13 introduce varias mejoras en el sistema de tipos:
Type Defaults: Se incorpora soporte para valores predeterminados en parámetros de tipo.
Type Narrowing Annotation: Con typing.TypeIs, se mejora la precisión en el refinamiento de tipos.
Read-Only en TypeDicts: Ahora se pueden declarar elementos como de solo lectura dentro de TypeDicts.
Deprecación de Tipos: Se agrega una nueva anotación para marcar elementos como deprecados en el sistema de tipos.
Eliminación de Módulos y Nuevas Deprecaciones
Siguiendo el PEP 594, Python 3.13 elimina varios módulos obsoletos de la biblioteca estándar, como cgi, audioop, pipes, xdrlib, entre otros. Estas eliminaciones reducen la complejidad de la biblioteca estándar, enfocándola en módulos activos y en uso generalizado.
Además, se han eliminado varias clases, funciones y métodos que ya habían sido deprecados en versiones anteriores, y se introducen nuevas deprecaciones que probablemente serán eliminadas en Python 3.15 o 3.16.
Conclusión
Python 3.13.0 representa un avance importante en la dirección de hacer de Python un lenguaje más eficiente y flexible. La introducción de un JIT experimental y el modo sin GIL abren nuevas posibilidades para mejorar el rendimiento y la concurrencia en Python. Con un sistema de tipos enriquecido y un intérprete interactivo mejorado, Python 3.13 facilita el desarrollo para los programadores al tiempo que optimiza el rendimiento general.
¡Excelente información, Kevin!
¡Si necesitás ayuda no dudes en contactarnos! Gracias por tu tiempo.