Chromium, el proyecto de código abierto detrás de Google Chrome, está habilitando un nuevo soporte para Rust en su base de código C ++. Aunque por el momento, solamente será de forma limitada.
El navegador de código abierto de Chromium es el proyecto que sustenta a Microsoft Edge, Opera, Vivaldi es el proyecto de y docenas de navegadores más, y ahora admitirá el uso de bibliotecas Rust de terceros de C++.
El equipo está implementando las herramientas necesarias para poder habilitar el código Rust en el binario de Chrome durante este año, según Dana Jansens del equipo de seguridad de Chrome.
https://cibered.com/hoja-de-referencia-del-lenguaje-de-programacion-rust/
Permitir Rust para bibliotecas de terceros en Chromium es un paso importante hacia un lenguaje moderno y seguro para la memoria, aunque pueda ser más limitado que el Proyecto de código abierto de Android (AOSP) que introduce a Rust como un nuevo lenguaje de plataforma en Abril de 2021.
AOSP permite que Rust desarrolle componentes nativos del sistema operativo y ahora ya representa el 21 % del código nuevo en AOSP. El cambio ha coincidido con una caída en las vulnerabilidades de seguridad de la memoria del 76 % al 35 % de las vulnerabilidades totales en Android.
AOSP, AWS, el proyecto del kernel de Linux, Meta, Microsoft y muchos más están adoptando Rust en la programación de sistemas por sus garantías de seguridad de la memoria.
https://cibered.com/google-muestra-kataos-un-sistema-operativo-seguro-escrito-en-rust/
En términos generales, Rust puede ayudar a reducir las vulnerabilidades relacionadas con la memoria, que constituyen la gran mayoría de los problemas de seguridad del software actualmente.
Las vulnerabilidades llegan por culpa del código escrito en C y C ++ que no son seguros para la memoria, lo que permite a los programadores romper fácilmente las reglas de seguridad de la memoria. En Octubre, Apple detalló cómo abordaba la seguridad de la memoria en XNU; el kernel utilizado para iPhone, iPad y Mac.
Por ahora, el proyecto Chromium ha impuesto varias restricciones a Rust para esas bibliotecas. Por ejemplo, permitirá Rust para bibliotecas de terceros de Chromium si existe una “necesidad comercial”, como reducir significativamente el riesgo de errores de memoria, bloqueos y otros problemas “en comparación con la biblioteca de terceros existente y código C++ relacionado”.
Además de limitar el soporte de Rust a bibliotecas de terceros, el equipo opta por admitir solo la interoperabilidad unidireccional, desde C++ hasta Rust, para controlar la forma del árbol de dependencia.
“Rust no puede depender de C++, por lo que no puede conocer los tipos y funciones de C++, excepto a través de la inyección de dependencias. De esta manera, Rust no puede aterrizar en código C++ arbitrario, solo en funciones pasadas a través de la API desde C++”, señala Jansens.
Jansens explica que es demasiado arriesgado permitir la interoperabilidad completa de C/C++ y Rust entre lenguajes.
“En un nivel alto, lo que descubrimos fue que debido a que C++ y Rust se rigen por reglas diferentes, las cosas pueden torcerse muy fácilmente”, señala Jansens.
Actualmente, también hay una falta de herramientas de interoperabilidad (interoperabilidad) que brinden soporte del compilador y el sistema de tipos de cada idioma.
https://cibered.com/rust-lidera-lenguaje-webassembly/
Google está trabajando en una herramienta de interoperabilidad bidireccional C++/Rust denominada Crubit. Sin embargo, Google lo describe como una herramienta “extremadamente experimental” en esta primera etapa y desaconseja su uso.