Розробники експериментального браузера Ladybird оголосили про намір використовувати мову програмування Swift як основний для свого проекту. Включення до складу коду на Swift планується розпочати восени після виходу релізу Swift 6 (використовувати гілку Swift 5 заважає прив'язка до старої версії Clang, несумісної з поточною кодовою базою Ladybird на С++). Завдяки можливості поєднання коду на С++ та Swift, впровадження Swift буде здійснюватися поступово без переписування наявного коду.
Вибір Swift обумовлений низкою переваг, включаючи безпечні методи роботи з пам'яттю, захист від станів гонки, сучасний синтаксис та ергономіку. Особливе значення для команди Ladybird має об'єктно-орієнтована природа Swift, що дає змогу точніше моделювати веб-специфікації та внутрішні компоненти браузера. Розробники також відзначають покращення підтримки Swift для не-Apple платформ і активну роботу над сумісністю з C++, що відкриває шлях до поступового впровадження мови в проект. Незважаючи на історичні зв'язки Swift з Apple, мова стає все більш незалежною, про що свідчить, наприклад, перенесення його репозиторію в окрему організацію на GitHub.
Андреас Клінг, засновник проекту Ladybird, поділився своїми думками про Rust. На думку Клінга, хоча Rust має вражаючу екосистему, він менш зручний для розробки довготривалих програм з великими складними графами об'єктів. Крім того, Клінг охарактеризував співтовариство Rust як "токсичне".
Нагадаємо, що спочатку браузер Ladybird розвивався у рамках проекту з розробки операційної системи SerenityOS. У червні 2024 року Андреас Клінг, який свого часу працював у компанії Nokia і займався розробкою Safari, вирішив відокремити проект браузера від проекту операційної системи, і повністю присвятити свій час його розробці. У липні проект отримав пожертву в 1 млн. доларів і розпочав формування некомерційної організації Ladybird Browser Initiative.
Браузер написаний мовою С++ та поширюється під ліцензією BSD. Проектом розвивається власний двигун LibWeb, JavaScript-інтерпретатор LibJS, бібліотека малювання тексту та 2D-графіки LibGfx, двигун для регулярних виразів LibRegex, XML-парсер LibXML, інтерпретатор проміжного коду WebAssembly (LibWasm), бібліотека кодувань LibTextCodec, парсер для розмітки Markdown (LibMarkdown), бібліотеки з криптографічними примітивами (LibCrypto, LibTLS), бібліотека для роботи з архівами LibArchive, бібліотеки для відтворення звуку та відео (LibAudio, LibVideo) та бібліотека LibC перетворення часу, введення/виведення та обробка MIME-типів.
У Ladybird застосовується багатопроцесна архітектура, в якій процес, що займається формуванням інтерфейсу, відокремлений від процесів, що забезпечують обробку web-контенту, відправлення запитів по мережі, декодування зображень і зберігання Cookie. Пов'язані з декодуванням зображень та мережевою взаємодією обробники виділені в окремі процеси для посилення ізоляції та захисту. Для кожної вкладки використовується окремий процес обробки веб-контенту ізольований від решти системи. Для побудови інтерфейсу в macOS використовується AppKit, в Android — рідний для даної платформи API створення графічного інтерфейсу, але в інших платформах — Qt. Підтримуються основні web-стандарти (браузер проходить тести Acid3), HTTP/1.1 та HTTPS. Графічний інтерфейс оформлений у класичному стилі та підтримує вкладки.
Джерело: opennet.ru
