Los desarrolladores del navegador experimental Ladybird han anunciado su intención de utilizar el lenguaje de programación Swift como principal para su proyecto. Se planea comenzar a incorporar código en Swift en otoño, tras el lanzamiento de Swift 6 (usar la rama de Swift 5 resulta complicado debido a la dependencia de una versión antigua de Clang, incompatible con la actual base de código de Ladybird en C++). Gracias a la posibilidad de combinar código en C++ y Swift, la implementación de Swift se llevará a cabo gradualmente sin necesidad de reescribir el código existente.
La elección de Swift se basa en una serie de ventajas, que incluyen métodos seguros para el manejo de memoria, protección contra condiciones de carrera, sintaxis moderna y ergonomía. La naturaleza orientada a objetos de Swift tiene una importancia especial para el equipo de Ladybird, ya que permite modelar de manera más precisa las especificaciones web y los componentes internos del navegador. Los desarrolladores también destacan el mejoramiento del soporte de Swift para plataformas no Apple y el trabajo activo en la compatibilidad con C++, lo que abre el camino para la gradual incorporación del lenguaje en el proyecto. A pesar de sus vínculos históricos con Apple, el lenguaje se está volviendo cada vez más independiente, como lo demuestra, por ejemplo, la transferencia de su repositorio a una organización separada en GitHub.
Andreas Kling, fundador del proyecto Ladybird, compartió sus pensamientos sobre Rust. Según Kling, aunque Rust tiene un ecosistema impresionante, es menos conveniente para desarrollar programas de larga duración con gráficos de objetos complejos. Además, Kling describió la comunidad de Rust como "tóxica".
Cabe recordar que inicialmente el navegador Ladybird se desarrollaba en el marco de un proyecto para el desarrollo del sistema operativo SerenityOS. En junio de 2024, Andreas Kling, quien en su momento trabajó en Nokia y estuvo involucrado en el desarrollo de Safari, decidió separar el proyecto del navegador del proyecto del sistema operativo para dedicar completamente su tiempo a su desarrollo. En julio, el proyecto recibió una donación de 1 millón de dólares y comenzó a formar la organización sin ánimo de lucro Ladybird Browser Initiative.
El navegador está escrito en C++ y se distribuye bajo la licencia BSD. El proyecto desarrolla su propio motor LibWeb, el intérprete de JavaScript LibJS, la biblioteca de renderizado de texto y gráficos 2D LibGfx, el motor para expresiones regulares LibRegex, el analizador XML LibXML, el intérprete de código intermedio WebAssembly (LibWasm), la biblioteca para trabajar con Unicode LibUnicode, la biblioteca para la conversión de codificaciones de texto LibTextCodec, el analizador para el marcado Markdown (LibMarkdown), las bibliotecas con primitivos criptográficos (LibCrypto, LibTLS), la biblioteca para trabajar con archivos comprimidos LibArchive, las bibliotecas para reproducir audio y video (LibAudio, LibVideo) y la biblioteca LibCore con un conjunto general de funciones útiles, como la conversión de tiempo, entrada/salida y procesamiento de tipos MIME.
Ladybird emplea una arquitectura multiproceso, donde el proceso encargado de la interfaz está separado de los procesos que manejan el contenido web, envían solicitudes a través de la red, decodifican imágenes y almacenan cookies. Los manejadores relacionados con la decodificación de imágenes y la interacción en red están separados en procesos independientes para mejorar la aislamiento y seguridad. Cada pestaña utiliza un proceso separado para el manejo de contenido web, aislado del resto del sistema. Para construir la interfaz en macOS se utiliza AppKit, en Android se usa la API nativa de creación de interfaces gráficas de esa plataforma, y en otras plataformas, Qt. Se admiten los principales estándares web (el navegador pasa las pruebas Acid3), HTTP/1.1 y HTTPS. La interfaz gráfica está diseñada en un estilo clásico y soporta pestañas.
Fuente: opennet.ru
