Desde Linux Darkcrizt  

El proyecto Chromium admitirá el uso de bibliotecas Rust

Chromium

, el proyecto Chromium admitirá el uso de bibliotecas Rust de terceros de C++ en Chromium

Google dio a conocer hace poco la noticia de que el equipo detrás del proyecto de Chromium se encuentra trabajando en agregar una cadena de herramientas Rust de producción a su sistema de compilación.

Para quienes aún desconocen de Rust, deben recordarlo bien porque este lenguaje de programación que fue desarrollado por Mozilla específicamente para su uso en la escritura de un navegador, ha comenzado a colarse y ser aceptado dentro de muchos proyectos importantes, uno de ellos el Kernel de Linux.

Esto nos permitirá incluir el código Rust en el binario de Chrome durante el próximo año. El objetivo es comenzar poco a poco y establecer expectativas claras sobre qué bibliotecas se considerarán cuando estén listas.

Con ello es lógico que Chromium finalmente esté comenzando a desarrollar esa tecnología también. Para Google, la introducción de Rust en Chromium cumplirá el objetivo de proporcionar una forma más fácil y segura de cumplir la regla de dos, que consiste en acelerar el desarrollo y mejorar la seguridad de Chrome, ademas de que se está mejorando la seguridad, eliminando errores de memoria y reduciendo la densidad de errores en el código.

Sabemos que C++ y Rust pueden funcionar muy bien juntos, gracias a herramientas como cxx, autocxx bindgen, cbindgen, diplomat y (experimental) crubit. Sin embargo, también hay limitaciones. Podemos esperar que la forma de estas limitaciones cambie con el tiempo con herramientas nuevas o mejoradas, pero las decisiones y descripciones aquí se basan en el estado actual de la tecnología.

La decisión se tomó como parte de una iniciativa para evitar que aparezcan errores de memoria en el código base de Chrome. Según las estadísticas proporcionadas hace dos años, el 70 % de los problemas de seguridad críticos y peligrosos en Chromium se deben a errores de memoria.

El uso del lenguaje Rust, que se centra en la gestión segura de la memoria y proporciona una gestión automática de la memoria, reducirá el riesgo de vulnerabilidades causadas por problemas como el acceso a un área de la memoria después de que se haya liberado y el desbordamiento del búfer.

El objetivo de llevar Rust a Chromium es proporcionar una manera más fácil (sin IPC) y más segura (C++ menos complejo en general, sin errores de seguridad de memoria en un espacio aislado) para satisfacer la regla de dos, con el fin de acelerar el desarrollo (menos código para escribir, menos documentos de diseño, menos revisiones de seguridad) y para mejorar la seguridad (más líneas de código sin errores de seguridad de la memoria, menor densidad de errores de código) de Chrome. Además, la empresa confía en que podemos usar bibliotecas de Rust de terceros para lograr este objetivo.

A principios de 2022, el equipo de Chromium ya había experimentado con Rust y, después de unos meses, llegó a la conclusión de que el lenguaje inicialmente no es adecuado como reemplazo de C ++ para tareas complejas con código asincrónico que debe funcionar junto con el código existente.

Por lo tanto, el uso planificado de Rust in Chromium está claramente limitado al principio. Por un lado, la interoperabilidad solo irá en una dirección: de C++ a Rust. Por otro lado, inicialmente solo se permite el uso de bibliotecas de terceros. Estos funcionan como componentes independientes y son independientes de los componentes internos de Chromium. Las bibliotecas deben tener una API simple para su tarea específica. El equipo de Chromium luego examinará las bibliotecas.

Finalmente, cabe mencionar que como tal el agregar soporte en Chromium permitirá que el código Rust se transfiera a los binarios de Chrome a partir del próximo año. La decisión analiza principalmente el tema de la seguridad : Rust ofrece mayor seguridad al escribir en la memoria que C ++ y prohíbe comportamientos potencialmente dañinos como leer variables no escritas, acceder más allá de los límites establecidos por matrices, desreferenciar punteros nulos o inválidos, el uso de iteradores invalidados.

Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.