Андреас Клинг (Andreas Kling), основателят на уеб браузъра Ladybird, обяви решението си да използва езика Rust при разработката на проекта и да започне пренаписването на части от Ladybird на този език. Като експеримент, JavaScript двигателят LibJS вече е пренаписан от C++ на Rust. LibJS е избран заради доброто покритие с тестове, което улеснява оценката на качеството на портироването.
За ускоряване на портироването бяха ангажирани AI асистентите Claude Code и OpenAI Codex, благодарение на което кодът успя да бъде пренаписан за две седмици. Преводът се осъществяваше стъпка по стъпка с участието на разработчик, който по време на работата изпрати на AI асистентите стотици промпта, определяйки в каква последователност и какво да бъде портировано, както и задавайки изисквания към получения код на Rust. След получаването на кода в различни AI модели, беше проведено рецензиране на резултата и анализ на кода за грешки и съмнителни решения.
В крайна сметка пренаписаната на Rust версия на двигателя успешно премина всички 52898 теста за съвместимост с ECMAScript от набора test262 и 12461 регресионни теста от проекта Ladybird. Версията на Rust демонстрира пълно съответствие на генерирания AST и байткода с версията на C++, без установени регресии. При тестовете на JavaScript също не бяха установени спадове в производителността. Освен това, пълното съответствие показа сравнителното тестване на резултати от обработка на сайтове при използване на версиите LibJS на C++ и Rust.
Пренаписването на компонентите на браузъра на Rust се разглежда като второстепенен проект, който може да отнеме много време. Основната разработка все още продължава на езика C++. Решенията за подсистемите, които ще бъдат пренаписвани на Rust, ще бъдат вземани от основния екип на разработчиците. Новият код на Rust ще съжителства с съществуващия код на C++ чрез ясно определени нива на интероперабилност.
Забележително е, че през 2024 година разработчиците на Ladybird решиха да използват езика за програмиране Swift, но се сблъскаха с недостатъчна интероперативност с кода на C++ и ограничена поддръжка на платформи, различни от Apple. Що се отнася до Rust, за този език е отбелязана по-зряла екосистема за системно програмиране и гаранции за безопасност. Освен това, сред разработчиците на Ladybird има много участници, запознати с този език. През 2024 година езикът Rust не беше одобрен за използване в Ladybird поради парадигмата на разработка основана на собственост, която не съвпада напълно с обектно-ориентирания стил на C++.
Андреас Клинг някога е работил в компанията Nokia и се е занимавал с разработката на KHTML, а след това в Apple е бил един от разработчиците на Safari. Първоначално проектът Ladybird беше създаден като приложение за операционната система SerenityOS, но през лятото на 2024 година беше отделен в самостоятелен проект и получи дарение от 1 милион долара. Браузерът е написан на C++ и се разпространява под лицензия BSD. В проекта се развиват собствен движещ механизъм LibWeb, JavaScript интерпретатор LibJS и съпътстващи библиотеки.
Източник: opennet.ru
