Pero no pienses lo que no es: Linux, el núcleo, está escrito en el lenguaje de programación C… y así va a continuar. Al menos, en el corto y medio plazo. Sin embargo, la versión de C en al que está escrito Linux es antigua y tiene ‘sus cosas’. Cosas que Linus Torvalds tiene la intención de resolver con una actualización.
Según lo cuentan en ZDNet, el código del kernel Linux está escrito en C89, conocido también como ANSI C o ANSI X3.159-1989, el estándar de una época que ha quedado muy atrás en el tiempo. Tanto, que la mera actualización puede ayudar a no toparse con problemas cuya solución está disponible desde hace bastante tiempo también.
No es que C89 ya no «funcione» o no esté soportado: C es todo un estándar de la programación y su compatibilidad, incluso para el código que lleva escrito décadas, está garantizada a través de su propio compilador y en el caso de Linux, a través de GCC (GNU Compiler Collection), con el que se introdujeron diversos cambios con respecto al C corriente.
No obstante, mantenerse en una versión tan antigua de C tiene sus contraindicaciones, como ha descubierto el mismo Torvalds a raíz de la propuesta de un parche de seguridad que resolvía un problema, pero revelaba otro, derivado del uso no de C89, sino de C99, la versión estándar de C lanzada en 1999, también soportada en el kernel.
Sin entrar en pormenores técnicos que lo cierto es que se nos escapan, digamos que la solución del padre de la criatura ha sido la obvia: actualizar el código C de Linux a C11, la versión estándar lanzada en 2011 y que corrige situaciones como la que ha hecho reaccionar a Torvalds (en el anterior enlace está la conversación con todos los detalles, pro si a alguien le interesa).
Así las cosas, los principales mantenedores de Linux tienen trabajo por delante, ya que el cambio de versión es factible y la compatibilidad hacia detrás está asegurada, pero también «podría revelar cualquier cantidad de sorpresas en lugares oscuros del kernel», apunta uno de ellos ante la iniciativa de Torvalds de moverlo de cara al lanzamiento de Linux 5.18… si se puede.
Desde luego, es mucho menos trabajo del que sería portar todo el código de Linux a Rust, una propuesta que avanza por su cuenta, pero que no se prevé que pase mañana o que lo haga como parece, reemplazando la totalidad del código del kernel… y es que C no se va a ningún sitio.