Bun 1.4 ist erschienen, und die wichtigste Änderung ist strukturell: Die Runtime wurde von Zig nach Rust umgeschrieben. Claude Code läuft seit Monaten auf dem Rust-Port, und Prisma hat Prisma Compute darauf aufgebaut. Zudem wurden über 2.900 Issues behoben.
Die Node.js-Kompatibilität macht den größten Sprung seit Bun 1.0. Bun führt jetzt 1.517 zusätzliche Tests aus der Node.js-Testsuite bei jedem Commit aus. node:http, node:fs, node:cluster, node:timers, node:zlib, node:vm und node:stream bestehen 97% von Nodes eigenen Tests, node:quic 99%, node:events, node:trace_events und node:sqlite 100%. Playwright, vitest inklusive Coverage, Next.js 16.3 mit Turbopack und React Compiler, OpenTelemetry-Instrumentierung und Datadogs dd-trace laufen nun unter Bun. Neu ohne Änderungen funktionieren unter anderem Nuxt, testcontainers, amqplib, TypeORM, nock, Fastifys inject() und Streaming-Uploads des AWS-S3-Clients.
Der Ressourcenverbrauch sinkt deutlich. Bun setzt nun vollständig auf den mimalloc-Allocator, erweitert um Partial Page Clearing und einen Scavenger-Thread, der Speicher freigibt, während JavaScript im Leerlauf ist. Die Produktions-CPU-Last von Claude Code halbierte sich: p99 von 24% auf 10%, p50 von 5,8% auf 2,5%. Bei einer Minimalanwendung sinkt die Idle-CPU um den Faktor fünf. HTTP-Server-Workloads benötigen 13% bis 48% weniger Speicher; ein Fastify-Benchmark liegt bei 120 MB statt 233 MB unter Bun 1.3. Ein Next.js-App-Router-SSR-Muster, das in 1.3 unbegrenzt wuchs, stabilisiert sich bei 238 MB über 4.000 Seiten, unter Nodes 410 MB.
Der Start ist unter Windows 2,5-mal schneller (15,5 ms für hello.js gegenüber 40,1 ms bei Node.js 26) und unter Linux doppelt so schnell mit 5,1 ms bei weniger als halbem Speicherverbrauch. Linux- und Windows-Binaries werden bis zu 17% kleiner.
ReadableStream, WritableStream und TransformStream sind jetzt nativ implementiert und bestehen 100% der Web Platform Tests. In Buns 64-MB-Pipeline-Benchmarks läuft ein Download über DecompressionStream und TextDecoderStream mit 1.519 MB/s, gegenüber 204 MB/s bei Node.js 26 und 530 MB/s bei Deno 2.9. CompressionStream und DecompressionStream sind nativ, mit 2.291 MB/s bei der Gzip-Dekompression gegenüber Nodes 491 MB/s. Response.clone() und Request.clone() teilen Body-Chunks nun statt sie zu kopieren. Bun.serve wendet Backpressure auf Stream-Bodies an, sodass ein langsamer Client höchstens einen Puffer Serverspeicher belegt.
Die Standardbibliothek wächst und ersetzt 15 gängige npm-Pakete. Bun.Image dekodiert, skaliert, rotiert und enkodiert JPEG, PNG, WebP, GIF und BMP mit einer sharp-ähnlichen API, ohne natives Addon, und ist bei einer Resize-Encode-Pipeline 1,38-mal schneller als sharp. Bun.WebView steuert Headless-Browser über das System-WebKit auf macOS oder ein installiertes Chrome, Chromium oder Edge. Bun.markdown parst GFM zu HTML, React-Elementen oder eigenen Render-Callbacks; die HTML-Ausgabe ist nicht sanitisiert. Bun.cron() registriert Jobs beim OS-Scheduler (crontab, launchd, Task Scheduler) oder führt Funktionen im Event Loop aus. Bun.Terminal ist ein eingebautes PTY als Ersatz für node-pty. bun run --parallel führt Skripte gleichzeitig mit präfixierter Ausgabe aus und ersetzt npm-run-all und concurrently. Bun.serve-Routen können nun Verzeichnisse mit sendfile, ETag, Range und 304 ausliefern, unter Linux via openat2 mit O_RESOLVE_BENEATH gegen Symlink-Ausbrüche geschützt. Hinzu kommen APIs für JSON5, XML, Tar-Archive und ANSI-bewusste String-Helfer.
bun:ffi läuft jetzt auf direkt in JavaScriptCore eingebauter FFI-Unterstützung und ersetzt TinyCC. Heiße Aufrufstellen werden per JIT zu direkten C-Aufrufen kompiliert. Ein leerer FFI-Aufruf sinkt von 2,13 ns auf 0,70 ns, Faktor drei. Der neue Typ buffer_length übergibt die Länge eines TypedArray zusammen mit dem Zeiger, und returns: "cstring" liefert normale Strings oder null.
Beim Debugging gibt es Markdown-native Werkzeuge. --cpu-prof-md und --heap-prof-md schreiben CPU- und Heap-Profile als Markdown-Berichte, klassische .cpuprofile- und .heapsnapshot-Ausgabe bleibt, und BUN_CPU_PROFILE=1 profilt Prozesse ohne Flag-Zugriff. Async Stack Traces verweisen Fehler aus fs.promises, fetch(), S3, DNS oder crypto zurück zum auslösenden await. process.on("memoryPressure") meldet knappen Systemspeicher auf macOS, Linux und Windows.
Im Netzwerkbereich gibt es experimentelles HTTP/3 in Bun.serve (http3: true, in einem Static-Route-Benchmark 2,7-mal schneller als HTTPS/1.1, noch nicht produktionsreif) sowie experimentelle HTTP/2- und HTTP/3-Clients in fetch() hinter Flags. Das Update erfolgt per bun upgrade.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.