El kernel de Linux tiene casi 25 años . Si tuviera que encontrar una versión corta sobre el historial de desarrollo del kernel de Linux desde 1991 (su fecha de inicio), y en particular desde 1994 (1.0.0) hasta hoy, bueno, no podría. Lo mejor que podría hacer antes de leer todas las notas de lanzamiento del núcleo sería proporcionar las siguientes características generales de lanzamiento agregadas al núcleo hasta la versión 3.11 (notas y enlaces omitidos):
- La versión 1.0 del kernel de Linux se lanzó el 14 de marzo de 1994. Esta versión del kernel de Linux solo admitía sistemas informáticos basados en i386 de un solo procesador. La portabilidad se convirtió en una preocupación, por lo que la versión 1.2 (lanzada el 7 de marzo de 1995) obtuvo soporte para sistemas informáticos que utilizan procesadores basados en las arquitecturas Alpha, SPARC y MIPS.
- La versión 2.0 se lanzó el 9 de junio de 1996. Hubo 41 lanzamientos en la serie. La característica principal de 2.0 era el soporte SMP (es decir, soporte para múltiples procesadores en un solo sistema) y soporte para más tipos de procesadores.
- La versión 2.2 (lanzada el 26 de enero de 1999) eliminó el spinlock global y proporcionó un soporte SMP mejorado, y agregó soporte para las arquitecturas m68k y PowerPC, así como nuevos sistemas de archivos (incluido el soporte de solo lectura para NTFS de Microsoft).
- La versión 2.4.0 , lanzada el 4 de enero de 2001, contenía soporte para ISA Plug and Play, USB y tarjetas de PC. También incluyó soporte para el procesador PA-RISC de Hewlett-Packard. El desarrollo de 2.4.x cambió un poco porque se pusieron a disposición más funciones a lo largo de la serie, que incluyen: soporte para Bluetooth, Logical Volume Manager (LVM) versión 1, soporte RAID, InterMezzo y sistemas de archivos ext3.
- La versión 2.6.0 se lanzó el 18 de diciembre de 2003. El desarrollo de 2.6.x cambió aún más para incluir nuevas características a lo largo de la serie. Entre los cambios que se han realizado en la serie 2.6 están: integración de µClinux en las fuentes del núcleo de la línea principal, soporte de PAE, soporte para varias nuevas líneas de CPU, integración de ALSA en las fuentes del núcleo de la línea principal, soporte para hasta 2 32 usuarios ( desde 2 16 ), soporte para hasta 2 29 ID de proceso (solo 64 bits, arcos de 32 bits todavía limitados a 2 15), aumentó considerablemente la cantidad de tipos de dispositivos y la cantidad de dispositivos de cada tipo, mejor compatibilidad de 64 bits, compatibilidad con sistemas de archivos que admiten tamaños de archivo de hasta 16 terabytes, preferencia en el núcleo, compatibilidad con la biblioteca nativa de hilos POSIX (NPTL), integración de Linux en modo de usuario en las fuentes del núcleo de la línea principal, integración de SELinux en las fuentes del núcleo de la línea principal, soporte InfiniBand y mucho más. También es notable la adición de varios sistemas de archivos en las versiones 2.6.x: FUSE, JFS, XFS, ext4 y más. Los detalles sobre el historial de la serie 2.6 del núcleo se pueden encontrar en los archivos ChangeLog en el área de lanzamiento del código fuente de la serie 2.6 del núcleo de kernel.org.
- La versión 3.0 se lanzó el 22 de julio de 2011. Torvalds anunció que el gran cambio fue "NADA. Absolutamente nada". El 30 de mayo de 2011, Torvalds anunció: "... asegurémonos de que realmente hagamos el próximo lanzamiento no solo con un nuevo número brillante, sino también con un buen núcleo". Después del esperado proceso de desarrollo de 6-7 semanas, se lanzará cerca del 20 aniversario de Linux.
- En diciembre de 2012, Torvalds decidió reducir la complejidad del kernel eliminando la compatibilidad con los procesadores i386, haciendo que la serie 3.7 del kernel sea la última que aún admite el procesador original. La misma serie de soporte unificado para el procesador ARM.
- La versión 3.11 , lanzada el 2 de septiembre de 2013, agrega muchas características nuevas, como el nuevo indicador O_TMPFILE para abrir (2) para reducir las vulnerabilidades de archivos temporales, la gestión dinámica de energía de AMD Radeon experimental, el sondeo de red de baja latencia y zswap (caché de intercambio comprimido).
También podría agregar que durante muchos años la Fundación Linux ha estado informando sobre el desarrollo del kernel. Estos son los aspectos más destacados del desarrollo del núcleo 2012-2013:
- Casi 92,000 conjuntos de cambios se han fusionado de 3,738 desarrolladores individuales que representan a 536 corporaciones (que conocemos).
- Una amplia gama de nuevas características importantes se ha fusionado en la línea principal. Estos incluyen operación completa sin tick, espacios de nombres de usuario, virtualización KVM y Xen para ARM, seguimiento de carga por entidad en el planificador, punto de control / reinicio de espacio de usuario, soporte de arquitectura ARM de 64 bits, sistema de archivos orientado a flash F2FS, muchas mejoras de red dirigidas En los problemas de latencia y bufferbloat, dos subsistemas independientes que proporcionan almacenamiento en caché rápido para dispositivos de almacenamiento en bloque, y mucho más.
- La disputa de larga data sobre las características del kernel específicas de Android se ha desvanecido por completo en el fondo. La muy discutida función de "wakelocks" ha sido reemplazada silenciosamente por una solución principal diferente que se utiliza en los últimos dispositivos Android.
- El uso de herramientas automatizadas para encontrar errores en los núcleos de desarrollo ha aumentado significativamente durante este período. Herramientas como el probador de fuzz "trinity" y el sistema de construcción y arranque de día cero están encontrando un gran número de errores en los núcleos de prelanzamiento, acortando el ciclo de desarrollo y permitiendo a la comunidad entregar lanzamientos de mayor calidad.
- Las contribuciones de las industrias móviles e integradas continúan aumentando. Linaro, Samsung y TI, por ejemplo, juntos contribuyeron 4.4% de los cambios en la versión anterior de este documento; para el período hasta 3.10, contribuyeron con casi el 11% de todos los cambios.
- El proyecto kernel participó en el Programa de Extensión para Mujeres por primera vez, dando lugar a 41 solicitudes para 7 puestos disponibles. Durante el proceso de solicitud, se enviaron 374 parches al núcleo, y más de 1/3 de esos parches fueron aceptados en la versión 3.10 del núcleo. El proceso interno ahora está en marcha, pero los resultados no comenzarán a aparecer hasta futuras versiones del kernel.
Además, cuantificar lo que le está sucediendo al kernel no es muy difícil ya que tenemos métricas más allá de las confirmaciones individuales . Por ejemplo, sabemos que el núcleo 1.0.0 en 1994 tenía 176 250 líneas de código; y sabemos que un kernel contemporáneo como 3.10 tiene 15 803 499 líneas de código. Considerablemente más. La frecuencia de liberación del kernel ha aumentado (63 días para 3.10), así como la tasa de cambio (9 confirmaciones por hora o más mientras hablamos). Para citar la Fundación Linux:
La capacidad de mantener esta tasa de cambio durante años no tiene precedentes en ningún proyecto de software público anterior.
Pero todo esto trae poca información en mi opinión. Por lo tanto, preguntaría:
- ¿Puede esta evolución de un cuarto de siglo calificarse sumariamente más allá de la adición lineal de todas las características enumeradas que componen este núcleo con el tiempo?
- ¿Y esto aporta alguna idea sobre de qué se trata el kernel de Linux o hacia dónde va? Después de 25 años de desarrollo, ¿se pueden sacar algunas conclusiones al respecto?
Buscando una respuesta abstracta en términos simples que lo diga todo sin recurrir a decirlo todo.