Для продовження розробки браузера Ladybird вирішено використовувати мову Swift

Розробники експериментального браузера 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

Додати коментар або відгук