Die neue JavaScript-Runtime Bun fordert Node, Deno & Co. heraus

Geschrieben in Zig und auf Basis der WebKit JavaScriptCore Engine will die neue Runtime Bun für JavaScript und TypeScript vor allem mit Tempo punkten.

In Pocket speichern vorlesen Druckansicht 23 Kommentare lesen

(Bild: Trismegist san/Shutterstock.com)

Lesezeit: 2 Min.

Als All-in-One-Runtime zum Bundlen, Transpilieren, Installieren und Ausführen von JavaScript- und TypeScript-Projekten tritt die neue JS-Runtime Bun gegen etablierte Konkurrenz wie Node und Deno an. Das von Jarred Sumner initiierte Open-Source-Projekt unter MIT-Lizenz hat gerade erst Version 0.1.1 erreicht und ist laut GitHub-Repo noch als "experimentelle Software" einzustufen. Geschrieben in der Programmiersprache Zig und auf Basis der WebKit JavaScriptCore Engine soll Bun aber insbesondere mit hohem Tempo punkten.

In seiner Ankündigung auf Twitter wirbt der ehemalige Stripe-Frontend-Engineer Sumner mit einigen selbst durchgeführten Benchmarks, die Buns Leistungen im Vergleich zu Node und Deno dokumentieren sollen. Beim server-seitigen Rendern von React verarbeite Bun demnach circa dreimal mehr http-Requests pro Sekunde als Node, und nahezu viermal mehr als Deno. Einen ähnlichen Vorsprung erziele Bun auch bei Abfragen in größeren Datenbanktabellen.

Sumner zufolge sei Bun von Grund auf neu geschrieben in der Community-getriebenen Programmiersprache Zig und profitiere von der Integration der WebKit JavaScriptCore Engine, die schneller arbeite als verbreitete Alternativen wie etwa V8. Bun wolle Entwicklerinnen und Entwickler aber vor allem mit einem Komplettpaket überzeugen – dazu gehören unter anderem ein JSX/TypeScript-Transpiler, ein npm-Client, ein Bundler sowie Clients für SQLite, HTTP und WebSocket.

Wie von Deno gewohnt, transpiliert auch Bun automatisch TypeScript – ebenso wie JS und JavaScript-XML-Syntax. Bun unterstützt zudem das Auflösen von Node.js-Modulen, sowohl mit CommonJS- als auch mit EcmaScript-Modulen (ESM). Damit sollte sich ein Großteil der npm-Packages nutzen lassen. Nativer Code lässt sich bei Bedarf zudem über bun:ffi (foreign function interface) aufrufen.

Bei der Entwicklung von Bun auf Zig zu vertrauen, einer aktuell in Version 0.9.1 ebenfalls noch in einem frühen Stadium befindlichen Sprache, begründet Sumner mit Vorteilen durch deren manuelle Low-Level-Speicherkontrolle und den Verzicht auf einen "versteckten Kontrollfluss". Entwicklerinnen und Entwickler hätten es dadurch einfacher, schnelle Software zu schreiben. Auf Speichersicherheit wie bei Rust, müssen sie hingegen verzichten.

Weitergehende Informationen zu Bun finden sich auf der Projekt-Website sowie im Repo auf GitHub. Bun ist derzeit für Linux, macOS und Windows Subsystem for Linux zur Verfügung.

(map)