Andreas Kling, o fundador do navegador web Ladybird, anunciou a decisão de utilizar a linguagem Rust no desenvolvimento do projeto e o início da reescrita de partes do Ladybird nessa linguagem. Como experimento, o motor JavaScript LibJS já foi reescrito de C++ para Rust. O LibJS foi escolhido devido à sua boa cobertura de testes, facilitando a avaliação da qualidade da migração.
Para acelerar a migração, foram envolvidos assistentes de AI Claude Code e OpenAI Codex, permitindo que o código fosse reescrito em duas semanas. A tradução foi feita de forma progressiva, com a participação do desenvolvedor, que enviou aos assistentes de AI várias centenas de prompts durante o trabalho, decidindo a ordem e o que migrar, além de especificar requisitos para o código resultante em Rust. Após a obtenção do código em diferentes modelos de AI, foi realizada uma revisão dos resultados e uma análise do código em busca de erros e decisões questionáveis.
No final, a versão reescrita em Rust do motor passou com sucesso em todos os 52898 testes de compatibilidade com ECMAScript do conjunto test262 e 12461 testes de regressão do projeto Ladybird. A versão em Rust demonstrou correspondência total do AST gerado e do bytecode com a versão em C++, sem regressões identificadas até o momento. Nos testes de JavaScript, também não houve diminuição no desempenho. Além disso, a correspondência total foi comprovada em testes comparativos dos resultados de processamento de sites utilizando as versões LibJS em C++ e Rust.
A reescrita dos componentes do navegador em Rust é considerada um projeto secundário, que pode levar bastante tempo. O desenvolvimento principal continua sendo feito na linguagem C++. As decisões sobre quais subsistemas serão reescritos em Rust serão tomadas pela equipe principal de desenvolvedores. O novo código em Rust coexistirá com o código existente em C++ através de níveis de interoperabilidade claramente definidos.
Notavelmente, em 2024, os desenvolvedores do Ladybird decidiram usar a linguagem de programação Swift, mas enfrentaram baixa interoperabilidade com código em C++ e suporte limitado a plataformas que não são da Apple. Em relação ao Rust, este apresenta um ecossistema mais maduro para programação de sistemas e garantias de segurança. Além disso, entre os desenvolvedores do Ladybird há muitos participantes familiarizados com essa linguagem. Em 2024, a linguagem Rust não foi aprovada para uso no Ladybird devido à sua abordagem de desenvolvimento baseada em posse, que não combina bem com o estilo orientado a objetos do C++.
Andreas Kling trabalhou uma vez na Nokia e esteve envolvido no desenvolvimento do KHTML, e depois, na Apple, foi um dos desenvolvedores do Safari. Originalmente, o projeto Ladybird foi criado como um aplicativo para o sistema operacional SerenityOS, mas no verão de 2024 foi transformado em um projeto separado e recebeu um financiamento de 1 milhão de dólares. O navegador é escrito em C++ e é distribuído sob a licença BSD. O projeto desenvolve seu próprio motor LibWeb, interpretador JavaScript LibJS e bibliotecas auxiliares.
Fonte: opennet.ru
