Gli sviluppatori del browser sperimentale Ladybird hanno annunciato l'intenzione di utilizzare il linguaggio di programmazione Swift come linguaggio principale per il loro progetto. L'inclusione del codice in Swift è prevista per l'autunno, dopo il rilascio di Swift 6 (l'uso della versione Swift 5 è ostacolato dal legame con una vecchia versione di Clang, non compatibile con l'attuale base di codice C++ di Ladybird). Grazie alla possibilità di integrare codice C++ e Swift, l'implementazione di Swift avverrà gradualmente senza la necessità di riscrivere il codice esistente.
La scelta di Swift è motivata da una serie di vantaggi, tra cui metodi sicuri per gestire la memoria, protezione contro condizioni di gara, sintassi moderna ed ergonomia. Un aspetto particolarmente importante per il team di Ladybird è la natura orientata agli oggetti di Swift, che consente una modellazione più accurata delle specifiche web e dei componenti interni del browser. Gli sviluppatori notano anche il miglioramento del supporto di Swift per piattaforme non Apple e un lavoro attivo sulla compatibilità con C++, che apre la strada a un'implementazione graduale del linguaggio nel progetto. Nonostante i legami storici di Swift con Apple, il linguaggio sta diventando sempre più indipendente, come dimostra, ad esempio, il trasferimento del suo repository in un'organizzazione separata su GitHub.
Andreas Kling, fondatore del progetto Ladybird, ha condiviso le sue opinioni su Rust. Secondo Kling, sebbene Rust abbia un ecosistema impressionante, risulta meno comodo per lo sviluppo di programmi a lungo termine con grafi oggettuali complessi. Inoltre, Kling ha descritto la comunità di Rust come "tossica".
Ricordiamo che inizialmente il browser Ladybird è stato sviluppato all'interno del progetto per lo sviluppo del sistema operativo SerenityOS. Nel giugno 2024, Andreas Kling, che in passato ha lavorato per Nokia e ha contribuito allo sviluppo di Safari, ha deciso di separare il progetto del browser da quello del sistema operativo e di dedicarsi completamente al suo sviluppo. A luglio, il progetto ha ricevuto una donazione di 1 milione di dollari e ha iniziato a formare un'organizzazione no-profit nota come Ladybird Browser Initiative.
Il browser è scritto in C++ e distribuito con licenza BSD. Il progetto sviluppa un motore chiamato LibWeb, un interprete JavaScript chiamato LibJS, una libreria per il rendering di testo e grafica 2D chiamata LibGfx, un motore per le espressioni regolari chiamato LibRegex, un parser XML chiamato LibXML, un interprete per il codice intermedio WebAssembly (LibWasm), una libreria per la gestione di Unicode (LibUnicode), una libreria per la conversione di codifiche testuali (LibTextCodec), un parser per il markup Markdown (LibMarkdown), e librerie per primitive crittografiche (LibCrypto, LibTLS), una libreria per la gestione degli archivi (LibArchive), oltre a librerie per la riproduzione di audio e video (LibAudio, LibVideo), e infine la libreria LibCore con un insieme di funzioni utili, come la conversione di tempo, input/output e gestione dei tipi MIME.
In Ladybird viene utilizzata un'architettura multiprocesso, in cui il processo responsabile della creazione dell'interfaccia è separato dai processi che gestiscono il contenuto web, inviano richieste in rete, decodificano immagini e gestiscono i cookie. I gestori collegati alla decodifica delle immagini e all'interazione di rete sono isolati in processi separati per migliorare l'isolamento e la sicurezza. Ogni scheda utilizza un processo separato per la gestione del contenuto web, isolato dal resto del sistema. Per costruire l'interfaccia su macOS viene utilizzato AppKit, su Android l'API nativa di creazione dell'interfaccia grafica per quella piattaforma, mentre su altre piattaforme viene utilizzato Qt. Sono supportati i principali standard web (il browser supera i test Acid3), HTTP/1.1 e HTTPS. L'interfaccia grafica è progettata in uno stile classico e supporta le schede.
Fonte: opennet.ru
