JavaScript-Runtime Bun 1.0 ist produktionsreif

Die junge, Performance-fokussierte Runtime Bun hat die Produktionsreife erreicht und versteht sich als Konkurrenz zum deutlich älteren Node.js.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Monorail,Motion,Blur,In,Dubai,,Uae.,Dubai,Metro,,Abstract.,Fpv

(Bild: Grisha Bruev/Shutterstock.com)

Lesezeit: 3 Min.

Das Entwicklungsteam um Jarred Sumner hat Version 1.0 der JavaScript- und TypeScript-Runtime Bun veröffentlicht. Als All-in-One-Toolkit beschrieben, soll sich das 2021 entstandene Open-Source-Projekt durch eine hohe Geschwindigkeit sowie durch das Ausführen, Testen und Debuggen von JavaScript und TypeScript von einer einzelnen Datei bis hin zur Full-Stack-Anwendung auszeichnen.

Mit Version 1.0 gilt Bun nun als produktionsreif – zumindest was die nativen Builds für macOS und Linux betrifft. Unter Windows war bislang Windows Subsystem für Linux notwendig, um Bun zu verwenden. Nun steht ein experimenteller, nativer Build auch für Windows-User bereit, der allerdings eingeschränkte Funktionen besitzt und sich auf die JavaScript-Runtime beschränkt. Die weiteren Bestandteile von Bun – Package Manager, Test Runner und Bundler – sind im Windows-Build derzeit deaktiviert und auch die Performance wurde dort noch nicht optimiert.

Wie das Bun-Team ausführt, habe Node.js seit seiner Entstehung vor 14 Jahren immer neue Schichten an Tooling hinzugewonnen, was die Geschwindigkeit verringert und die Komplexität erhöht habe. An dessen Stelle soll Bun treten und sowohl für mehr Geschwindigkeit als auch weniger Komplexität sorgen. Das Funktionieren von JavaScript-Libraries und -Frameworks soll dabei nicht beeinträchtigt sein.

Bun lässt sich als "Drop-in-Ersatz" für Node.js verwenden, was bedeutet, dass Node.js-Anwendungen sowie npm-Packages damit unmittelbar funktionieren sollen. Beispielsweise bietet Bun integrierten Support für Node.js-APIs wie dessen integrierte Module fs, path und net sowie die globalen Variablen __dirname und process. Dabei betont das Bun-Team jedoch, dass es keine perfekte Kompatibilität mit Node.js geben könne.

Bis zu viermal schneller soll Bun verglichen mit Node.js starten können und diesen Vorteil bei TypeScript-Dateien weiter ausbauen, die transpiliert werden müssen, bevor Node.js sie ausführen kann. Nach Messungen des Entwicklungsteams führt Bun beispielsweise eine "Hello World"-TypeScript-Datei fünfmal schneller aus als es build mit Node.js kann:

Der Geschwindigkeitsvergleich beim Ausführen einer "Hello World"-TypeScript-Datei zeigt Bun im Vorteil.

(Bild: Bun-Blog)

Im Gegensatz zu Node.js, das auf Googles JavaScript-Engine V8 setzt, verwendet Bun Apples WebKit-Engine, die auch in Apples Browser Safari zum Einsatz kommt.

Nicht nur als Runtime, sondern auch als Package Manager, Test Runner und Bundler kann Bun fungieren. Als Package Manager soll Bun deutlich schneller sein als npm, yarn oder pnpm. Das integrierte Testing-Modul bun:test soll vollständig mit dem JavaScript-Testing-Framework Jest kompatibel sein. Daneben lässt sich Bun als Bundler und Minifier für JavaScript und TypeScript nutzen, um Code für den Browser, Node.js und weitere Plattformen zu bundlen.

Entwicklerinnen und Entwickler, die von der letzten Version Bun 0.8 auf 1.0 umsteigen, werden unter anderem folgende Neuerungen feststellen: Bun kann nun mit Next.js, Astro und Nest.js umgehen und der veraltete Befehl bun dev ist nicht mehr verwendbar.

Wer weitere Hintergründe zur Entstehung des in der Programmiersprache Zig geschriebenen Projekts erfahren möchte, findet diese in einem Interview von heise Developer mit Entwickler Jarred Sumner, der Bun federführend vorantreibt.

Alle Informationen zum Release der ersten stabilen Version sind auf dem Bun-Blog zu finden.

(mai)