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