LINUX.ORG.RU
ФорумTalks

Автор платформы Bun проводит эксперимент по переписыванию с Zig на Rust

 , , , ,


0

2

https://www.opennet.ru/opennews/art.shtml?num=65379:

Джарред Самнер (Jarred Sumner), создатель и основной разработчик серверной JavaScript-платформы Bun (bun.sh), создал Git-ветку, в которой приступил к переписыванию Bun с языка Zig на Rust. Переписывание ведётся с использование AI-ассистента Claude, для которого сформировано отдельное руководство по портированию. По словам Джарреда пока это лишь эксперимент, а не официальный порт, и высока вероятность, что дальше эксперимента дело не зайдёт и переписанный код не будет использован.

Портирование ещё не завершено, и на текущем этапе весь интерес к проекту сосредоточен на том, чтобы оценить насколько работоспособным получится порт, будет ли он проходить набор тестов основного проекта и сложно ли будет сопровождать новый код. В конечном счёте планируется провести сравнительное тестирование вариантов Bun на Zig и Rust.

В декабре прошлого года проект Bun поглотила компания Anthropic, поэтому у Джарреда есть ресурсы для вовлечения в портирование передовых AI-моделей Claude. Платформа Bun применяется в продуктах Claude Code и Claude Agent SDK, и компания Anthropic заинтересована в повышении её качества и развитии. Bun является одним из самых успешных проектов на языке Zig, при этом у разработчиков Zig и Bun расходятся мнения в отношении применения AI в процессе разработки. В проекте Zig утверждён жёсткий запрет применения больших языковых моделей при подготовке pull-запросов, issue и комментариев (запрещён даже перевод через AI неанглоязычных комментариев).

Введение подобных ограничений объясняется разработчиками Zig негативным опытом в рецензировании созданных через AI pull-запросов, которые отнимают ресурсы и время (например, отмечаются бессмысленные изменения, AI-галлюцинации и раздутые коммиты в 10 тысяч строк). Кроме того, проект Zig позиционирует себя как ориентированный на участников, а не вносимый ими вклад в разработку - главной целью принятия pull-запросов называется не добавление нового кода, а помощь в развитии новых участников.

Автор Bun не согласен с запретом AI в Zig и полагает, что AI-слоп останется ностальгическим пережитком 2025 и 2026 годов, а разработка открытого ПО эволюционирует до запрета приёма кода от людей. Люди будут обсуждать проблемы, ставить задачи и расставлять приоритеты, а написание кода и отправка изменений в репозитории станет уделом AI. В качестве причины экспериментов с переписыванием на Rust также отмечается желание устранить проблемы в Bun, вызванные утечками памяти, и неприемлемая для крупных проектов политика Zig в отношении принятия в язык изменений, нарушающих совместимость.

Из-за запрета применения AI разработчики Bun вынуждены поддерживать собственный форк инструментария Zig, в котором благодаря применению AI удалось в 4 раза ускорить компиляцию за счёт распараллеливания семантического анализа и генерации кода. При этом судя по комментарию одного из разработчиков Zig причина отклонения патчей не в AI, а в том, что распараллеливание семантического анализа затрагивает не только компилятор, но и сам язык - чтобы реализовать предложенную функциональность без ошибок и несовместимостей, требуется внесение изменений в язык Zig. Вместо распараллеливания, разработчики Zig развивают инкрементальную компиляцию, которая по их предположению позволит на порядок повысить скорость компиляции.

JavaScript-платформа Bun развивается как высокопроизводительный аналог платформ Node.js и Deno. Проект разрабатывается с оглядкой на обеспечение совместимости с серверными приложениями для Node.js и поддерживает большую часть API Node.js. В состав платформы входит набор инструментов для создания и выполнения приложений на языках JavaScript и TypeScript, а также runtime для выполнения JavaScript-приложений без браузера, пакетный менеджер (совместимый с NPM), инструментарий для выполнения тестов, система сборки самодостаточных пакетов и прослойка для встраивания обработчиков, написанных на языке Си. По производительности Bun заметно обгоняет Deno и Node.js (в тестах на базе фреймворка React платформа Bun в 2 раза опережает Deno и почти в 5 раз Node.js). Для выполнения JavaScript задействован JavaScript-движок JavaScriptCore и компоненты проекта WebKit с дополнительными патчами.

★★★★★

Последнее исправление: dataman (всего исправлений: 1)

Причина смотрится намного интереснее, чем сам процесс переписывания.

Нашла коса на камень)

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

С разработки без ии попытка уйти к разработке с ии. Тебе же наоборот нравиться должно, нет?

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

Ещё интереснее причина причины -

бессмысленные изменения, AI-галлюцинации и раздутые коммиты в 10 тысяч строк

- т.е. в zig тупо попросили хотя бы читать то, что им коммитят, и не коммитить бред!! Но это настолько возмутительно, что лучше переписать на rust.

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

Ну запрет у них реально слишком жесткий.

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

Это неоптимальный выбор, как по мне, но дело хозяйское.

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

А потому что:

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

- что-то повеяло отсутствием code review со стороны разработчиков. Ну, удачи bun. Работать будет, конечно, быстро...

Ну а как фанатов нейрослопа в коде ещё останавливать?

PS. Напомнило игру «жизнь» - результат заданной конфигурации таки не гарантирован.

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

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

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

Правильный запрет. Когда травишь тараканов надо доводить дело до конца иначе они плодятся назад потом.

firkax ★★★★★
()

В конечном счёте планируется провести сравнительное тестирование вариантов Bun на Zig и Rust.

В конечно счёте планируется провести сравнительное тестирование человеческого и нейрослопного вариантов. Будем посмотреть.

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

А сравнение тоже будет делаться нейрослопом?

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

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

Это правильно. Почему разрабы зиг должны разгребать глюки машинных переводов в своём багтрекере?

r--r--r--
()
Ответ на: комментарий от imul

С разработки без ии попытка уйти к разработке с ии. Тебе же наоборот нравиться должно, нет?

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

mamina_radost
()
Ответ на: комментарий от r--r--r--

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

Вместо того, чтобы возложить это на того, кто собственно будет им писать.

Голову-то лучше включить, если она есть.

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

Почему разрабы зиг должны разгребать глюки машинных переводов в своём багтрекере?

Ну если они хотят разбирать глюки машинных переводов

Я задал риторический вопрос. Не совсем понимаю логику ответа на него.

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

Это потому что ты голову не включил, а я советовал.

Когда программист, чей нативный язык X != английскому, переводит машиной на английский, он имеет возможность проверить корректность текста, потому что в какой-то мере владеет английским, и исправить очевидные косяки.

А когда человек, не владеющий языком X, переводит машиной с X на свой язык, он такой возможности не имеет.

wandrien ★★★★
()

Чувак решил протестить Клода при помощи гайда по портированию, в котором какая-то жуткая простыня из смеси мета-языка и то ли самого раста, то ли зига.

Ну прикольно и интересно, но не является ли это контрпродуктивно с т.з. использования LLM?

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

Чувак теперь работает на Anthropic, но вдруг оказалось, что он разрабатывает продукт на ЯП, чьи разрабы завели себе строгую политику без ИИ.

Разумеется, переписывание, чтобы утереть нос и показать всю мощь Anthropic и их Слопа…. Слода… то есть Клода - было неминуемо =)

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

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

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

Это потому что ты голову не включил, а я советовал.

Когда программист,

Я по-прежнему не понимаю, зачем ты всё это пишешь?

Какая запятая во фразе "Почему разрабы зиг должны разгребать глюки машинных переводов в своём багтрекере?" спровоцировала короткое замыкание в твоём мозгу?

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

Потому что ты и еще по ссылкам не ходишь. Выделил жирным, а то вдруг много букв.

No LLMs for comments on the bug tracker, including translation. English is encouraged, but not required. You are welcome to post in your native language and rely on others to have their own translation tools of choice to interpret your words.

wandrien ★★★★
()

… разработка открытого ПО эволюционирует до запрета приёма кода от людей

Ну-ну

no-dashi-v2 ★★★★
()
Ответ на: комментарий от wandrien

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

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

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

Линуксоиды. LOR. 2026. Итоги.

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

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

Да, этим программистам только дай волю…

mamina_radost
()

Ваще конечно, если задуматься, в какое время мы живем: впервые в истории человечества языковой барьер больше не существует! Машина способна переводить текст с языка на язык практически для всех языков и диалектов мира, исключая только самые редкие.

Любой человек, имея в руках смартфон, может понять любого другого. Даже не обязателен доступ интернет, локальная модель может быть запущена на смартфоне.

Это же офигеть какое достижение. Я дико с этого тащусь.

«Технари», которые по идее должны быть на острие:

— Переводи сам вручную, нейрослоп, ко-ко-ко!

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

Какой-то бессмысленный набор слов. Попробуй с ИИшницей проконсультироваться, пусть она поможет тебе оформить мысль более грамотно.

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

То есть вместо однократного перевода писателем будет много-много переводов каждым из читателей? Грета Тунберг тебя осуждает:)

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

Последнее точно не ии, а живой переводчик подлянку кинул:)

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

Ну видимо вас именно вот это устраивает, раз вы сопротивляетесь внедрению качественных инструментов.

Вот такое вы и хотите.

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

вы сопротивляетесь

Но я не участник разработки Zig. Меня-то защо?!?

r--r--r--
()
Ответ на: комментарий от wandrien

языковой барьер больше не существует!

Это, конечно, враньё.

Но предзнаменование плохое. Ситуация должна привести к принудительному внедрению этого барьера назад и наказанию тех кто осмелился его нарушить.

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

Вот почему AI - зло.

Советом включить голову ты так и не воспользовался.

Но я в целом верю в людей и их возможности расти, поэтому вот тебе пример того, как на самом деле переводят современные модели:

Исходник:

Vedno, kadar obiščem ženo in otroke, se počutim kot obsojenec na smrt. Tako je bilo tudi tokrat.
Moj starejši sin je prijel mojega konja za uzde in ga po blatnem dvorišču odvedel v hlev. To leto
je bilo blato še posebno težko. Neprestano je deževalo in megla je bila gosta, da bi jo lahko z
mečem rezal. Hodi s počasnimi koraki in sklonjeno glavo. Videti je utrujen. Molče obtožuje ali
pa ga samo moje oči vidijo tako. Mnogo premlad je še, da bi vodil posestvo. Saj ne rečem, da mu
ne pomaga mati, moja žena. A hkrati me, kot peklenska rana, skeli tudi neizprosna resnica, da bi
ga moral navaditi meča. Toda zdaj je že v letih, ko mu glava in srce nista več tako učljiva in
bistra kot potok ob izviru. Njegov pogled je zdaj kalen kot velika počasna turobna reka. Vsak
mož mora biti vešč sukanja meča. Morda zategadelj nikdar ne postane mož. Nimam niti volje niti
želje, da bi ga zaupal v uk vojaške veščine kateremu izmed mojih koseških sorodnikov. Še manj
vem, kako bo z mlajšim sinom. Pa hčerki, tudi nju bo potrebno poročiti. Preklet je ta naš stan
koseški. Pademo in mladi umrjemo po številnih vojskah. A imamo veliko otrok, zato da naš rod
ne izgine.
Stopil sem v črno kuhinjo in odložil meč. V nos se mi je prikradel prijeten vonj mešanice po
dimu in po pripravljenih jedeh. Na mizo sem zviška spustil mošnjo s srebrniki, ki sem si jo
pridobil ob napadu na nekega trgovca. Moja družica Živa mi je hitela streči z večerjo. Premerila
je mošnjo s srebrniki, a njen pogled je bil poln prezira.
»Hlapci, ki si jih rešil s ceste pred beračenjem, dvigajo glave. Misliš, da mi je lahko gledati v tla
pred njihovimi prezirljivimi in ošabnimi pogledi?« je dejala.
Vsakič, ko se vrnem domov, opažam da njen obraz postaja vse bolj suhljat in upadel. To ne more
biti zaradi pomanjkanja, temveč od jedke bolečine zaradi skrbi. Mlada je še in njeno vitko telo
pod tuniko je gorko in še vedno godno kot takrat, ko sva se vzela.
»Pogovoril se bom z njimi,« sem odvrnil.
»Pogovori se raje z vitezi, ki prihajajo v imenu kneza. Sprašujejo, kod hodiš? Ne bom mogla več
dolgo lagati. Že če samo grdo pogledaš podobico novega boga na križu, te lahko neusmiljeno
grdo prebičajo in zavoljo tvojih dejanj bo enkrat zagotovo Morana potrkala na vrata naše hiše.«
Molčal sem in tudi ona ni več ničesar dejala. Povlekla me je v izbo in me pričela krčevito
poljubljati. Legla sva na posteljo.
Odrinil sem jo: »Ne zdaj, Živa. Težki časi so. Ni več modro spočenjati otrok.«
Zazrla se je v strop:
»To, da se ljubiva, nima toliko opraviti s spočetjem kot z umrtjem.«
»Ali si izgubila razsodnost? Saj vendar veš, kako pridejo otroci na svet. Ne govori tako. Ne
zdaj!«
»Saj ne govorim tako samo jaz. Tako je že govoril puščavnik, ki je živel na naši planini, ko sem
bila še dekle. 'Sestra', tako mi je pravil.«
Vseeno sva se ljubila. Najini težki dihi so se prepletali, puhteli in izginjali v zrak pod strop izbe.
»Vidiš, da sva še živa, še kako živa,« sem na koncu dejal.
»Ne, ne, mi smo že zdavnaj umrli,« mi je odvrnila. Iz njenih oči se ni zrcalila svetloba, temveč je
bil njen pogled temačen kot črno oglje, ugasel kot pepel.
»Živa, ne govori tako, ne zdaj!« sem skorajda zatulil.
Vstal sem s postelje. Ko sem se oblačil, sem jo strogo pogledal:
»Pogovorim se s hlapci!«
Opasal sem si meč. V tistem trenutku se mi je zdel težak in neroden. Na dvorišču sem zbral
hlapce in dekle. Oštel sem jih, in jim zabičal, koga morajo ubogati. Nihče od njih mi ni ničesar
odvrnil. Molče so zrli v blato pred seboj. Potem sem starejšemu sinu in Živi vpričo ostalih otrok
naročil, kaj morajo postoriti na posestvu. Nihče od njih ni ničesar odvrnil ali vprašal. Tudi oni so
topo zrli navzdol predse. Nisem se dolgo mudil na domu. Kmalu sem se ponovno podal v hosto.

Перевод:

Всякий раз, когда я навещаю жену и детей, я чувствую себя приговорённым к смерти. Так было и на этот раз.

Мой старший сын взял моего коня под уздцы и по грязному двору отвёл его в конюшню. В этом году грязь была особенно тяжёлой. Непрестанно лил дождь, и туман был таким густым, что его можно было резать мечом. Он идёт медленными шагами, опустив голову. Выглядит уставшим. Молчаливо обвиняет — или это только мои глаза видят его таким. Слишком он ещё молод, чтобы вести хозяйство. Не скажу, что ему не помогает мать, моя жена. Но вместе с тем меня, как адская рана, жжёт беспощадная правда: я должен был научить его мечу. Однако теперь он уже в тех летах, когда голова и сердце уже не так восприимчивы и ясны, как ручей у истока. Его взгляд теперь мутен, как большая медлительная мрачная река. Каждый муж должен владеть мечом. Может быть, оттого он никогда и не станет мужем. Нет у меня ни воли, ни желания отдать его в обучение воинскому искусству кому-либо из моих косезских родичей. Ещё меньше я знаю, как будет с младшим сыном. И дочерей — их тоже надо будет выдавать замуж. Проклято это наше косезское сословие. Мы гибнем и умираем молодыми в бесчисленных войнах. Но у нас много детей, чтобы наш род не исчез.

Я вошёл в чёрную кухню и отложил меч. В ноздри мне проник приятный запах — смесь дыма и приготовленных кушаний. Я с высоты бросил на стол кошель с серебряниками, добытый при нападении на одного купца. Моя жена Жива поспешила подать мне ужин. Она взвесила кошель с серебром, но взгляд её был полон презрения.

— Холопы, которых ты спас от дороги и нищенства, поднимают головы. Думаешь, легко мне смотреть в землю под их презрительными и надменными взглядами? — сказала она.

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

— Я поговорю с ними, — ответил я.

— Лучше поговори с рыцарями, что приходят от имени князя. Они спрашивают, куда ты ходишь. Я не смогу долго лгать. Даже если ты просто косо взглянешь на образ нового бога на кресте, тебя могут нещадно высечь, и из-за твоих деяний однажды непременно Морана постучится в двери нашего дома.

Я молчал, и она тоже больше ничего не сказала. Она потянула меня в горницу и принялась судорожно целовать. Мы легли на постель.

Я отстранил её:
— Не сейчас, Жива. Тяжкие времена. Больше не мудро зачинать детей.

Она уставилась в потолок:
— То, что мы любим друг друга, имеет дело не столько с зачатием, сколько со смертью.

— Ты потеряла рассудок? Ведь ты знаешь, как дети появляются на свет. Не говори так. Не сейчас!

— Так говорю не только я. Так уже говорил пустынник, что жил на нашей горе, когда я была ещё девушкой. «Сестра», — так он мне говорил.

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

— Видишь, мы ещё живы, и ещё как живы, — сказал я наконец.

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

— Жива, не говори так, не сейчас! — почти завопил я.

Я встал с постели. Одеваясь, я строго посмотрел на неё:
— Поговорю с холопами!

Я опоясался мечом. В то мгновение он показался мне тяжёлым и неловким. Во дворе я собрал холопов и девок. Я отчитал их и строго-настрого приказал, кого они должны слушаться. Никто из них ничего мне не ответил. Молча они глядели в грязь перед собой. Потом я старшему сыну и Живе в присутствии остальных детей наказал, что нужно сделать по хозяйству. Никто из них ничего не ответил и не спросил. Они тоже тупо глядели вниз перед собой. Я недолго пробыл дома. Вскоре я снова отправился в лес.
wandrien ★★★★
()
Ответ на: комментарий от r--r--r--

Всё ещё лучше, чем потраченный углепластик.

Для вас идеал это тепловая смерть вселенной? Идеальная оптимизация, никаких лишних трат энергии.

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

исключая только самые редкие

Манускрипт Войнича как там, удалось ли его кому-нибудь раскурить?

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

языковой барьер больше не существует!

Яндекс сегодня перевел «заказ-наряд» как «order-outfit» - https://translate.yandex.ru/?source_lang=ru&target_lang=en&text=%D0%97%D0%B0%D0%BA%D0%B0%D0%B7-%D0%BD%D0%B0%D1%80%D1%8F%D0%B4 , гугль и бинг выдали более правдоподобный перевод.

No ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)