LINUX.ORG.RU

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

 , , ,


0

6

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

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

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

Отличный план, только в нём не хватает колгот.

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

Буду писать на раст.

Ну-ну, ну-ну. Поскольку ИИ сейчас активно тренируют на генерацию кода именно на Rust-е, то не удивлюсь тому, что Rust-разработчики будут выгнаны на мороз ИИ-шкой чуть ли не следом за JS-, Java- и C#-программистами.

В какой-то другой теме один из ИИ-евангелистов писал, что Rust как раз отличный язык для генерации в него кода ИИ-шкой.

Как тебе план?

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

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

Ну так раз раст отличный язык для генерации него кода ИИ-шкой, то я с ИИ-шкой и растом идеально в него впишусь. Что не так?

К слову, о вымирании программистов я писал еще в 2013 - тогда программист один мне рассказывал, что такого быть не может, потому что не может быть никогда. Потому что программированеи - это больше похоже на решение теорем.

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

Просто программирование переходит из разряда «получения тайных знаний избранными» в «рутинную работу над проектом теми, кто понимает что нужно проекту». И тебя это пугает.

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

то я с ИИ-шкой и растом идеально в него впишусь.

Либо не впишетесь из-за того, что роль человека в этом деле снизится до минимума и на эти считанные проценты от текущего числа будут претендовать толпы:

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

Что не так?

То, что вы таки в белом пальто, раз считаете, что в щастливом будущем, где 95% процентов программистов останутся без работы из-за ИИ, лично вы будете востребованны.

К слову, о вымирании программистов я писал еще в 2013

Точность прогнозов внушаить.

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

то я с ИИ-шкой и растом идеально в него впишусь. Что не так?

А не станут ли за такую работу платить три копейки?

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

А не станут ли за такую работу платить три копейки?

Станут, да еще и по закону «революция пожирает своих детей» еще и не ему.

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

Инструмент как инструмент, со своими достоинствами и недостатками.

Есть даже в старых стандартах, не требует дополнительных сторонних библиотек в этом случае.

Легко написать перегрузку для своего типа.

Для отладочных целей в моих сценариях применения оказался гораздо удобнее, чем std::print/fmt::print.

Для демонстрационных целей на коротких примерах кода просто отлично. Любой изучавший C++ хотя бы с конца 1990-х поймет использование std::cout.

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

А зачем мне больше? Мне сейчас с головой хватило бы около 4 тысяч в месяц. Но у меня и того нету. Так что у меня перспективы, как у того Шарика из анекдота.

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

фортрановскую программу

Он мне нравился, кстати.

Fortran IV?

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

Есть даже в старых стандартах, не требует дополнительных сторонних библиотек в этом случае.

Как и printf.

Легко написать перегрузку для своего типа

Для того, чтобы написать MyType.print или toStr шибко париться тоже не надо.

Для отладочных целей в моих сценариях применения оказался гораздо удобнее, чем std::print/fmt::print.

Любой изучавший C++ хотя бы с конца 1990-х поймет использование std::cout.

Если ты используешь и привык — конечно. Я же сетую на то, что это оказалось в стандартной библиотеке. Могло же не оказаться? Мог вместо iostreams там оказаться промежуточный вариант между printf и fmt?

Для демонстрационных целей на коротких примерах кода просто отлично.

Как и printf?

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

Это типа сейчас сарказм?

4k USD или 4k EUR или 4k GBP или 4k CHF или даже 4k BYN – это несколько разные суммы, если их свести к одной единице изменения.

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

Как и printf.

За использование printf в C++ нужно руки отрывать.

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

Для того, чтобы написать MyType.print или toStr шибко париться тоже не надо.

Если я напишу operator<< для std::ostream, то это будет автоматически поддерживаться для разных типов ostream-ов. Не обязательно для std::cout.

Я же сетую на то, что это оказалось в стандартной библиотеке. Могло же не оказаться?

ХЗ, история не знает сослагательного наклонения. Когда я изучал С++ в начале 1990-ых, то cout там уже был. Как и рекомендации не использовать printf.

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

Это не сарказм. Это точный подсчет минимально необходимого с учетом инфляции. 10 лет назад это было 2,5р в месяц.

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

Это не сарказм. Это точный подсчет минимально необходимого с учетом инфляции.

Афигеть. Я за прошлый месяц только за квартиру заплатил 6k российскими.

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

У меня за дом 100 квадратов выходит что то около 550р в месяц сейчас. Плюс отопление на год около 27к.

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

…код c ручным delete в 2026м …

Не делайте так (с) врач, которому пациент, живущий напротив женской бани, пришел жаловаться весь в синяках и бинтах.

Да тут вам в Раст компилятор напомнит, что так нельзя. Но грубое не соблюдение в C++ правила R.3: A raw pointer (a T*) is non-owning выглядит как слабоумие и отвага.

Считайте, что как только у вас взаимодействие с сырым указателем, то неявно вы находитесь в блоке «unsafe».

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

Раст компилятор не просто напоминает, что так нельзя - он не соберет код. В плюсах же это просто правило - можно соблюдать, можно не соблюдать.

Это просто пример один из.

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

Конечно. И хорошо если вообще будут платить.

sabacs
()
Ответ на: комментарий от LightDiver

Даже на субсидируемую гречку не хватит — протянешь лапы. Так что не заливай. :)

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

ИИшка идеально пишет на луа 5.1, например. Но если ты попробуешь сделать аддон для вов 3.3.5, у тебя ничего не получится.

Точно так же шуруповерт идеально вкручивает шурупы, но куда ты будешь их вкручивать? Шуруповерт знает куда вкрутить шуруп?

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

Инструмент это продолжение твоего разума. Если ты не знаешь как и куда вкрутить шуруп, никакой самый лучший шуруповерт тебе не поможет - ты просто испортишь материал.

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

В том то и дело, что не знает. У нее есть различные варианты и все. Но контекст дожен объяснить ей ты. Не существует никаких «самых лучших путей». Есть варианты использования инструмента. В разные моменты разныеы варианты использования могут быть более оптимальными.

Иногда они могут подсказать интересные решения. Например, мне нужно было отслеживать нажатие пробела с игре. Официально этого сделать было невозможно. Но ИИшка нашла вариант - использовать отслеживание падения в игре. Пробел жмет прыжок, в этот момент начинается падение и мы его видим.

ИИшки хорошие асистенты, но не ведущие.

Вот сейчас я пытаюсь написать глобальные хоткеи для винды на раст. Я не использовал винду с 2006 и не знаю ее нюансов. И никакая ИИшка не может мне помочь это сделать нормально. Все выходит криво и работает через жопу.

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

Нет, не сможет. Ты попробуй с ними поработать сам и поймешь.

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

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

Нет, не сможет. Ты попробуй с ними поработать сам и поймешь.

Прямо шовинизм какой-то. Иные уборщицы поумнее некоторых программистов.

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

Вопрос не в уме, а в знании области применения, в знании языка, в знании архитектуры ЭВМ и много чего еще.

Любой может ударить кувалдой, но надо знать как и куда.

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

ИИшка даст тебе именно то, что ты попросишь, но ты дожен знать что просить.

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

Любой может ударить кувалдой, но надо знать как и куда.

Фокус в том, что ИИ забирает на себя эти знания.

Если все пойдет так, как ИИ-евангелисты пророчат, то роль человека по мере усиления возможностей ИИ сведется к:

  • промптам (но эту роль, скорее заберут себе специалисты по предметной области);
  • ревью получившегося решения (поверхностное понимание того, что и как делает сгенерированный код, чтобы исключить правдоподобные галюцинации;
  • (самое главное) несение ответственности за получившийся код.

Т.е. работа будет больше похожа на работу менеджера: сам ничего не делаешь, делегируешь другим, но должен понимать где, что и как делается, при этом ответственность полностью на тебе.

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

Понимаешь, у ИИ есть все знания, но проблема в том, что все они правильные. Но не все они правильные именно тут и сейчас.

Чтобы ИИшка смогла самостоятельно оценивать все нюансы, надо дать ей все органы чувств человека, мотивацию, саморазвитие, встроить в общество. Дать косяки человека…надо создать полноценный разумный развивающийся организм.

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

знании области применения, в знании языка, в знании архитектуры ЭВМ и много чего еще.

ИИшка как раз освобождает от этого, как уже освободила от обязанности знать систему команд процессора использование ЯВУ.

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

ИИшка освобождает не от этого, а от рутины. Она не знает контекста ситуации, пока ты его не объяснишь. Она знает лишь все правильные варианты.

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

Вот вчего два дня назад была ситуация. Один игрок решил научиться программированию и взялся писать аддон. Просит у ИИшки код. Код не работает.

local SAtest = {}
local eventFrame = CreateFrame("Frame")
eventFrame:SetScript("OnEvent", function(self, event, text)
table.insert(SAtest, text)
print("Пошло поехало: " ..text)
end)
eventFrame:RegisterEvent("CHAT_MSG_SYSTEM")

Все верно же? Абсолютно рабочий код..в теории. Да?

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

А с чего ты решил, что сишники и плюсовики не выучат раст? Выучим. Это раз. А дальше вопрос: если сишники и плюсовики потеряют работу из-за ИИ, то с чего бы растовики не потеряют?

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

Просит у ИИшки код

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

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

Степень адаптивности. У того, кто уже сейчас более консервативен, дальше будет только больше проблем с новым.

Плюс они уже сейчас сопротивляются работе с ИИ, а кое кто изучает как работать. Это уже преимущество.

Представь, что ты взял в руки шуруповерт впервые в жизни, до этого 30 лет работал отверткой. А рядом новичков, который в профессии всего 5 лет. Но эти пять лет он работает шуруповертом.

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

Конкретно в примере выше ты никакой контейнер не сделаешь. В программировании 80% проблем не язык, не среда, а область применения. Нужно понимать и знать именно ее.

Вот код выше. Без понимания области применения, ты врядли поймешь что не так. Все правильно, но ничего не работает.

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

Добавляешь агенту скилл для захвата окошка приложения, пишешь в AGENTS.md «Хочу чтобы было вот так вот». Все современные модели - это VLM-ки (vision language models), то есть они могут «посмотреть» что у них там получается.

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

Иии… Ничего не сработает. Правда здорово?

Вы забываете, что всем надо учиться, и ИИшкам тоже. Для вас вселенная почему то статична - замерла где то в прошлом.

Есть не самые очевидные механики, до которых надо дойти. Все время появляются новые.

Тот код выше это технология 2006 года, если что. ИИшкам скормили всю существующую инфу. Я много раз объяснял что, как почему. Но даже с этим пока что они не могут правильно без подсказок сделать как надо. Я понимаю, что они тоже развиваются, но и мир не стоит на месте. Никакая ИИшка даже на процент не может приблизиться к уровню нейросети человека на данный момент. У них преимущества в других областях, где они реально хороши - и это область инструмента.

Посмотрим что будет дальше.

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

А с чего ты решил, что мы не учим инструменты?. Я вот каждый день работаю с Cursor AI, VS Code + Amazon Q, Amazon Kiro.

И ты не ответил на второй вопрос в моем предыдущем сообщении.

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

Иии… Ничего не сработает. Правда здорово?

Агент будет пробовать разные стратегии, пока не заработает или деньги на оплату токенов не кончатся. Если дать ему доступ в интернет, то будет лазить по сети, искать возможные причины проблемы.

ИИшкам скормили всю существующую инфу.

Поэтому теперь модели предназначенные для кодинга улучшают с помощью обучения с подкреплением: решил задачу - на тебе плюшку, не решил - не делай так больше. И последние модели вроде Claude 4.6 могут самостоятельно работать над задачей без входа в цикл или захода в тупик в течении десятков часов.

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

Что выдают чат-боты, в том числе Claude, несложно посмотреть самому. Смысл агента в интеграции со средой разработки.

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

Я вижу ты не понимаешь как будет устроено будущее. Будет ИИ-компания в которой будут работать ИИ-джуны, ИИ-мидлы, ИИ-*… из кожаных будет только менеджер. :)

sabacs
()
Ответ на: комментарий от red75prim

"App unavailable

Unfortunately, Claude is only available in certain regions right now. Please contact support if you think you’re getting this message in error."

Информативненько.. Не знают они в чем проблема пока что. Можно конечно обучить конкретно на этом примере, но вселенная не статична. Это вечная гонка обучения.

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

Динамика, понимаешь?

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