LINUX.ORG.RU

Части Ladybird переписывают на Rust при помощи LLM

 , , ,


0

8

Ladybird переходит на частичное использование Rust вместо C++. Разработчики давно искали memory-safe альтернативу: Swift не подошёл из-за слабых возможностей взаимодействия с C++ и ограниченной поддержки вне Apple. Rust оказался лучше: зрелая экосистема, многие контрибьюторы уже знают язык, а Firefox и Chromium уже используют его.

Первым портировали LibJS — движок JavaScript (лексер, парсер, AST, генератор байткода). Работу вёл человек с помощью Claude Code и Codex: ~25 000 строк Rust за две недели вместо нескольких месяцев вручную. Результат — полная идентичность выходных данных с C++-версией, ноль регрессий в тестах (52 898 тестов test262, 12 461 собственных тестов).

Код намеренно стилистически близок к C++-оригиналу — идиоматичность придёт позже. Полного перехода на Rust не планируется: C++ и Rust будут сосуществовать, а портирование будет постепенным и управляться основной командой.

>>> ladybird.org



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от eao197

Т.е. наличие некоторой пессимизации в C++ заложено изначально.

Ну т.е. раст в зерокост умеет лучше, так и запишем

сделали специального синтаксического франкенштейна

0_0 это где? Вот не стороны плюсов предъявлять за синтаксис, уродливие них из живых языков сейчас нет никого. Раст, конечно, тоже далеко не красавец но с семантической читаемостью у него сильно лучше.

кому ублажать компилятор интереснее, чем решать проблемы

Ну здрастье, у плюсов какбе тоже предмет особой гордости их большая типовая строгость, особенно современных плюсцов. Это же суть статтипизации - не будешь ублажать компилятор значить будешь ублажать, долго и дорого, разного рода анализаторы, и сильно больше потратишь сил и времени на отладку.

Плюсцы и я могу покритиковать

Зачем же дело? Вперёд, надо только себя заставить.

Но вот чтобы бегать из темы в тему и кричать какое же это все говно

По моему, вы меня всё-таки с кем-то путаете, я на лоре-то редко пишу и ещё реже критикую плюсы. Иногда не выдерживаю когда полуграмотные хейторочки совсем уж позорную истерику поднимают(чему пример первые страницы данного треда). Реально же - ни хрена не знают не понимают не проверили опытом но мнение имеют. Старайтесь не принимать на свой счёт это я всё в их сторону. Плюсы так-то тоже обросли довольно вонючим какирным культом, даже если он и чуть более оправдан чем у сишки.

zurg
()
Ответ на: комментарий от eao197

Однако, там, где для C++ все еще осталось место, важны как раз небезопасные качества C++

Разве что «игори» на которых плюсы видимо и закончаться.

И если небезопасные возможности C++ – это киллер фичи для специфических областей

Да нет никаких у плюсов особых киллерфичей. Вот это - " возможность использовать union-ы или создание объектов внутри байтовых буферов через placement new" - и прочее копошение с байтами все компилируемые и позиционирумые как «системные» языки умеют(не обязательно в плюсовом виде естественно), тот же раст тут и поострее и прямее будет, хотя ходят слухи что zig в этом удобнее всех сейчас.

zurg
()
Последнее исправление: zurg (всего исправлений: 1)
Ответ на: комментарий от zurg

Ну т.е. раст в зерокост умеет лучше, так и запишем

Запишите, запишите. Еще запишите, что в Rust-е не смогли сделать очень важные вещи, которые есть в C++ (полноценное ООП, исключения, шаблоны, которые являются частью самого языка). Т.е. то, что С++ дает разработчику, пусть и не забесплатно, в Rust-е вообще ничего не стоит, т.к. этого нет.

Вот не стороны плюсов предъявлять за синтаксис, уродливие них из живых языков сейчас нет никого.

Как раз со стороны C++ и предъявлять. Ведь многие (включая вас) позиционируют Rust как адекватную замену C++. И от адекватной замены ждешь лучшего. А тут даже в плане синтаксиса такое же говно. Смогли да, видно, что старались.

Это же суть статтипизации - не будешь ублажать компилятор значить будешь ублажать, долго и дорого

Не нужно свою боль от Rust-а («ублажать, долго и дорого») транслировать на C++.

Зачем же дело? Вперёд, надо только себя заставить.

Мне не нужно себя заставлять, свое недовольство теми или иными вещами в C++ я высказываю и без сопливых. Например:

https://eao197.blogspot.com/2025/11/progc-c.html

https://eao197.blogspot.com/2025/07/progc.html

https://eao197.blogspot.com/2024/08/progc-stdlaunder-stdstartlifetimeas.html

https://eao197.blogspot.com/2024/02/progcflame-c.html

https://eao197.blogspot.com/2023/09/progcidiotic-deducing-this-c23.html

По моему, вы меня всё-таки с кем-то путаете

Нет, не путаю.

Разве что «игори» на которых плюсы видимо и закончаться.

Я на C++ программирую более 30 лет и ни разу меня не заносило в игрострой. Тем не менее за последние 4 года мне довелось поучаствовать в двух проектах, которые начинались с нуля на C++ и к играм это не имело отношения (один стартовал в 2021, второй в 2023).

Да нет никаких у плюсов особых киллерфичей. Вот это - " возможность использовать union-ы или создание объектов внутри байтовых буферов через placement new" - и прочее копошение с байтами все компилируемые и позиционирумые как «системные» языки умеют(не обязательно в плюсовом виде естественно), тот же раст тут и поострее и прямее будет, хотя ходят слухи что zig в этом удобнее всех сейчас.

Похоже, вы думаете, что у C++ основные конкуренты – это Rust и/или Zig. Между тем у всех этих языков основными конкурентами являются безопасные языки со сборкой мусора (Java, Scala, Kotlin, C#, F#, Go и т.д.).

Только вот в C++ можно сделать что-то подобное, а в Java – забабахаешься. Поэтому C++ все еще остается там, где нужно считать и экономить байты, плотно интегрироваться с системой и пр. И все это с нормальным ООП, с возможностью переиспользовать туеву хучу существующих C++ных и С-шных библиотек, и без траха с объяснением лайфтаймов компилятору. И при наличии большого количество разработчиков с опытом С++ за плечами.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Насколько я помню, в Rust-е утечка памяти не считается нарушением memory safety.

И какой вывод ты можешь сделать из этого?

Кстати, вопрос как к знатоку цпп, в цпп утечка считается UB? Нужно ли делать в отношении цпп такой же вывод, как в отношении раста?

unC0Rr ★★★★★
()
Последнее исправление: unC0Rr (всего исправлений: 1)
Ответ на: комментарий от unC0Rr

И какой вывод ты можешь сделать из этого?

Любой. Смысл вопроса мне непонятен.

Кстати, вопрос как к знатоку цпп, в цпп утечка считается UB?

Как бы речь шла не об UB, а о memory safety. На C++ вешают всех собак за отсутствие memory safety и, среди прочего, и утечки.

Тогда как в Rust-е, типа, с memory safety все зашибись. Только вот memory leak из категории memory safety исключим, на всякий случай.

PS. Ну и я не знаток C++, я просто на нем программирую.

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от eao197

Любой. Смысл вопроса мне непонятен.

Ну для чего-то же ты сделал это высказывание?

На C++ вешают всех собак за отсутствие memory safety и, среди прочего, и утечки

Утечки - это больше про Си всё же, хотя и на цпп легко можно сделать утечку, уж точно легче, чем в расте.

Как бы речь шла не об UB, а о memory safety

Понятие memory safety обычно тесно связано с UB. Утечка не приводит к UB ни в расте, ни в цпп.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Ну для чего-то же ты сделал это высказывание?

Для чего-то сделал и оно относилось к тому сообщению, на которое я отвечал.

хотя и на цпп легко можно сделать утечку, уж точно легче, чем в расте.

ХЗ, видимо, вам виднее. Как по мне, так если у человека на C++ получаются утечки, которые не отлавливаются еще на этапе тестирования, то лучше ему на C++ не программировать.

Понятие memory safety обычно тесно связано с UB.

Оставлю сие высказывание на совести того, кто его сделал, т.к. понятия не имеею что оно означает и зачем было сделано.

eao197 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.