
Разработчик Джарред Самнер (создатель и мейнтейнер серверной JavaScript‑платформы Bun) сообщил о признании успешным недавно начатого эксперимента по переписыванию проекта Bun с языка Zig на Rust при помощи ИИ‑ассистента Claude Code. В команде проекта приняли решение о переводе Bun на язык Rust. Переписанный вариант решения на языке Rust принят в основной репозиторий проекта, а код на языке Zig подготовлен к удалению.
В команде Bun объявили о найме сотрудников для поддержки кода проекта, имеющих более 5 лет опыта разработки на языках C/C++ и Rust.
В качестве причины переписывания на Rust в команде проекта отмечали желание устранить проблемы в Bun, вызванные утечками памяти, наличие разногласий с авторами Zig в плане применения ИИ для написания кода (в Zig работает одна из самых строгих политик против ИИ) и неприемлемая для крупных проектов политика Zig в отношении принятия в язык изменений, нарушающих совместимость.
По информации OpenNET, на Rust реализован прямой порт Bun с языка Zig, который включает множество блоков unsafe кода, использует ту же архитектуру, те же структуры данных и прежние внешние библиотеки. Отмечается, что порт на Rust успешно прошёл проверку существующим тестовым набором на всех платформах. Попутно было устранено несколько утечек памяти и сбоев в тестах.
После сборки версии Bun на Rust исполняемый файл проекта получился на 3–8 МБ меньше, чем при сборке версии на Zig. В тестах производительности версия на Rust оказалась либо быстрее, либо на том же уровне.
По заверению Самнера, самым важным преимуществом варианта Bun на Rust стала возможность отлавливания и предотвращения ошибок при работе с памятью, диагностика которых последние годы отнимала у разработчиков Bun очень много времени.
Bun — это современная среда выполнения JS типа Node.js или Deno со встроенной поддержкой JSX и TypeScript. Она разработана с акцентом на быстром запуске, высокой производительности и самодостаточности. Внутри Bun есть транспилятор (транспилирующий компилятор) JavaScript, встроенный в среду выполнения. Это означает, что при работе с Bun можно запускать файлы JavaScript, TypeScript и даже JSX/TSX без каких‑либо зависимостей.
Bun использует движок JavaScriptCore, разрабатываемый WebKit, который запускается и выполняет операции немного быстрее, а также использует память немного эффективнее, чем классические движки типа V8. Изначально Bun был написан на Zig — языке программирования низкого уровня с ручным управлением памятью, чем объясняются высокие показатели его скорости. Проект Bun 1.0 вышел в сентябре 2023 года. Сейчас в разработке находится ветка Bun 1.3.х.
В Bun работают полнофункциональные приложения, созданные с помощью Next.js, Remix, Nuxt, Astro, SvelteKit, Nest, SolidStart и Vite. Разработчики проекта пояснили, что Bun запускается в 4 раза быстрее, чем Node.js. Эта разница только увеличивается при запуске файла TypeScript, который требует транспиляции, прежде чем Node.js сможет его запустить. Bun запускает тестовый файл hello world на TypeScript в 5 раз быстрее, чем esbuild с Node.js.
ссылка на оригинал статьи https://habr.com/ru/articles/1035400/