- Das REPL wurde vollständig in Zig neu geschrieben und bietet sofortige Ausführung sowie eine umfangreiche Terminal-UI mit Funktionen wie Kopieren in die Zwischenablage, Tab-Vervollständigung und Speicherung des Verlaufs
- Mit dem Befehl zur Kompilierung für das Browser-Ziel lässt sich eine einzelne HTML-Datei erzeugen, in die alles inline eingebettet ist, sodass sie auch ohne Server ausgeführt werden kann
- TC39-konforme ES-Dekoratoren werden vollständig unterstützt, sodass sich aktuelle Syntax wie
accessor, Symbol.metadata und addInitializer nutzen lässt
- Enthält zahlreiche Plattform- und Performance-Verbesserungen wie Windows-ARM64-Unterstützung, Optimierung von Barrel-Imports, Option für Test-Wiederholungen und eine leistungsstärkere JavaScriptCore-Engine
- Insgesamt ein Release, das Developer Experience, Performance und Kompatibilität von Bun deutlich verbessert
Neues REPL
- Das REPL wurde durch eine native Implementierung auf Zig-Basis ersetzt und kann ohne Abhängigkeit von externen npm-Paketen sofort ausgeführt werden
- Unterstützt Syntax-Highlighting, Emacs-Keybindings, Tab-Vervollständigung, Speicherung des Verlaufs und mehrzeilige Eingaben
- Bietet eingebaute Befehle wie
.copy, .help, .exit und .editor
- Unterstützt persistente
const-/let-Deklarationen, top-level await sowie sowohl import als auch require
--compile --target=browser
- Mit
bun build --compile --target=browser wird HTML erzeugt, in das JavaScript, CSS und Assets inline eingebettet sind
- Tags wie
<script src="..."> und <link rel="stylesheet"> werden jeweils in Inline-Code umgewandelt
- Kann auch in einer
file://-Umgebung ohne CORS-Beschränkungen ausgeführt werden
- Unterstützt TypeScript, JSX, React, CSS, ESM und CJS
TC39-konforme ES-Dekoratoren
- Stage-3-Standard-Dekoratoren werden vollständig unterstützt
- Implementiert aktuelle Spezifikationen wie das Schlüsselwort
accessor, Symbol.metadata und ClassMethodDecoratorContext
- Unterstützt Feld-, Methoden- und Klassen-Dekoratoren sowie Initialisierer (
addInitializer)
- Auch bestehende experimentelle TypeScript-Dekoratoren (
experimentalDecorators) funktionieren weiterhin
Windows-ARM64-Unterstützung
- Bun kann auf ARM64-basiertem Windows wie Snapdragon-Systemen ausgeführt und gebaut werden
- Cross-Compilation wird für das Ziel
bun-windows-arm64 unterstützt
- Kann sowohl über CLI als auch API identisch verwendet werden
Optimierung von Barrel-Imports
- Erkennt automatisch Re-Export-Strukturen von Barrel-Dateien wie bei
import { Button } from 'antd'
- Automatische Optimierung bei gesetztem
"sideEffects": false
- Kann mit der Option
optimizeImports explizit angegeben werden
- Durch das Parsen nur benötigter Submodule wird die Build-Geschwindigkeit um bis zu das Doppelte erhöht
Optimierung der Bundle-Ausgabe
- In ESM-/CJS-Bundles werden Anzahl der Closures und Heap-Speichernutzung reduziert
- 11 % weniger Objekte, 4 MB weniger Heap-Größe sowie deutlich weniger Funktions- und Umgebungsobjekte
- Wird automatisch ohne Codeänderungen angewendet
bun test --retry
- Ermöglicht das Festlegen einer Standardanzahl von Wiederholungen für alle Tests (
--retry N)
- Die Option
{ retry: N } einzelner Tests hat Vorrang
- Im JUnit-XML-Reporter wird jeder Versuch als eigenes
<testcase> protokolliert
Verbesserungen bei Bun.generateHeapSnapshot("v8")
- Mit der Option
"arraybuffer" wird der Heap-Snapshot als ArrayBuffer zurückgegeben
- Vermeidet den Overhead der String-Konvertierung bei der Verarbeitung großer Snapshots
TLS- und Zertifikats-Updates
- Verbesserte Performance durch Keepalive-Unterstützung für mTLS- und benutzerdefinierte CA-Verbindungen
- Gleiche TLS-Einstellungen werden in einer globalen Registry dedupliziert
- Root-Zertifikate wurden auf NSS 3.119 (Firefox 147.0.3) aktualisiert
- Vier CommScope-Root-Zertifikate wurden entfernt
Upgrade der JavaScriptCore-Engine
- Zahlreiche Performance-Verbesserungen, darunter 168-fach schnelleres String-Slicing, 10,5-fach schnelleres
endsWith, 1,6-fach schnellerer Zugriff auf RegExp-Flags und bis zu 7-fach schnelleres path.parse()
structuredClone ist bei Arrays und Arrays von Objekten bis zu 25-mal schneller
Buffer.slice() und subarray() wurden um etwa das 1,8-Fache verbessert
- Interne Optimierungen bei
BigInt, String-Iteratoren und Integer-Operationen
Wichtige Bugfixes
- Behebt ein Problem mit der Pipe-Kompatibilität zu Python-asyncio-MCP-Servern (
Bun.spawn)
- Node.js-Kompatibilität: zahlreiche Korrekturen bei
AsyncLocalStorage, fs.watch, Verarbeitung von http-Headern und GC-bezogenen Abstürzen
- Bun API: Abstürze und Speicherlecks rund um
spawn, plugin, sql und build behoben
- Umfassende Stabilitätsverbesserungen bei WebSocket, bun install, CSS-Parser, bun shell und Windows-Umgebungen
- Sicherheitslücken behoben, darunter HTTP-Header-Injection, Pfad-Traversal in Tarballs und S3-Stream-Lecks
1 Kommentare
Ich habe wirklich ziemlich lange verfolgt, wie sich Bun entwickelt, und es seit den Anfangstagen immer mal wieder benutzt. Dabei hatte ich den Eindruck, dass die Bun-Entwickler die JS/TS-Welt ganz aufrichtig schneller machen wollen. Erstaunlich. Wirklich ...