Джарред Самнер (Jarred Sumner), создатель и основной разработчик серверной JavaScript-платформы Bun, признал успешным эксперимент по переписыванию проекта с языка Zig и Rust при помощи AI-ассистента Claude Code, и принял решение о переводе Bun на язык Rust. Переписанный вариант на языке Rust уже принят в основной репозиторий проекта, а код на языке Zig намечен к удалению. Также автор Bun объявил о найме сотрудников для поддержки Bun, имеющих более 5 лет опыта разработки на языках C/C++ и Rust.
На данный момент на Rust реализован прямой порт с языка Zig, который включает множество блоков unsafe кода, использует ту же архитектуру, те же структуры данных и прежние внешние библиотеки. Отмечается, что порт на Rust успешно прошёл проверку существующим тестовым набором на всех платформах. Попутно было устранено несколько утечек памяти и сбоев в тестах.
После сборки версии на Rust исполняемый файл получился на 3-8 МБ меньше, чем при сборке версии на Zig. В тестах производительности версия на Rust оказалась либо быстрее, либо на том же уровне. При этом по мнению Джарред самым важным преимуществом варианта на Rust стала возможность отлавливания и предотвращения ошибок при работе с памятью, диагностика которых последние годы отнимала у разработчиков Bun уйму времени.
В качестве причины переписывания на Rust ранее отмечалось желание устранить проблемы в Bun, вызванные утечками памяти, наличие разногласий с авторами Zig в плане применения AI для написания кода и неприемлемая для крупных проектов политика Zig в отношении принятия в язык изменений, нарушающих совместимость.
Bun JavaScript 플랫폼은 Node.js 및 Deno의 고성능 대안으로 개발되고 있습니다. 이 프로젝트는 Node.js 서버 애플리케이션과의 호환성을 염두에 두고 개발되었으며 Node.js API의 대부분을 지원합니다. Bun 플랫폼에는 JavaScript 및 TypeScript 애플리케이션을 생성하고 실행하기 위한 도구 세트, 브라우저 없이 JavaScript 애플리케이션을 실행할 수 있는 런타임, 패키지 관리자(NPM 호환), 테스트 도구, 자체 포함 패키지 빌더, 그리고 C로 작성된 핸들러를 내장할 수 있는 레이어가 포함되어 있습니다. 성능 면에서 Bun은 Deno 및 Node.js를 크게 능가합니다(React 프레임워크 기반 테스트에서 Bun은 Deno보다 2배, Node.js보다 거의 5배 빠른 성능을 보였습니다). JavaScript 실행은 JavaScriptCore JavaScript 엔진과 추가 패치가 적용된 WebKit 구성 요소를 통해 지원됩니다.
출처 : opennet.ru
