Andreas Kling, fondatore del browser web Ladybird, ha annunciato la decisione di utilizzare il linguaggio Rust per lo sviluppo del progetto e ha iniziato a riscrivere alcune parti di Ladybird in questo linguaggio. Come esperimento, il motore JavaScript LibJS è già stato riscritto da C++ a Rust. LibJS è stato scelto per la buona copertura dei test, che facilita la valutazione della qualità del porting.
Per accelerare il porting, sono stati utilizzati assistenti AI Claude Code e OpenAI Codex, grazie ai quali il codice è stato riscritto in due settimane. La traduzione è avvenuta progressivamente con la partecipazione di uno sviluppatore, che durante il lavoro ha inviato agli assistenti AI diverse centinaia di prompt, decidendo in quale ordine e cosa portare, oltre a indicare i requisiti per il codice risultante in Rust. Dopo aver ricevuto il codice dai vari modelli AI, è stata effettuata una revisione dei risultati e un'analisi del codice per errori e decisioni discutibili.
Alla fine, la versione riscritta in Rust del motore ha superato con successo tutti i 52898 test di compatibilità con ECMAScript del set test262 e 12461 testi di regressione dal progetto Ladybird. La versione in Rust ha dimostrato una corrispondenza completa tra l'AST generato e il bytecode con la versione in C++, senza regressioni rilevate finora. Nei test di JavaScript non è stato inoltre registrato alcun calo delle prestazioni. Inoltre, la corrispondenza completa ha dimostrato un confronto dei risultati di elaborazione dei siti utilizzando le versioni LibJS in C++ e Rust.
La riscrittura dei componenti del browser in Rust è considerata un progetto secondario, che potrebbe richiedere molto tempo. Lo sviluppo principale continua per ora in C++. Le decisioni sulle sottosistemi che saranno riscritti in Rust saranno prese dal team principale di sviluppatori. Il nuovo codice in Rust coesisterà con il codice esistente in C++ attraverso livelli di interoperabilità esplicitamente definiti.
È interessante notare che nel 2024 gli sviluppatori di Ladybird hanno deciso di utilizzare il linguaggio di programmazione Swift, ma hanno riscontrato una scarsa interoperabilità con il codice C++ e un supporto limitato per le piattaforme diverse da Apple. Per quanto riguarda Rust, questo linguaggio ha un ecosistema più maturo per la programmazione di sistema e garanzie di sicurezza. Inoltre, molti sviluppatori di Ladybird sono già familiari con questo linguaggio. Nel 2024, il linguaggio Rust non è stato approvato per l'uso in Ladybird a causa della sua paradigma di sviluppo basato sulla proprietà, che non si adatta perfettamente allo stile orientato agli oggetti del C++.
Andreas Kling ha lavorato un tempo per Nokia occupandosi dello sviluppo di KHTML, ed è stato uno degli sviluppatori di Safari in Apple. Inizialmente, il progetto Ladybird è stato creato come applicazione per il sistema operativo SerenityOS, ma nell'estate del 2024 è diventato un progetto autonomo e ha ricevuto una donazione di 1 milione di dollari. Il browser è scritto in C++ e distribuito sotto licenza BSD. Il progetto sviluppa il proprio motore LibWeb, un interprete JavaScript chiamato LibJS e librerie correlate.
Fonte: opennet.ru
