LINUX.ORG.RU

Bun 1.4

 , , , ,


0

4

Представлен выпуск платформы Bun 1.4, предназначенной для обособленного выполнения приложений, написанных на языках JavaScript и TypeScript, и нацеленной на использование в качестве прозрачной замены платформы Node.js. Ветка 1.4 примечательная переводом кодовой базы с языка Zig на язык Rust, осуществлённым с использованием AI-инструментов Claude. Код продолжает распространяться под лицензией MIT.

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

Судя по проведённым тестам, версия на Rust потребляет на 13-48% меньше памяти, запускается в два раза быстрее и до 5 раз меньше нагружает CPU в режиме простоя. Размер исполняемого файла в версии на Rust сократился на 17%. При запуске при помощи Bun 1.4 приложения Claude Code нагрузка на CPU уменьшилась в два раза.

В состав включено 1517 дополнительных тестов для проверки совместимости и устранено более 2900 проблем. В базовую поставку добавлены новые библиотеки Bun.Image, Bun.WebView, Bun.markdown, Bun.cron() и Bun.Terminal. В командах bun run и bun test реализован режим параллельного запуска (--parallel). Обеспечена совместимость с фреймворками Next.js 16 и vitest.

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

>>> Источник: OpenNET

★★★★★

Проверено: CrX ()

Какая концентрация поводов для подрыва - любо-дорого посмотреть!

Хотя новость, в общем-то, рядовая - контора переписала под себя нужный им инструмент используя доступные им ресурсы. Результат устроил всех - за исключением тех кого из-за достигнутых оптимизаций отлучили от сытной кормушки. Естественно потерявшие бабло громче всех вякали что «дело не в деньгах!» :)

zabbal ★★★☆☆
()

ИМХО, наибольший интерес этот Bun представлял именно как пример крупного (и в смысле популярности, и в смысле объёма кода) проекта на Zig. Теперь же это просто заурядная «замена node.js», без полной совместимости, как обычно. Конечно, кому-то оно надо, может и прирост в производительности какой-то даст. Но жаль, что своё самое интересное (по моему субъективному мнению) качество он потерял. Да ещё и понавайбкодили тонну кода, который даже не факт, что кто-то целиком в итоге хотя бы читал…

CrX ★★★★★
()

В качестве причины переписывания на Rust отмечается желание устранить проблемы в Bun, вызванные утечками памяти

Как будто ржавчина спасает от утечек

dynamic_cast
()

Код продолжает распространяться

… власти скрывают масштаб проблемы, армия бездействует, тысячи пострадавших!

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

Теперь же это просто заурядная «замена node.js»

Нет, сейчас это просто иислоп.

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

От утечек не спасает, но про утечки в тексте ничего и нет. В тексте речь идёт об «предотвращении ошибок при работе с памятью» - в Rust полностью исключены ошибки неопределенного поведения, от утечек памяти и переполнения стека Rust не защищает.

MSZX
()

Мне вот интересно сколько проект разработчиков потерял в результате этого переноса? И не окажется ли это фатальной ошибкой для проекта?

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

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

unDEFER ★★★★★
()

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

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

В «продались» нет ничего плохого, а вот истерика после отказов Келли брать слоп-патчи в Zig была показательной и забавной. Под истерикой я подразумеваю припадок в котором проект конвертнули с Zig на Rust.

P.S. На правах срача, вот про обратное движение (от Rust в Zig). Правда там настолько всё зелено, что случай и топиком несопоставим.

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

Антропики из кожи вон лезут, проталкивая свою модель: ИИшка пишет на Расте, код получается непригодным для сопровождения человеком. Такой маркетинг мы заслужили. Массовое переписывание всего на Раст.

Чтобы не быть голословным. Проект esp32-open-wifi , обычный грантоедский стартапик, с плохими кодерами, но хорошими болтунами, сосал себе денежку, ничо не делал. Постучались Антропики. А на расте переделаете? Конечно!

vvb333007
()

Что-то ребята не спешат выкладывать контейнер с новой версией. Я бы свой ИИслоп с ноды перенёс на ИИслоп. Чисто ради интереса.

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

Чтобы не быть голословным. Проект esp32-open-wifi , обычный грантоедский стартапик, с плохими кодерами, но хорошими болтунами, сосал себе денежку, ничо не делал. Постучались Антропики. А на расте переделаете? Конечно!

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

Что касается «код получается непригодным для сопровождения» - это не есть характеристика сгенерированного кода. Это характеристика конкретной пары программист-код. Программист и только он несёт ответсвенность за свой код, и если код непригодный для сопровождения, то программист должен это уметь распознавать и применять или не применять меры. То, что благодаря технологии любой дурак легко может нагенерить тонну кода - это ХОРОШО. Тем дешевле плохой код, тем дороже код хороший. А рынок быстро разберётся, где хороший код действительно нужен, а где он вообще не к чему, поскольку одноразовый.

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

наибольший интерес этот Bun представлял именно как пример крупного (и в смысле популярности, и в смысле объёма кода) проекта на Zig.

Автор Zig-а высказался в духе «ну наконец-то эти ламеры перестали позорить Zig своим говнокодом»: https://andrewkelley.me/post/my-thoughts-bun-rust-rewrite.html

We became increasingly horrified at the programming practices we saw in Bun’s codebase. Hacks on top of hacks. Abuse of assertions. Most of all, recklessly speeding past feature after feature with very little time taken for reflection and elimination of bugs and technical debt. Jarred was already writing slop well before he had access to LLMs.

When Jarred announced the Rust rewrite, we were ecstatic. It seemed too good to be true. I have to admit, I didn’t think the technology was there, to pull off this stunt. But he did it, and now I’m metaphorically sipping delicious tea from a mug that says «It Tastes Like It’s Not My Problem Anymore».

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

Когда вам Клод коммитит миллион LOC, вы физически в этом не разберетесь. Я об этом говорю. Код не обязательно должен быть прям плохим и нечитаемым. Но вм , как минимум, нужно отревьювить этот код, понять, действительно ли сгенерированно по написаному.

Когда программист ипользует ИИ как умный автокомплит (Клодик, напиши мне merge sort, сортировать будет такие-то структуры, вход такой-то, выход такой-то). Окей, код маленький, его можно ревьювить. Но, извините, когда вы так же генерируете , например, HTML-renderer, то вы в нем не разберетесь.

А то, что рынок разберется - с этим никто не спорит.

Я живу в стране, где люди используют калькулятор, чтобы из 100 вычесть 35, например. Я не преувеличиваю. Почему так? Ну потому, что зачем учиться считать в уме, когда есть калькулятор, который всю тупую работу сделает, верно?

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

наличие разногласий с авторами Zig в плане применения AI для написания кода и неприемлемая для крупных проектов политика Zig в отношении принятия в язык изменений, нарушающих совместимость

пишете так, как будто в этом есть что то плохое.

диагностика которых последние годы отнимала у разработчиков Bun много времени

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

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

В «продались» нет ничего плохого, а вот истерика после отказов Келли брать слоп-патчи в Zig была показательной и забавной. Под истерикой я подразумеваю припадок в котором проект конвертнули с Zig на Rust.

Возможно это связано с отказом некоторых проектов, типа MirBSD принимать код сгенерированный ИИ (mirbsd.org)

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

типа MirBSD

Там что-то пипец интересное, как я сейчас понял:

Unavailable For Legal Reasons
Sorry, no detailled error message available.
httpd/3.30A Server at www.mirbsd.org Port 80
vvb333007
()

а также наличие разногласий с авторами Zig в плане применения AI для написания кода

Чота я не понял немного, а авторов зига гребет что я там использую в своем проекте? Или я чего то не так прочитал?

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

Теперь же это просто заурядная «замена node.js», без полной совместимости, как обычно.

Ну нихрена ж себе заявление. Теперь это:

  1. Крупный проект на раст

  2. Крупный проект написанный автоматически ИИ (пусть и с шаблона)

по моему субъективному мнению) качество он потерял

Ну это само собой, не может быть все так радужно. Проверять надо независимо от разрабов.

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

Теперь это Claude. Теперь он знает кодовую базу :).

Хрен там плавал. Чукча не запоминатель, чукча писатель. Он ее писал, а не учился на ней.

Он вообще ничего о ней не знает в принципе, пока не посмотрит определенные куски кода. Тогда он о них что то узнает. Причем только по мааааленьким кусочкам, как и писалось все.

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

Автор Zig-а высказался в духе «ну наконец-то эти ламеры перестали позорить Zig своим говнокодом»: https://andrewkelley.me/post/my-thoughts-bun-rust-rewrite.html

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

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

ИМХО, наибольший интерес этот Bun представлял именно как пример крупного (и в смысле популярности, и в смысле объёма кода) проекта на Zig. Теперь же это просто заурядная «замена node.js», без полной совместимости, как обычно. Конечно, кому-то оно надо, может и прирост в производительности какой-то даст. Но жаль, что своё самое интересное (по моему субъективному мнению) качество он потерял.

ИМХО, он стал более интересен для стороннего наблюдателя. Крупная кодовая база на Zig была инетреснна небольшой группе Zig-энтузиастов. А теперь проект интересен огромной группе AI-энтузиастов. Всёже успешное переписывание на Rust при помощи AI-тулинга крупной кодовой базы это что-то новое, а очередная среда выполнения для JavaScript на заштатском языке - скука.

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

Всёже успешное переписывание на Rust при помощи AI-тулинга крупной кодовой базы это что-то новое

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

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

Максимальные нормальные возможности тоже инетерсны. Не только искусственно урезанное.

Ну и кто ж вам мешает - разрабатывайте, создавайте, отваливайте себе.

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

Переписывание на Rust идет с подачи DARPA. У антропиков с ними тоже контракты. Поэтому экономика по идее должна сходится. Антропики показали, что могут это делать в короткие сроки и за небольшие, по меркам агенства, деньги.

Хотя zig это конечно не С и у проекта изначально была нормальная архитектура. Поэтому ребята здесь изрядно считерили. Изначально, сгенерированая версия bun под Rust отличалась от исходной лишь синтаксисом, за небольшими исключениями.

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

Когда вам Клод коммитит миллион LOC, вы физически в этом не разберетесь. Я об этом говорю. Код не обязательно должен быть прям плохим и нечитаемым. Но вм , как минимум, нужно отревьювить этот код, понять, действительно ли сгенерированно по написаному.

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

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

Когда программист ипользует ИИ как умный автокомплит (Клодик, напиши мне merge sort, сортировать будет такие-то структуры, вход такой-то, выход такой-то). Окей, код маленький, его можно ревьювить. Но, извините, когда вы так же генерируете , например, HTML-renderer, то вы в нем не разберетесь.

Правильно, поэтому будет глупо задать Claude задание «сгенери мне HTML-renderer», а потом пялиться на портянку кода. Разумнее будет сказать «Я хочу разработать HTML-renderer. Он должен включать в себя обработку следующих тегов; <список тегов>. Разработай план.»

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

Я живу в стране, где люди используют калькулятор, чтобы из 100 вычесть 35

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

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

Теперь это Claude. Теперь он знает кодовую базу :).

Хрен там плавал. Чукча не запоминатель, чукча писатель. Он ее писал, а не учился на ней.

У вас серьёзные проблемы - выгорание и потеря чуства юмора. Три человека юмор поняли, а вы, даже несмотря на смайлик, нет. Отдыхать надо!

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

Ну я тоже не понял эту фразу. LLM ничему не учится. Максимум - запоминает что-то в рамках сессии или memory-файлов. Чтобы Claude знал кодовую базу, для него нужно (могу ошибаться, до такого уровня я ещё не дошёл) написать развесистое дерево из файлов CLAUDE.md, по сути документировать весь проект, все его нюансы. Тогда можно считать, что claude если и не знает проект, то по крайней мере может нужные знания вытащить когда надо.

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

авторов зига гребет что я там использую в своем проекте?

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

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

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

Там был контекст «Раньше я хранил и знал всю кодовую базу, теперь эту базу дописывает Claude.” Я закономерно шучу «теперь Claude хранит и знает мою кодовую базу».

Конечно, это неверно. Claude ничего не хранит и сам не меняется от того, что получил доступ к коду или что-то догенерил.

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

Чтобы Claude знал кодовую базу, для него нужно (могу ошибаться, до такого уровня я ещё не дошёл) написать развесистое дерево из файлов CLAUDE.md, по сути документировать весь проект, все его нюансы.

Использовать Claude, чтобы он это сделал с вашего подтверждения.

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

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

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

В принципе это так, но я не думаю, что для моделей в 30-50B параметров один код на миллион строк делает погоду.

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

а часто такие проблемы затрагивают js рантаймы?

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

Все только ждали повода, стыдливо просматривая по сторонам и не желая признаваться первыми :)

«Вайбкодишь, небось».жпг

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

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

Это довольно легко и просто сделать. Такой ИИ у нас уже есть где-то с конца 50-х. Нам понадобится ключевое слово defmacro и специальные команды macroexpand и macroexpand-1.

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

Разумнее будет сказать «Я хочу разработать HTML-renderer. Он должен включать в себя обработку следующих тегов; <список тегов>. Разработай план.»

На практике задачу разбивает на подзадачи ИИ, и раздает эти задачи другим ИИшкам. Верификация->Исправления (цикл порождает обычно заплатки на solid codebase).

Получается все тот же миллион строк. И даже с документацией. Но вот беда - читать и проверять все равно надо.

Ну либо полностью доверять ИИ. Знаете, некоторые спать умудряются в машине, которая едет по автостраде на ИИ-автопилоте. Я бы так не смог.

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

Получается все тот же миллион строк. И даже с документацией. Но вот беда - читать и проверять все равно надо.

А разве я где-то когда-то говорил, что модели заменяют человека? То что это пытаются сделать и увольняют сотрудников - это вообще меня не касается. Можно посмотреть по истории моих сообщений, я говорил про новые инструменты, новые технологии, и про увеличение продуктивности, но не про исключение человека из цикла разработки.

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

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

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

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

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

А можно объяснить - какие могут быть дела у авторов языка к крупному проекту? Особенно финансовые? Допустим, пишу я проект на си, раст, питон, зиг. Допустим это крупный проект.

И вот, пишут мне авторы языка: «ты пишешь через ООП все, а надо через ФП. Если не перестанешь, мы тебя засудим». Или как это выглядит?

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

Например ты пишешь код настолько отвратительно, что качество твоего проекта бросает тень на используемые технологии. Например из наличия кучи багов в Bun люди могут подумать, что это из-за того, что он написан на Zig, а не из-за того, что программисты Bun плохие (это всё я просто придумал, вообще без понятия, сколько там багов в Bun и Zig и кто в чем виноват, это просто пример).

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

А вообще тут скорей обратные дела будут. Например ты пишешь проект и в какой-то момент понимаешь, что в Zig тебе чего-то прям сильно не хватает. Ты, например, пишешь feature request авторам Zig. Может быть даже сразу pull request делаешь. А авторам Zig теперь придётся думать, что делать. Или отказывать тебе, или принимать. А твой pull request ещё и навайпкоден, а у авторов Zig пунктик на этом. Получается разногласие.

Что касается финансов. Разработчики Bun платили деньги разработчикам Zig. После переписывания Bun на Rust платить перестали.

С, Раст, Питон тут немного не вписываются. Это слишком старые и слишком большие языки. Тут разве что гигантские проекты вроде линукса могут влиять на них, да и то не факт. А Zig и Bun это относительно молодые и небольшие проекты.

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

Когда этим занимались, то всё получалось. Так что не так страшен чорт, как социоэкономические факторы.

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

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

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

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

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

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

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

Ты, например, пишешь feature request авторам Zig. Может быть даже сразу pull request делаешь. А авторам Zig теперь придётся думать, что делать. Или отказывать тебе, или принимать. А твой pull request ещё и навайпкоден, а у авторов Zig пунктик на этом. Получается разногласие.

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

Что касается финансов. Разработчики Bun платили деньги разработчикам Zig. После переписывания Bun на Rust платить перестали.

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

Допустим, я не хочу пилить для тебя фичи, ну имею я такое право. Я просто не возьму от тебя денег и все. Но они деньг брали, замечу.

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