El kernel Linux se creó en el conocido lenguaje de programación C, y ese legado se ha mantenido durante las últimas tres décadas.
¿El problema? Que ese código empieza a dar problemas, y la culpa la tiene C89, el estándar de 1989 que se usó del lenguaje C.
Linus Torvalds llevaba rumiando una posible solución desde hace tiempo, y ahora dicha solución está en marcha. El objetivo ahora es adaptar ese kernel a los nuevos tiempos, al menos en cuanto al estándar del lenguaje C utilizado: se espera que el kernel Linux 5.18, la próxima versión en aparecer, comience ya a hacer uso del estándar C11 que se publicó en 2011.
Linux se adapta a los nuevos tiempos
El alcance de la noticia es más relevante de lo que parece, sobre todo porque la presencia de Linux es inmensa en nuestro día a día. Puede que su cuota en PCs y portátiles sea muy limitada (apenas el 2,5%), pero su relevancia es enorme en servidores, en dispositivos móviles (hola, Android) y en todo tipo de dispositivos conectados y embebidos como los que conforman la Internet de las Cosas.
La transición de código C89 a código C11 no es especialmente dramática, y de hecho el estándar C89 sigue estando soportado de forma masiva. Los compiladores con soporte C11 por ejemplo pueden trabajar con código C89 sin problemas, así que, ¿por qué molestarse?
Pues porque en los últimos años Linus Torvalds y los mantenedores y desarrolladores del núcleo Linux se han dado cuenta de que hay potenciales problemas de seguridad con esa vieja versión de C. Todo ello se debatió recientemente en la lista de correo con la que se comunican los responsables de mantener el código.
Linux piensa migrar a C99
Linus Torvalds decidió que “ha llegado el momento de pensar en migrar al estándar C99”, que aún siendo también algo antiguo, evitaba los problemas detectados. Un desarrollador llamado Arnd Bergmann indicó que esa migración del código era factible, pero que ya puestos se podría dar el salto directamente a C11, más reciente y aportaba mejoras interesantes como el soporte multihilo.
Cada pocos meses aparece una nueva versión del núcleo (o kernel) Linux, el corazón y componente fundamental de cualquier distribución (como Ubuntu para usuarios finales o Red Hat Linux para servidores) y sistema basado en él.
Ese núcleo es el que aglutina los elementos base y en él se van añadiendo nuevas características —por ejemplo, soporte de nuevos procesadores de Intel o AMD o de nuevos estándares Wi-Fi— y esas mejoras y correcciones van conformando cada nueva versión del kernel.
Torvalds decidió que migrar al estándar C de 2011 era aún una mejor idea, y ahora quiere comenzar a probarla. Se comenzará a hacer cuando se inicie la ‘ventana’ para incluir cambios en el kernel 5.18, y se espera que ese código C11 comience a aparecer en el kernel en marzo.