Os desenvolvedores do navegador experimental Ladybird anunciaram sua intenção de usar a linguagem de programação Swift como a principal para seu projeto. A inclusão de código Swift deve começar no outono, após o lançamento do Swift 6 (usar a versão 5 do Swift é complicado devido à dependência da velha versão do Clang, que é incompatível com a atual base de código em C++ do Ladybird). Graças à possibilidade de combinar código em C++ e Swift, a implementação do Swift ocorrerá gradualmente sem a necessidade de reescrever o código existente.
A escolha do Swift é motivada por uma série de vantagens, incluindo métodos seguros de gerenciamento de memória, proteção contra condições de corrida, sintaxe moderna e ergonomia. A natureza orientada a objetos do Swift é especialmente significativa para a equipe do Ladybird, pois permite modelar mais precisamente as especificações da web e os componentes internos do navegador. Os desenvolvedores também observam a crescente compatibilidade do Swift para plataformas não-Apple e o trabalho ativo na sua compatibilidade com C++, o que abre caminho para a implementação gradual da linguagem no projeto. Apesar das conexões históricas do Swift com a Apple, a linguagem está se tornando cada vez mais independente, como evidenciado pela transferência de seu repositório para uma organização separada no GitHub.
Andreas Kling, fundador do projeto Ladybird, compartilhou seus pensamentos sobre Rust. Na opinião de Kling, embora Rust tenha um ecossistema impressionante, ele é menos conveniente para o desenvolvimento de programas de longa duração com gráficos de objetos complexos. Além disso, Kling caracterizou a comunidade Rust como "tóxica".
Lembramos que o navegador Ladybird foi inicialmente desenvolvido como parte de um projeto para criar um sistema operacional chamado SerenityOS. Em junho de 2024, Andreas Kling, que trabalhou na Nokia e esteve envolvido no desenvolvimento do Safari, decidiu separar o projeto do navegador do projeto do sistema operacional e dedicar seu tempo completamente a seu desenvolvimento. Em julho, o projeto recebeu uma doação de 1 milhão de dólares e começou a formar a organização sem fins lucrativos Ladybird Browser Initiative.
O navegador é escrito em C++ e é distribuído sob a licença BSD. O projeto desenvolve seu próprio motor LibWeb, interpretador JavaScript LibJS, biblioteca de renderização de texto e gráficos 2D LibGfx, motor de expressões regulares LibRegex, parser XML LibXML, interpretador de código intermediário WebAssembly (LibWasm), biblioteca para trabalhar com Unicode LibUnicode, biblioteca para conversão de codificações de texto LibTextCodec, parser para markdown (LibMarkdown), bibliotecas com primitivas criptográficas (LibCrypto, LibTLS), biblioteca para trabalhar com arquivos compactados LibArchive, bibliotecas para reprodução de som e vídeo (LibAudio, LibVideo) e a biblioteca LibCore com um conjunto comum de funções úteis, como conversão de tempo, entrada/saída e manipulação de tipos MIME.
O Ladybird utiliza uma arquitetura multiprocessada, onde o processo responsável pela interface é separado dos processos encarregados de processar o conteúdo da web, enviar solicitações pela rede, decodificar imagens e gerenciar cookies. Os manipuladores de decodificação de imagens e interação com a rede foram isolados em processos separados para aumentar a proteção e a segurança. Cada aba usa um processo separado para processar o conteúdo da web, isolado do restante do sistema. Para construir a interface no macOS é utilizado o AppKit, no Android a API nativa da plataforma, e nas demais plataformas, o Qt. Os principais padrões da web são suportados (o navegador passa nos testes Acid3), HTTP/1.1 e HTTPS. A interface gráfica é projetada em um estilo clássico e suporta abas.
Fonte: opennet.ru
