Gli sviluppatori del browser sperimentale Ladybird hanno annunciato l'intenzione di utilizzare il linguaggio di programmazione Swift come principale per il loro progetto. L'inclusione del codice in Swift è prevista per l'autunno, dopo l'uscita della versione Swift 6 (utilizzare il ramo Swift 5 è problematico a causa della sua dipendenza dalla vecchia versione di Clang, non compatibile con l'attuale base di codice di Ladybird in C++). Grazie alla possibilità di combinare codice in C++ e Swift, l'integrazione di Swift avverrà gradualmente senza riscrivere il codice esistente.
La scelta di Swift è motivata da diversi vantaggi, tra cui metodi sicuri per la gestione della memoria, protezione dagli stati di race, sintassi moderna ed ergonomia. La natura orientata agli oggetti di Swift è particolarmente importante per il team di Ladybird, in quanto consente di modellare più accuratamente le specifiche del web e i componenti interni del browser. Gli sviluppatori notano anche il miglioramento del supporto per Swift su piattaforme non Apple e il lavoro attivo sulla compatibilità con C++, che apre la strada per l'integrazione graduale del linguaggio nel progetto. Nonostante le connessioni storiche 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 possieda un'ecosistema impressionante, è meno conveniente per lo sviluppo di programmi a lungo termine con grafi di oggetti complessi. Inoltre, Kling ha descritto la comunità di Rust come "tossica".
Ricordiamo che inizialmente il browser Ladybird è stato sviluppato nell'ambito di un progetto per la creazione del sistema operativo SerenityOS. A giugno 2024, Andreas Kling, che in passato ha lavorato per Nokia e si è occupato dello sviluppo di Safari, ha deciso di separare il progetto del browser da quello del sistema operativo, dedicando tutto il suo tempo allo sviluppo di quest'ultimo. A luglio, il progetto ha ricevuto una donazione di 1 milione di dollari e ha iniziato a formare l'organizzazione senza scopo di lucro Ladybird Browser Initiative.
Il browser è scritto in C++ e distribuito con licenza BSD. Il progetto sviluppa il proprio motore LibWeb, l'interprete JavaScript LibJS, la libreria di rendering del testo e grafica 2D LibGfx, il motore per espressioni regolari LibRegex, il parser XML LibXML, l'interprete di codice intermedio WebAssembly (LibWasm), la libreria per lavorare con Unicode LibUnicode, la libreria per la conversione di codifiche testuali LibTextCodec, il parser per il markup Markdown (LibMarkdown), librerie con primitive crittografiche (LibCrypto, LibTLS), la libreria per la gestione degli archivi LibArchive, librerie per la riproduzione di audio e video (LibAudio, LibVideo) e la libreria LibCore con un insieme generale di funzioni utili, come la conversione di tempo, input/output e gestione dei tipi MIME.
Ladybird utilizza un'architettura multiprocesso, in cui il processo dedicato alla creazione dell'interfaccia è separato dai processi che gestiscono il contenuto web, inviano richieste di rete, decodificano le immagini e gestiscono i cookie. I gestori legati alla decodifica delle immagini e all'interazione di rete sono stati isolati in processi separati per migliorare l'isolamento e la sicurezza. Per ciascun tab viene utilizzato un processo separato per la gestione del contenuto web, isolato dal resto del sistema. Per la costruzione dell'interfaccia in macOS si utilizza AppKit, in Android l'API nativa per la creazione dell'interfaccia grafica, mentre su altre piattaforme si utilizza Qt. Sono supportati i principali standard web (il browser passa i test Acid3), HTTP/1.1 e HTTPS. L'interfaccia grafica è realizzata in stile classico e supporta le schede.
Fonte: opennet.ru
