Guido van Rossum ideó el lenguaje Python a finales de los 80 y comenzó a implementarlo en diciembre de 1989. En febrero de 1991 publicó la primera versión pública, la versión 0.9.0. La versión 1.0 se publicó en enero de 1994, la versión 2.0 se publicó en octubre de 2000 y la versión 3.0 se publicó en diciembre de 2008.
Hasta 2018, el desarrollo de Python estaba dirigido personalmente por Guido van Rossum y bajo el paraguas de la fundación Python Software Foundation. En julio de 2018 Guido van Rossum anunció que dejaría de dirigir el desarrollo de Python. Desde 2019 el desarrollo de Python está dirigido por un consejo de dirección de cinco miembros elegidos entre los desarrolladores de Python y que se renueva anualmente.
Las versiones de Python se identifican por tres números X.Y.Z, en la que:
Los principales cambios introducidos en Python 2 fueron las cadenas Unicode, las comprensiones de listas, las asignaciones aumentadas, los nuevos métodos de cadenas y el recolector de basura para referencias cíclicas.
Los principales cambios introducidos en Python 3 fueron la separación entre cadenas Unicode y datos binarios, la función print(), cambios en la sintaxis, tipos de datos, comparadores, etc.
Por el momento, no hay planes de crear una nueva versión Python 4, incompatible con las anteriores.
Desde la versión 2.0 hasta 2019, las versiones X.Y se publicaron aproximadamente cada año y medio y se han mantenido durante cinco años, excepto la versión 2.7, que se mantuvo durante diez años, hasta el 1 de enero de 2020 (aunque se publicó una versión final en abril de 2020).
En 2019 se decidió pasar a publicar nuevas versiones X.Y anualmente, en octubre, manteniéndolas durante cinco años. Así, Python 3.9, 3.10 y 3.11 se publicaron en octubre de 2020, 2021 y 2022 respectivamente y Python 3.12 se publicará en octubre de 2023.
La publicación de las versiones .Z es más irregular, porque el descubrimiento de fallos de seguridad puede provocar la necesidad de publicación de una nueva versión en cualquier momento, pero hay un calendario previsto de versiones .Z.
En principio, en el primer año después de la publicación de la versión inicial X.Y.0, se publican versiones .Z cada dos meses, tanto en forma de código fuente como de instaladores. Tras la publicación de la siguiente versión X.(Y+1).0 se publica una versión X.Y.Z proporcionando instaladores, pero las versiones .Z que se publican hasta completar los cinco de mantenimiento ya sólo se publican en forma de código fuente. Además, normalmente se publica una última versión X.Y.Z justo antes de que una versión X.Y deje de mantenerse.
Al margen de las versiones publicadas por la PSF, algunas empresas comerciales ofrecen el mantenimiento de versiones antiguas una vez acabado el mantenimiento oficial.
La imagen siguiente muestra la fecha de publicación de las versiones principales de Python, en cada una de las tres grandes versiones, Python 1, Python 2 y Python 3. Las versiones indicadas con punto rojo se consideran obsoletas, de las versiones indicadas con punto azul se siguen publicando actualizaciones y las versiones indicadas con punto blanco corresponden a versiones futuras con las fechas de publicación previstas.
La imagen siguiente muestra la fecha de publicación de las últimas versiones menores de Python. Las versiones indicadas en rojo se consideran obsoletas, las versiones indicadas con punto blanco corresponden a versiones futuras con fechas ya previstas.
Es posible tener instalados en el ordenador varias versiones de Python pero, salvo que sea necesario para la ejecución de programas o paquetes incompatibles, se recomienda instalar siempre la última versión disponible.
En octubre de 2019 se discutió la posibilidad de cambiar el ritmo de publicación de nuevas versiones de Python: de los anteriores 18 meses a 9 meses (PEP 596), 12 meses (PEP 602) o 24 meses (PEP 605). Los pros y contras de estos cambios se pueden ver en PEP 607. Finalmente, se optó por una cadencia de publicación anual. Así, Python 3.9 se publicó en octubre de 2020, Python 3.10 se publicó en octubre de 2021 y Python 3.11 se publicará en octubre de 2022.
La transición de Python 2 a Python 3 resultó mucho más costosa de lo esperado, debido a que Python 3 introdujo muchos cambios en el lenguaje y obligaba a reescribir prácticamente todos los programas (aunque se han creado herramientas para ayudar en ese proceso).
La intención inicial era haber terminado Python 2 con la versión 2.6, pero en 2010 se tuvo que publicar la versión 2.7, incorporando parte de las novedades de Python 3. Además, el período de mantenimiento de Python 2.7 se tuvo que duplicar de los cinco años habituales a diez, hasta 2020.
Un primer obstáculo en el proceso de transición de Python 2 a Python 3 fue la propia disponibilidad de Python 3 en las distribuciones GNU/Linux. Muchas herramientas internas de las distribuciones están escritas en Python y su conversión de Python 2 a Python 3 no era fácil, por lo que las distribuciones no podían pasar simplemente de incluir una versión a otra.
Hasta 2015, Python 2 siguió siendo la versión predeterminada de Python en la mayoría de distribuciones GNU/Linux (aunque se podía instalar Python 3 sin problemas en ellas). Felizmente, esta situación está resuelta en las principales distribuciones:
Aunque las nuevas versiones de las distribuciones se basan en Python 3, las distribuciones basadas en Python 2 seguirán instaladas en servidores durante bastantes años. Ese es el motivo por el que la fundación Python prolongó el período de publicación de actualizaciones de seguridad de Python 2.7 hasta finales de 2019. A partir de 2020 son las distribuciones las que mantienen Python 2.7 durante el tiempo que se mantengan las propias distribuciones (por ejemplo, RedHat 7 se mantendrá hasta el año 2024, como mínimo, y RedHat 8 o Debian 10 todavía permiten instalar Python 2.7).
Un segundo obstáculo en el proceso de transición de Python 2 a Python 3 (y que ha afectado además a todos los sistemas operativos) ha sido la disponibilidad de las bibliotecas.
Python cuenta con un gran número de bibliotecas, cuyo repositorio oficial es PyPI (Python Package Index), que facilitan la programación de aplicaciones complejas. Cuando se publicó Python 3, la inmensa mayoría de bibliotecas sólo estaban disponibles para Python 2 y, lógicamente, si un programa necesitaba alguna biblioteca que sólo estaba disponible para Python 2, el programa no se podía pasar tampoco a Python 3.
Poco a poco, la mayoría de bibliotecas de Python fueron publicando versiones para Python 3, por lo que este problema también está resuelto. Las bibliotecas que no han hecho la transición a Python 3 es normalmente porque están abandonadas.
En marzo de 2016, un estudio de empleados de Microsoft señalaba que por aquel entonces algo más del 50% de las bibliotecas estaban disponibles tanto para Python 2 como para Python 3, un 25% estaban disponibles sólo para Python 2 y un poco menos del 25% estaban disponibles sólo para Python 3, pero la tendencia parecía indicar que a mediados de 2016 Python 3 pasaría a ser la versión más popular.
Varias páginas web hacen un seguimiento de la compatibilidad con Python 3 de las bibliotecas más populares
En julio de 2018, Guido van Rossum anunció su retirada como BDOF.
En diciembre de 2018 se aprobó el PEP 8016 -- The Steering Council Model que establece como modelo de gobernanza de Python un consejo directivo formado por cinco miembros elegidos entre los desarrolladores de Python y que será renovado tras cada publicación de una versión principal de Python. El primer consejo directivo se eligió en enero de 2019 [artículo en lwn.net 04/02/2019]. El segundo consejo directivo se eligió en diciembre de 2019 [PEP 8101].
Guido van Rossum formó parte del primer consejo directivo, pero no del segundo, completando así su retirada de la dirección de Python.
En noviembre de 2020, Guido van Rossum anunció que se incoporaba a la Developer Division de Microsoft para trabajar en temas relacionados con Python. En mayo de 2021 anunció que centraría su trabajo en la mejora del rendimiento de Python.
Referencias:
La tabla siguiente indica las versiones de Python incluidas en las distribuciones GNU/Linux más utilizadas en servidores:
Año | Python | Fedora | RedHat Enterprise Linux | Debian | Ubuntu | Año |
---|---|---|---|---|---|---|
2023 | ¿Oct?: Py 3.12 |
¿Oct?: Fedora 39 ¿Abr?: Fedora 38 |
2023 | |||
2022 | Oct: Py 3.11 |
Dic: Fedora 37: Py 3.11.0 May: Fedora 36: Py 3.10.4 |
May: RHEL 9: Py 3.9.10 | Abr: Ubuntu 22.04 LTS (jammy): Py 3.10.4 | 2022 | |
2021 | Oct: Py 3.10 |
Nov: Fedora 35: Py 3.10.0 Abr: Fedora 34: Py 3.9.2 |
Ago: Debian 11 (bullseye): Py 3.9.2 | 2021 | ||
2020 | Oct: Py 3.9 |
Oct: Fedora 33: Py 3.9.0 Abr: Fedora 32: Py 3.8.2 |
Abr: Ubuntu 20.04 LTS (focal): Py 3.8.2 | 2020 | ||
2019 | Oct: Py 3.8 |
Oct: Fedora 31: Py 3.7.4 Abr: Fedora 30: Py 3.7.2 |
May: RHEL 8: Py 3.6 | Jul: Debian 10 (buster): Py 3.7.3 | 2019 | |
2018 | Jun: Py 3.7 |
Oct: Fedora 29: Py 3.7.0 May: Fedora 28: Py 3.6.5 |
Abr: Ubuntu 18.04 LTS (bionic): | 2018 | ||
2017 |
Nov: Fedora 27: Py 3.6.2 Jul: Fedora 26: Py 3.6.1 |
Jun: Debian 9 (stretch): Py 2.7 / Py 3.5 | 2017 | |||
2016 | Dic: Py 3.6 |
Nov: Fedora 25: Py 3.5.2 Jun: Fedora 24: Py 3.5.1 |
Abr: Ubuntu 16.04 LTS (xenial): | 2016 | ||
2015 | Sep: Py 3.5 |
Nov: Fedora 23: Py 3.4.3 May: Fedora 22: Py 2.7.9 |
Abr: Debian 8 (jessie): Py 2.7 / Py 3.4 | 2015 | ||
2014 | Mar: Py 3.4 | Dic: Fedora 21: Py 2.7.8 | Jun: RHEL 7: Py 2.7 | Abr: Ubuntu 14.04 LTS (trusty): | 2014 | |
2013 |
Dic: Fedora 20: Py 2.7.5 Jul: Fedora 19: Py 2.7.5 Ene: Fedora 18: Py 2.7.3 |
May: Debian 7 (wheezy): Py 2.7 / Py 3.2 | 2013 | |||
2012 | Sep: Py 3.3 | May: Fedora 17: Py 2.7.3 | Abr: Ubuntu 12.04 LTS (precise): | 2012 | ||
2011 | Feb: Py 3.2 |
Nov: Fedora 16: Py 2.7.2 May: Fedora 15: Py 2.7.1 |
Feb: Debian 6 (squeeze): Py 2.6 / Py 3.1 | 2011 | ||
2010 | Jul: Py 2.7 |
Nov: Fedora 14: Py 2.7.0 May: Fedora 13: Py 2.6.4 |
Nov: RHEL 6: Py 2.6 | Abr: Ubuntu 10.04 LTS (lucid): | 2010 | |
2009 | Jun: Py 3.1 |
Nov: Fedora 12: Py 2.6.2 Jun: Fedora 11:Py 2.6.0 |
Feb: Debian 5 (lenny): Py 2.5 | 2009 | ||
2008 |
Oct: Py 2.6 Dic: Py 3.0 |
Nov: Fedora 10: Py 2.5.2 May: Fedora 9: Py 2.5.1 |
Abr: Ubuntu 8.04 LTS (hardy): | 2008 | ||
2007 |
Nov: Fedora 8: Py 2.5.1 May: Fedora 7: Py 2.5.0 |
Mar: RHEL 5: Py 2.4 | Abr: Debian 4 (etch): | 2007 | ||
Año | Python | Fedora | RedHat Enterprise Linux | Debian | Ubuntu | Año |
Fuentes: