Как стать автором
Обновить

Bun: новый рантайм для JavaScript

Время на прочтение 2 мин
Количество просмотров 18K

На днях произошёл релиз публичной беты. Давайте разберёмся, чем интересен Bun.

Что такое рантайм?

Среда выполнения/рантайм(runtime) в информатике — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. В среде выполнения, как правило, невозможно изменение исходного текста программы, но может осуществляться доступ к переменным окружения операционной системы, таблицам объектов и модулей разделяемых библиотек.

Bun конкурирует с хорошо известными NodeJS и Deno.

Как позиционирует себя Bun:

... Bun это новый JavaScript рантайм с нативным сборщиком, транспайлером, исполнителем задач и встроенным npm клиентом.

Главное отличие от конкурентов - скорость. И вот почему:

  • Bun использует движок JavaScriptCore(который под капотом у Safari), который немного быстрее запускается и исполняет команды.

  • Bun написан на Zig, низкоуровневом языке программирования, в котором реализовано ручное управление памятью.

  • Автор Bun регулярно оптимизирует код.

Что умеет Bun

Пробуем

Установка:

curl https://bun.sh/install | bash

Давайте напишем простой http server. Создаём файл http.js:

// http.js
export default {
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
};

Запускаем: bun run http.js

Проверяем, открыв в браузере http://localhost:3000

Итого

Так как это бета, то многие вещи не работают. Например, попробовав запустить mocha-тесты с моего NodeJS проекта выяснил, что:

  • не поддерживаются декораторы

  • не реализован встроенный модуль node:child_process

Есть список с тем, что пока не работает.

Можете попробовать вызвать bun install в своём проект и сравнить скорость установки пакетов в сравнении с npm/yarn


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

Думаю, что это будет хорошая альтернатива NodeJS/Deno/Babel/SWC/ESBuild/Vite/Webpack/Parcel/Mocha/Jest/TSC/(...?). Что думаете?

Теги:
Хабы:
+15
Комментарии 15
Комментарии Комментарии 15

Другие новости

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн