rustlinux

Linus Torvalds está encantado de decirle que los números de las versiones de Linux no son un gran problema.

Como el supremo de Linux dijo de la versión 6.0: "A pesar del cambio de número principal, no hay nada fundamentalmente diferente en esta versión - hace tiempo que evito la noción de que los números principales son significativos, y la única razón para un sistema de numeración 'jerárquico' es hacer que los números sean más fáciles de recordar y distinguir".

Con la 6.1, sin embargo, hay algo fundamentalmente diferente. Por primera vez en la historia de Linux, además de C, podrás utilizar otro lenguaje, Rust, para el desarrollo del núcleo.

¿Por qué? En palabras de Wedson Almeida Filho, del equipo Android de Google: "Creemos que Rust ya está listo para unirse a C como lenguaje práctico para implementar el núcleo. Puede ayudarnos a reducir el número de posibles errores y vulnerabilidades de seguridad en el código privilegiado, a la vez que juega muy bien con el núcleo del kernel y preserva sus características de rendimiento."

En concreto, como explicaron Alex Gaynor y Geoffrey Thomas en la Cumbre de Seguridad Linux 2019, casi dos tercios de los agujeros de seguridad del kernel de Linux [PDF] provienen de problemas de seguridad de memoria. Y dónde se originan? Debilidades inherentes a C y C++. Rust, por otro lado, esquiva estos problemas mediante el uso de interfaces de programación de aplicaciones (API) mucho más seguras. Rust es sencillamente más seguro que C.

Recientemente, la Agencia de Seguridad Nacional de EE.UU. (NSA), que se encarga de asegurar el código además de romperlo, sugirió que una de las mejores cosas que puedes hacer por la seguridad de tu programa es utilizar lenguajes seguros para la memoria como Rust en lugar de C. Por supuesto, hay otros lenguajes de este tipo, como Swift, Go o C#, pero no se prestan para el tipo de programación de bajo nivel necesaria para un sistema operativo.

Esto no es sólo una teoría. Funciona. Google, por ejemplo, utiliza ahora Rust de forma extensiva en Android. Allí el "objetivo no es convertir C/C++ existente a Rust, sino cambiar el desarrollo de nuevo código a lenguajes seguros para la memoria con el tiempo".

¿Cuál es el resultado? "A medida que la cantidad de nuevo código inseguro para la memoria que entra en Android ha disminuido, también lo ha hecho el número de vulnerabilidades de seguridad de memoria. De 2019 a 2022 se ha reducido del 76% al 35% del total de vulnerabilidades de Android. 2022 es el primer año en el que las vulnerabilidades de seguridad de memoria no representan la mayoría de las vulnerabilidades de Android." No está nada mal.

Por supuesto, que algo sea más seguro no significa que todo el mundo quiera adoptarlo. Al fin y al cabo, los desarrolladores llevan casi 30 años trabajando en Linux en C. A todos ellos les preocupaba la enorme cantidad de trabajo necesaria para introducir Rust en Linux. Por ejemplo, para que el controlador NVMe de Rust Linux funcionara, se necesitaban 70 extensiones de Rust no estándar.

Pero, como me dijo Torvalds a principios de este año, "Llevamos décadas usando excepciones al C estándar".

Si te has curtido programando en C y duermes con una copia de K&R bajo la almohada, no te preocupes. Rust no sustituirá a C en el núcleo en ningún momento de esta década.

Como ha explicado Torvalds, Rust "sólo tendrá la infraestructura básica (es decir, aún no tiene un caso de uso serio)". En concreto, es de esperar que Rust haga su primera aparición en los controladores de Linux.

Miguel Ojeda, desarrollador del núcleo Linux que encabezó los esfuerzos para incorporar Rust al núcleo, añadió: "El núcleo es un proyecto enorme con muchas partes interesadas. Desde el principio, estaba claro que añadir un segundo lenguaje 'principal' al núcleo plantearía retos tanto técnicos como de gestión".

Así que, según explicó Ojeda, los primeros trabajos en Rust que se verán en los kernels de Linux serán "abstracciones en Rust para subsistemas y escribir controladores y otros módulos".

 

Fuente: somoslibres

¿Quién está en línea?

Hay 14128 invitados y ningún miembro en línea