Andreas Kling, el fundador del navegador web Ladybird, ha anunciado la decisión de utilizar el lenguaje Rust en el desarrollo del proyecto y el inicio de la reescritura de partes de Ladybird en este lenguaje. Como experimento, el motor JavaScript LibJS ya ha sido reescrito de C++ a Rust. LibJS fue elegido debido a su buena cobertura de pruebas, lo que facilita la evaluación de la calidad de la portación.
Para acelerar la portación, se utilizaron asistentes de IA Claude Code y OpenAI Codex, gracias a lo cual el código pudo reescribirse en dos semanas. La traducción se realizó de manera progresiva con la participación de un desarrollador, quien durante el proceso envió a los asistentes de IA varios cientos de prompts, resolviendo en qué secuencia y qué debía portarse, así como especificando los requisitos para el código resultante en Rust. Después de recibir el código en diferentes modelos de IA, se llevó a cabo una revisión del resultado y un análisis del código en busca de errores y decisiones cuestionables.
Como resultado, la versión reescrita en Rust del motor pasó exitosamente todas las 52898 pruebas de compatibilidad con ECMAScript del conjunto test262 y 12461 textos regresivos del proyecto Ladybird. La versión en Rust demostró coincidencia total en la AST generada y el bytecode con la versión en C++, y no se han detectado regresiones hasta ahora. Además, en las pruebas de JavaScript no se observó una disminución en el rendimiento. Asimismo, la coincidencia total mostró una comparación de resultados en el procesamiento de sitios al usar las versiones de LibJS en C++ y Rust.
La reescritura de los componentes del navegador en Rust se considera un proyecto secundario que puede llevar mucho tiempo. El desarrollo principal aún continúa en lenguaje C++. Las decisiones sobre qué subsistemas se reescribirán en Rust serán tomadas por el equipo principal de desarrolladores. El nuevo código en Rust coexistirá con el código existente en C++ a través de niveles de interoperabilidad claramente definidos.
Es notable que en 2024 los desarrolladores de Ladybird decidieron utilizar el lenguaje de programación Swift, pero se encontraron con una interoperabilidad insuficiente con el código en C++ y un soporte limitado para plataformas distintas a Apple. En cuanto a Rust, se ha destacado por tener un ecosistema más maduro para la programación de sistemas y garantías de seguridad. Además, hay muchos desarrolladores de Ladybird familiarizados con este lenguaje. En 2024, el lenguaje Rust no fue aprobado para su uso en Ladybird debido a la paradigmática de desarrollo basada en la propiedad, que no se combina bien con el estilo orientado a objetos de C++.
Andreas Kling alguna vez trabajó en Nokia y estuvo involucrado en el desarrollo de KHTML, y luego en Apple fue uno de los desarrolladores de Safari. Originalmente, el proyecto Ladybird fue creado como una aplicación para el sistema operativo SerenityOS, pero en el verano de 2024 se convirtió en un proyecto independiente y recibió una donación de 1 millón de dólares. El navegador está escrito en C++ y se distribuye bajo la licencia BSD. El proyecto desarrolla su propio motor LibWeb, el intérprete de JavaScript LibJS y bibliotecas asociadas.
Fuente: opennet.ru
