LINUX.ORG.RU

Bun завершил перенос с Zig на Rust, после чего разработчики проектов публично разругались

 , , ,


0

4

Команда Bun завершила перенос основной кодовой базы среды исполнения JavaScript и TypeScript с Zig на Rust. Изменения были влиты в main 14 мая 2026 года, а 8 июля руководитель проекта Джарред Самнер опубликовал отчёт о миграции. Последней стабильной версией на Zig пока остаётся Bun 1.3.14, тогда как Rust-реализация доступна в Bun 1.4 Canary. Порт уже используется в Claude Code начиная с версии 2.1.181 и в публичной бете Prisma Compute.

Перенос затронул 535 496 строк Zig-кода и занял 11 дней. Самнер задействовал около 50 автоматизированных процессов Claude Code, одновременно запускавших до 64 экземпляров Claude. Итоговый diff добавил более миллиона строк и включил 6502 коммита без учёта слияний. По оценке автора, запросы обошлись бы примерно в 165 тысяч долларов по тарифам API; вручную работа потребовала бы трёх разработчиков и около года.

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

Причиной миграции разработчики называют не недостатки Zig как такового, а устройство Bun. Среда объединяет JavaScriptCore со сборкой мусора и нативный код с ручным управлением памятью, что приводило к утечкам, use-after-free и double-free. Rust позволяет обнаруживать часть таких ошибок раньше и освобождать ресурсы через Drop. По данным команды, Bun 1.4 исправляет 128 ошибок из 1.3.14, уменьшает бинарник примерно на 20% в Linux и Windows и в отдельных тестах работает на 2–5% быстрее.

Порт пока далёк от идиоматического Rust: около 4% кода находится внутри unsafe — примерно 27 тысяч строк и 13 тысяч употреблений ключевого слова. Кроме того, были обнаружены 19 известных регрессий, которые, по утверждению разработчиков, уже исправлены.

На следующий день основатель Zig Эндрю Келли опубликовал резкий ответ. По его мнению, проблемы Bun возникли не из-за модели памяти Zig, а из-за инженерной культуры проекта: слишком быстрого добавления функций, накопления технического долга и злоупотребления comptime и assert. Келли утверждает, что Zig Software Foundation неоднократно пыталась обратить внимание команды Bun на качество кода.

Келли поставил под сомнение и проверку миллиона строк автоматически созданного кода. Если прежний набор тестов пропускал ошибки Zig-версии, считает он, то этот же набор не доказывает отсутствие ошибок в Rust-порте. Команда Bun указывает на проверку несколькими ИИ-агентами, тестирование, фаззинг и частичное ручное чтение. Традиционного построчного рецензирования людьми не было, но и полностью непроверенным перенос назвать нельзя.

Другие претензии касаются результатов. Келли отметил, что прирост скорости связывается с межъязыковой LTO, хотя Zig тоже поддерживает LTO. Сокращение бинарника частично обеспечили оптимизация ICU и настройки линковки, а сравнение времени компиляции в отчёте отсутствует. Он также увидел противоречие между рассказом о фаззинге и прежними разговорами, в которых команда Bun якобы сообщала, что фаззинг не используется.

Технический спор быстро перешёл в конфликт между проектами. По словам Келли, компания Oven перечисляла Zig Software Foundation около 60 тысяч долларов в год, но после покупки Bun компанией Anthropic выплаты прекратились, а представители Bun не пришли на регулярную встречу. Он также раскритиковал управленческий стиль Самнера, ссылаясь на рассказы бывших работников и соискателей. Независимых подтверждений этим обвинениям опубликовано не было.

Позднее Келли изменил заключение статьи и признал, что накопившаяся обида сделала текст похожим на личную атаку. Таким образом, перенос Bun на Rust технически завершён и уже применяется, хотя стабильный выпуск Bun 1.4 ещё впереди. Сам конфликт оказался не столько спором Zig против Rust, сколько столкновением взглядов на темп разработки, роль ИИ и способы обеспечения качества открытого проекта.

Bun – это среда выполнения ECMAScript / JavaScript, по многим параметрам аналогичная nodejs. Bun старается быть максимально совместимым с nodejs по опциям командной строки, поддерживает модули ECMAScript (ESM) и CommonJS. Управление пакетами npm и поддержка typescript встроены прямо в приложение как нативный код, и программы на typescript могут исполняться напрямую интерпретатором без предварительной конфигурации.

>>> Подробности

★★★★★

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

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

Это жопа. И полная жопа все ближе и ближе.

LightDiver ★★★★★
()

У меня давно на Zig обида, что он не умеет табы, а только пробелы. Так что...

KivApple ★★★★★
()

перенос с Zig на Rust
разработчики проектов публично разругались

Вот что Rust животворящий делает!

Gonzo ★★★★★
()

Хорошо бы добавить содержательный абзац, что такое этот Bun. Понятным русским языком, для людей, далёких от JS и др.

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

То была шутка просто.

Самнер задействовал около 50 автоматизированных процессов Claude Code

Навайбкодили короче.

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

Это навайбкодили код на расте. Скинули иишке код на zig и получили нечитаемый код на раст. Но откуда взяли код на zig и как давно это длится интересно.

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

В итоге утащил сюда абзац с описанием из старой новости за авторством @LamerOk. Вот он не поленился и пояснил.

hobbit ★★★★★
()

Я тут глянул источники, простите я не тру. Код не просто переносили, но рефакторили и птимизировали. разбивали монолитные модули на более мелкие (привет нечитаемость стандартных ИИшек). В итоге из полуляма строк кода на zig получил больше миллиона строк на раст. В среднем код на раст должен быть процентов на 10-15 больше из за особенностей, но не в два же раза.

Вы вообще представляете что такое миллион строк кода? Еще парочка таких переносов и оно вполне сравнится с линуксом, например.

Это они генерили около ста тысяч строк в день.

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

Bun — это открытая платформа для запуска и разработки программ на JavaScript и TypeScript, задуманная как более быстрая и цельная альтернатива Node.js. Она объединяет в одном инструменте среду выполнения программ, менеджер зависимостей, сборщик проектов и систему тестирования.

сгодится?

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

что такое этот Bun

Запускалка скрипта на жаваскрипт в консольке. Как питоний скрипт запускает CPython, так жаваскрипт запускает bun/node/deno. Использует готовый сторонний движок ЖС.

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

см. последний абзац

Сделал бы первым, для ненужнистов.

dataman ★★★★★
()
Ответ на: комментарий от Gonzo
  1. Писали ли на zig вручную или навайбкодили изначально

  2. Понимает ли хоть один человек что происходит в коде хотя бы примерно

  3. Как с этим работать и стоил ли

  4. Что из этого выйдет через * лет

  5. Как не допустить то, что из этого выйдет через * лет

  6. Если это общие тенденции, а это общие тенденции, насколько вырастут в цене настоящие программисты, которые понимают что происходит в коде

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

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

Писали ли на zig вручную или навайбкодили изначально

Я не в курсе, а 4 года назад уже можно было вайбкодить?

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

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

Копилот выше в 2021 году.

Ну так то считай вчера но если всего за пару лет дошли до такого, что будет дальше?

Впрочем, более полуляма строк кода - их явно не за один день и не за один год написали. Если вручную. У меня на 46 тысяч строк кода первых ушло почти 2 года, а я писал чуть ли не 24/7, но ничего не понимал особо. Если писали много народу, еще и профессионалы.. Хрен знает.

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

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

Я ожидал слова «поженились».

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

похож на мант

Скорее на не очень умного малыша…

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

Запускалка скрипта на жаваскрипт в консольке. Как питоний скрипт запускает CPython, так жаваскрипт запускает bun/node/deno. Использует готовый сторонний движок ЖС.

Какое-то хреновое объяснение. Запускалка ЖС, но при этом движок ЖС сторонний - это как? Вот движок QuickJS прекрасно запускает в консольке жабоскрипт без всяких левых запускалок. Да и V8 тоже так может без всяких запускалок вроде.

Зачем тогда оно?

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

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

Да и V8 тоже так может без всяких запускалок вроде.

Там не будет «стандартной библиотеки» - функций для работы с файлами, сетью и прочего.

собиралка жабоскриптного поделия

Не, транспиляция это отдельная шняга, она может быть даже написана на JS.

вытаскиванием имеющихся зависимостей

А это наш любимый npm, написан на JS. Есть и другие ПМ.

запускалка

Да, а сабж это все запускает.

goingUp ★★★★★
()

В реале под всем этим лежит то что Bun купил Антропик, который решил продемонстрировать мощь своего ИИ. По итогу за 11 дней получен код, который из смертных никто не видел и что там происходит никто не знает. И теперь надо пару месяцев, а то и лет, чтобы с тем же ИИ разобрать все это и понять что к чему в коде команде разработчиков. Каких-то хотя бы частично новых, потому что старые хотя бы частью пойдут на мороз. Потому что rust код и так не сахар, а что там на калякал ИИ никому не известно. То есть ВНЕЗАПНО расходы на разработку вырастут, вместо чтобы наоборот.

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

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

А что, переписать линукс на раст полностью через ИИ - такая плохая идея? Получится всего то 80-150 миллионов строк. Ну хорошо же.

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

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

Можно, а зачем? (с)

Никто такой ерундой заниматься не будет. Если это поделие не сдохнет само, то его закопают те же антропуки - своё дело оно сделало, хайп создало, «доказало», что этот ваш ИИ может такое.

Теперь отменяем автору безлимит на токены и пускаем в свободное плавание

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

Если это поделие не сдохнет само, то его закопают те же антропуки

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

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

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

4 года назад уже можно было вайбкодить

Нет. Началось все примерно с 24-го, а сам термин появился в начале 25-го.

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

Нет. Началось все примерно с 24-го, а сам термин появился в начале 25-го.

Это не так. Уже в 23 году актвно было. Даже без всяких терминов. Даже шутки были типа: «Вау, видел чувака в кафе с ноутбуком, так он просто писал код руками без всяких ИИшек помошников»

Просто тогда контекстное окно было на пару порядков меньше.

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

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

В 23-м году это было примерно как «Уилл Смит, кушающий спагетти». Писать толково код оно еще не умело. Общаться, отвечать на вопросы еще более-менее. Зачем так далеко ходить? Оно и сейчас глючит безбожно на простых питоновских скриптах и не только. Честно говоря, с содроганием думаю о качестве кода всех этих «переписок на раст» и т.д.

Gonzo ★★★★★
()

частичное ручное чтение

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

zabbal ★★★☆☆
()

основатель Zig Эндрю Келли опубликовал резкий ответ. По его мнению, проблемы Bun возникли не из-за модели памяти Zig, а из-за…

…Oven перечисляла Zig Software Foundation около 60 тысяч долларов в год, но после покупки Bun компанией Anthropic выплаты прекратились

Остальное можно не читать - и так всё понятно.

zabbal ★★★☆☆
()

А почему мне сейчас прилетело уведомление на эту тему? Т.е. после подтверждения Хоббитом? ИМХО должно прилетать либо при добавлении тега (в данном случае это rust), либо при создании если тег был указан изначально.

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

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

Я ожидал слова «поженились».

Перед этим второй разраб должен тоже перейти на rust.

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

Главный вопрос: оно работает? Если работает то все эти истерики на тему «ИИ пишет нечитаемый кожаными код» это просто истерика отмирающей профессии. Если код будет работать, выполнять свои функции, а уязвимостей там будет не больше чем у кожаных, то они всё делают правильно, а кожаным пора на метан.

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

  2. Нет и раньше не понимал

  3. Также как и раньше

  4. Погромисты будут сажать картошку лопатой.

  5. Никак, у луддитов не получилось

  6. Программисты подешевеют в цене до копателя картошки.

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

Главный вопрос: оно работает?

они всё делают правильно, а кожаным пора на метан.

Так а кто будет отвечать на вопрос "оно работает?" ? Метан?

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

вспомнился прикол в стиле «показалось»:

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

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

А как у тебя сочетаются первый и второй ответы? Если писали вручную, то раньше понимал хотя бы тот, кто писал. Сейчас врядли понимает хоть кто то.

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

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

А мне уже пофиг что там в айтишке будет и куда вы на мороз пойдёте. Придётся у меня или у того чела на ЛОР-е, который искал программиста за мешок картошки лопату выпрашивать, чтоб картошку сажать.

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

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

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

Крупные проекты писались человеками понятно для человеков. Для этог вырабатывались стандарты, принципы написания, шаблоны. Система и дисциплина написания.

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

А проблемы в первую очередь поимеешь ты. Такой код имеет тенденцию терять старые фичи и накапливать ошибки именно юзерские. И вот когда у тебя отваливаться будет та или иная фича в софте - программисту от этого только доп работа - есть что починить. А тебе неудобства.

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