Привет, друзья! В этой статья я немного расскажу вам о Bun — новой среде выполнения JavaScript-кода. Обратите внимание: Bun — это экспериментальная штуковина, поэтому использовать ее для разработки производственных приложений пока не рекомендуется. К слову, в рейтинге "Восходящие звезды JavaScript 2022" Bun стал победителем в номинации "Самые популярные проекты". Интересно? Тогда прошу под кат. Bun — это современная среда выполнения JS типа Node.js или Deno со встроенной поддержкой JSX и TypeScript. Она разрабатывалась с акцентом на трех вещах: Bun включает в себя следующее: Bun использует движок JavaScriptCore, разрабатываемый WebKit, который запускается и выполняет операции немного быстрее, а также использует память немного эффективнее, чем классические движки типа V8. Bun написан на Zig — языке программирования низкого уровня с ручным управлением памятью, чем объясняются высокие показатели его скорости. Большая часть составляющих Bun была реализована с нуля. Таким образом, Bun это: Впечатляет, не правда ли? Рассмотрим несколько примеров использования Bun для разработки серверных и клиентских приложений. Начнем с установки. Для установки Bun достаточно открыть терминал и выполнить следующую команду: Обратите внимание: для установки Bun в Windows требуется WSL (Windows Subsystem for Linux — подсистема Windows для Linux). Для ее установки необходимо открыть PowerShell в режиме администратора и выполнить команду wsl --install, после чего — перезагрузить систему и дождаться установки Ubuntu. После установки Ubuntu открываем приложение wsl и выполняем команду для установки Bun. Проверить корректность установки (версию) Bun можно с помощью команды bun --version (в моем случае — это 0.4.0). Создаем директорию bun, переходим в нее и создаем файлы hello.txt и cat.js: Редактируем hello.txt: Редактируем cat.js: Выполняем команду bun ./cat.js ./hello.txt: 
 Выполняем команду bun ./cat.js ./hell.txt: 
 Создаем файлы index.html и http.js: Редактируем index.html: Редактируем http.js: Выполняем команду bun ./http.js для запуска сервера и переходим по адресу http://localhost:3000: 
 Пробуем перейти по другому адресу, например, http://localhost:3000/test: 
 Объекты выполненных нами запросов выглядят следующим образом: 
 Создаем файлы ws.html и ws.js: Редактируем ws.html: Редактируем ws.js: Выполняем команду bun --hot ./ws.js для запуска сервера. Флаг --hot указывает Bun перезапускать сервер при изменении ws.js (что-то типа nodemon для Node.js, работает не очень стабильно). Открываем ws.html в 2 вкладках браузера, подключаемся к серверу и переписываемся: 
 Создаем файл test.js следующего содержания: Для чистоты эксперимента я установил Node.js 18 версии в wsl с помощью команды curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs. Выполнение кода test.js с помощью Bun занимает 15-30 мс: 
 А с помощью Node.js — 115-125 мс: 
 Кажется, что вывод о более высокой производительности Bun по сравнению с Node.js очевиден, но давайте не будем спешить. Перепишем код test.js следующим образом: Выполнение этого кода с помощью Bun занимает в среднем 0,025 мс: 
 А с помощью Node.js — 0,002 мс: 
 Получается, что при работе с выводом (stdout) Bun производительнее Node.js в 7 раз (115 / 15 = 7,66...), а при выполнении вычислительных операций (по крайней мере, когда речь идет о рекурсии) Node.js производительнее Bun в 12 раз (0,025 / 0,002 = 12.5) (я что-то делаю не так? Поделитесь своим мнением на этот счет в комментариях). Теперь поговорим об использовании Bun для разработки клиентских приложений. В настоящее время Bun предоставляет только один готовый шаблон — для React. На подходе шаблон для Next.js, но там еще много всего не реализовано. Bun также можно использовать с SPA на чистом JS. Для создания шаблона React-приложения с помощью Bun достаточно выполнить следующую команду: Создаем проект react-app-bun: Выполнение этой операции занимает 10,6 сек: 
 Для сравнения, создание проекта с помощью Create React App (npx create-react-app react-app-cra) занимает больше 2 мин: 
 Однако Vite демонстрирует очень близкий показатель скорости: Yarn идет в комплекте с Node.js и npm. Команда yarn create vite создаст директорию с файлами без установки зависимостей. 
 Переходим в директорию react-app-bun и запускаем сервер для разработки: Запуск происходит практически мгновенно. Справедливости ради следует отметить, что запуск сервера для разработки с помощью Vite также происходит очень быстро, чего не скажешь о CRA. Для добавления npm-пакетов используется команда bun install или bun add (для установки зависимостей для разработки используется флаг --development или -d), для удаления — bun remove. Для выполнения команд, определенных в разделе scripts файла package.json используется команда bun run [command-name] (run можно опустить). Что касается TS, то в настоящее время типы для Bun находятся в пакете bun-types: tsconfig.json: Пожалуй, это все, что я хотел рассказать вам о Bun. На мой взгляд, основным преимуществом Bun является то, что он объединяет в себе целую кучу инструментов, которые используются для разработки современных веб-приложений, и при этом демонстрирует очень высокие показатели скорости. Поэтому я буду с нетерпением ждать релиза его стабильной версии. Надеюсь, вы узнали что-то новое и не зря потратили время. Благодарю за внимание и happy coding!  JavaScript Developer