Тихо и незаметно была опубликована новая стабильная версия Bun – 1.1.30.
Bun – это среда выполнения ECMAScript / JavaScript, по многим параметрам аналогичная nodejs. В основе Bun используется JavaScriptCore от Apple, но сам Bun как и многие его модули написан на языке zig. Bun старается быть максимально совместимым с nodejs по опциям командной строки, поддерживает модули ECMAScript (ESM) и CommonJS. Управление пакетами npm и поддержка typescript встроены прямо в приложение как нативный код, и программы на typescript могут исполняться напрямую интерпретатором без предварительной конфигурации.
Однако Bun не является лишь «копией» nodejs по своим возможностям. Помимо более быстрой работы в ряде сценариев (начиная прямо с запуска приложения) и почти полной поддержки доступного в nodejs API, Bun предоставляет широкие возможности для приложений на сервере – от работы с файлами до трансформации HTML-дерева (HTMLRewriter), модулем транспиляции typescript (Bun.Transpiler), встроенной работе с базами данных sqlite, модулей для взаимодействия с нативными библиотеками платформы через API яызка Си – ffi, встроенный инструментарий тестирования и множество других возможностей.
Кроме того, в экспериментальном режиме Bun поддерживает интеграцию с кодом на Си через прозрачный вызов tcc:
hello.c:
int hello()
{
return 42;
}
hello.js:
import { cc } from "bun:ffi";
import source from "./hello.c" with { type: "file" };
const {
symbols: { hello },
} = cc({
source,
symbols: {
hello: {
args: [],
returns: "int",
},
},
});
console.log("What is the answer to the universe?", hello());
$ bun hello.js
What is the answer to the universe? 42
В этом релизе среди прочего был добавлен парсер CSS на основе LightningCSS который специально для этого был переписан с таких legacy-технологий как rust на zig, что позволило прозрачно интегрировать css и typescript, и теперь можно импортировать css-файл напрямую в модуль typescript:
index.ts:
import "./style.css";
import Component from "./MyComponent.tsx";
// ... rest of your app
style.css:
/* результат сборки: */
/* style.css */
.hello {
background: red;
}
/* MyComponent.css */
.MyComponent {
color: green;
}
Bun позволяет собрать всё приложение со всеми ресурсами в единый исполняемый файл.
>>> Подробности