JavaScript-Runtime bun 0.5 ist mit npm Workspaces kompatibel

Das neue Minor Release kann erstmals npm Workspaces verwenden, beschleunigt die Buffer-Implementierung und arbeitet weiterhin an der Stabilität.

In Pocket speichern vorlesen Druckansicht
Woman,Working,At,Home,Office,Hand,On,Keyboard,Close,Up

(Bild: Undrey/Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Maika Möbus

Die JavaScript- und TypeScript-Runtime bun hat Version 0.5 erreicht. Das von Jarred Sumner ins Leben gerufene Open-Source-Projekt soll sich gegen die Konkurrenz wie Node.js und Deno behaupten können und sich vor allem durch eine hohe Performance auszeichnen. Das neue Release fügt die Möglichkeit hinzu, npm Workspaces zu verwenden und bringt eine Performancesteigerung sowie Stabilisierung für bestehende Features.

In bun 0.5 lassen sich npm Workspaces, ein Set von Features des npm CLI, in package.json nutzen. Workspaces sollen dazu dienen, komplexe Software als ein aus verschiedenen unabhängigen Paketen bestehendes Monorepo zu entwickeln. Dazu ist im workspaces-Feld der package.json eine Liste von Unterpaketen festzulegen. Gemäß Konvention sind diese in einem Verzeichnis namens packages abzulegen, wie das bun-Team zeigt:

{
  "name": "my-project",
  "version": "1.0.0",
  "workspaces": ["packages/a", "packages/b"]
}

Unter Verwendung von Workspaces installiert bun laut dem Entwicklungsteam das Remix-Monorepo unter Linux in etwa 500 Millisekunden. Das sei 28-mal schneller als npm install, 12-mal schneller als yarn install in Version 1 und 8-mal schneller als pnpm install.

Die Vorteile von Workspaces sollen das Aufteilen des Codes in logische Teile und das Deduplizieren von Dependencies umfassen, wie das bun-Team aufführt. Mit Globs für Workspace-Namen kann bun derzeit noch nicht umgehen, die Option soll jedoch folgen.

Mittels der integrierten Bun.dns-API kann bun nun Domain-Namen auflösen. Derzeit enthält Bun.dns als einzige Funktion lookup.

{
  "name": "my-project",
  "version": "1.0.0",
  "workspaces": ["packages/a", "packages/b"]
}

Neben vielen weiteren Neuerungen überarbeitet bun 0.5 einige bestehende Features, um deren Performance zu erhöhen. So soll ein new Buffer() zehnmal schneller sein als die bisherige Buffer-Implementierung, die Object.setPrototypeOf() zum Erstellen jeder neuen Instanz verwendete. Dank nativem Code von BoringSSL, einem auf die Bedürfnisse von Google zugeschnittenen Fork von OpenSSL, soll crypto.createHash() nun 50-mal schneller sein als bisher.

Im Rahmen der weiteren Stabilisierung der noch jungen Runtime hat bun install einige Bugfixes erhalten. Dazu zählt das Weitergeben des npm-auth-type header durch bun install.

Heise-Konferenz: enterJS Web-Performance Day

Die Veranstalter heise Developer, iX und dpunkt.verlag richten am 15. Februar 2023 den enterJS Web-Performance Day aus. Teilnehmende lernen dort State-of-the-Art Tools für mehr Geschwindigkeit kennen. Performance-Expertinnen und -Experten zeigen in sieben Online-Vorträgen, wie sich Webanwendungen beschleunigen lassen. Deep Dives zu Angular und zu JavaScript gibt es in 2-Tages-Workshops, die ebenfalls online stattfinden.

Alle Neuerungen in bun 0.5 finden Interessierte in einem Blogeintrag.

(mai)