Андрэас Клінг (Andreas Kling), заснавальнік web-браўзэра Ladybird, абвясціў аб рашэнні задзейнічаць мову Rust пры распрацоўцы праекту і пачатку перапісвання частак Ladybird на дадзенай мове. У якасці эксперыменту з C++ на Rust ужо перапісаны JavaScript-рухавічок LibJS. LibJS абраны з-за добрага пакрыцця тэстамі, які спрашчае адзнаку якасці партавання.
Для паскарэння партавання былі задзейнічаны AI-асістэнты Claude Code і OpenAI Codex, дзякуючы чаму код удалося перапісаць за два тыдні. Пераклад ажыццяўляўся паступальна пры ўдзеле распрацоўніка, які падчас прац адправіў AI-асістэнтам некалькі сотняў прамптаў, вырашаючы ў якой паслядоўнасці і што партаваць, а таксама паказваючы патрабаванні да выніковага кода на Rust. Пасля атрымання кода ў розных AI-мадэлях быў праведзена рэцэнзаванне выніку і аналіз кода на прадмет памылак і сумнеўных рашэнняў.
У выніку перапісаны на Rust варыянт рухавічка паспяхова прайшоў усе 52898 тэстаў на сумяшчальнасць з ECMAScript з набору test262 і 12461 рэгрэсійных тэкстаў ад праекта Ladybird. Варыянт на Rust прадэманстраваў поўнае супадзенне генераванага AST і байткода з варыянтам на З++, рэгрэсій пакуль не выяўлена. У тэстах 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 млн. долараў. Браўзэр напісаны на мове З++ і распаўсюджваецца пад ліцэнзіяй BSD. Праектам развіваюцца ўласны рухавічок LibWeb, JavaScript-інтэрпрэтатар LibJS і спадарожныя бібліятэкі.
Крыніца: opennet.ru
