Bun v1.1.30

good-penguin.png

Тихо и незаметно была опубликована новая стабильная версия 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 позволяет собрать всё приложение со всеми ресурсами в единый исполняемый файл.

>>> Подробности

©  Linux.org.ru