Тихо и незабележимо е публикувана новата стабилна версия 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 на C език – ffi, вграден инструментариум за тестване и много други възможности.
Освен това, в експериментален режим Bun поддържа интеграция с C код чрез прозрачен извикване на 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("Какъв е отговорът на вселената?", hello()); $ bun hello.js Какъв е отговорът на вселената? 42
В това издание сред другото е добавен парсер CSS, базиран на LightningCSS , който специално за това е пренаписан от стари технологии като rust на zig, което позволи прозрачно интегриране на css и typescript, и сега е възможно директно да се импортира css файл в модул typescript:
index.ts: import ".\/style.css"; import Component from ".\/MyComponent.tsx"; \/\/ … останалата част от вашето приложение style.css: \/* резултат от сборката: *\/ \/* style.css *\/ .hello { background: red; } \/* MyComponent.css *\/ .MyComponent { color: green; }
Bun позволява събере всичко приложение с всички ресурси в единен изпълним файл.
Източник: linux.org.ru
