Skip to content
ai news

Bun 1.4: Das Update, das Ihre Abhängigkeiten eliminiert

Buns kontroverses Rust-Rewrite ist da, und es geht nicht nur um Geschwindigkeit. Eine neue integrierte Standardbibliothek zielt darauf ab, Abhängigkeits-Bloat zu beseitigen und Ihre Lieferkette abzusichern, doch geht das zu weit?

Jonah Park
Bun 1.4: Das Update, das Ihre Abhängigkeiten eliminiert

Die JavaScript-Standardbibliothek, die wir nie hatten

Das JavaScript-Ökosystem kämpft seit langem mit dem Fehlen einer umfassenden Standardbibliothek. Diese Lücke zwang Entwickler dazu, zahlreiche Mikro-Pakete zu integrieren, was zu erheblichem Abhängigkeits-Bloat in Projekten beitrug und die Anfälligkeit für Sicherheitslücken in der Lieferkette erhöhte. Diese Abhängigkeit von fragmentierten Drittanbieterlösungen wurde zu einer dauerhaften architektonischen Herausforderung.

Bun 1.4, eingeführt als The Rust Rewrite, geht dieses Problem direkt an. Die Laufzeitumgebung bündelt nun essenzielle Hochleistungs-Utilities, die in Rust entwickelt wurden, um Kernfunktionen bereitzustellen, für die zuvor externe Pakete erforderlich waren. Dies macht über 15 gängige Abhängigkeiten in verschiedenen Projekttypen überflüssig.

Konkrete Beispiele für den Ersatz von Abhängigkeiten sind:

  • Bun.WebView ersetzt Playwright und Puppeteer für die Steuerung von Headless-Browsern.
  • Bun.Image übernimmt die Bildbearbeitung und macht Bibliotheken wie Sharp überflüssig.
  • Bun.Markdown integriert eine robuste Markdown-Analyse.
  • Bun.Terminal bietet ein integriertes Pseudo-Terminal und entfernt die Abhängigkeit von node-pty.

Dieser integrierte Ansatz signalisiert einen großen philosophischen Wandel für das JavaScript-Ökosystem. Er bewegt sich weg von einer Kultur der stückweisen Mikro-Pakete hin zu einer robusteren 'Batteries-included'-Laufzeitumgebung. Bun 1.4 zielt darauf ab, grundlegende Fähigkeiten zu konsolidieren, die Stabilität zu fördern und den Projekt-Overhead zu reduzieren.

Eliminieren Sie Puppeteer & Sharp mit nativen APIs

Bun 1.4 führt Bun.WebView ein, einen integrierten Headless-Browser für die Automatisierung, der darauf ausgelegt ist, Abhängigkeiten wie Playwright und Puppeteer zu ersetzen. Auf dem Mac nutzt Bun.WebView das systemeigene WebKit, die Engine hinter Safari, und erfordert keine zusätzlichen Installationen. Für Windows- und Linux-Benutzer nutzt es eine bestehende Chrome- oder Chromium-Instanz, die in der Lage ist, einen Headless-Subprozess auszuführen oder eine Verbindung zu einem bereits geöffneten Browser herzustellen.

Diese native Integration sendet native Browser-Ereignisse für Interaktionen, wodurch Klicks, Eingaben und Scrollen für Webseiten menschlicher wirken. Die API deckt grundlegende Operationen wie das Finden von Elementen, Klicken, Tippen und das Ausführen von seitenspezifischem JavaScript via evaluate ab. Obwohl effektiv für leichtgewichtige Browser-Automatisierung und Scraping, ersetzt Bun.WebView Tools wie Playwright noch nicht vollständig, da Funktionen wie ein Test-Runner oder Trace-Viewer fehlen.

Um den Abhängigkeits-Bloat weiter zu reduzieren, dient Bun.Image als leistungsstarker Ersatz für Sharp. Diese native Bildbibliothek bietet verkettbare Operationen direkt innerhalb von Bun. Entwickler können Bilder effizient skalieren, drehen, spiegeln, Helligkeit und Schärfe anpassen sowie Formate konvertieren. Bun.Image liest zudem Metadaten wie Breite, Höhe und Format, ohne die vollständigen Pixeldaten dekodieren zu müssen. Dies eliminiert die Notwendigkeit für komplexe native Builds und löst Bereitstellungsprobleme, die häufig bei externen Bildverarbeitungsbibliotheken auftreten.

Ihr Entwicklungs-Workflow, jetzt integriert

Bun 1.4 führt einen integrierten Skript-Runner ein, der externe Abhängigkeiten wie concurrently oder npm-run-all überflüssig macht. Entwickler können nun mehrere package.json-Skripte gleichzeitig mit --parallel oder nacheinander mit --sequential ausführen. Diese Funktion umfasst eine Ausgabe mit Präfix des Skriptnamens, Glob-Matching für Skriptnamen und Workspace-Filterung. Eine Option ermöglicht es zudem, dass andere Skripte weiterlaufen, selbst wenn eines einen Fehler verursacht.

Für die Aufgabenplanung ersetzt Bun.cron Pakete wie node-cron. Es unterstützt zwei Modi: Eine Funktion läuft für einfache Jobs auf dem Event-Loop, während ein Skript einen nativen Cron-Job auf Betriebssystemebene registriert. Diese systemweiten Jobs nutzen crontab unter Linux, launchd unter Mac und den Aufgabenplaner unter Windows für eine robuste, persistente Ausführung. Die Standard-Cron-Syntax, einschließlich benannter Tage und Helfer wie daily, wird unterstützt.

Eine Pseudo-Terminal-API, Bun.Terminal, ist direkt in die Laufzeitumgebung integriert und macht node-pty überflüssig. Dies ermöglicht es JavaScript, interaktive Befehlszeilenanwendungen wie Bash, Vim oder Htop zu steuern. Bun.spawn erhält eine terminal-Option, die sicherstellt, dass Unterprozesse eine echte Terminalumgebung für farbige Ausgaben, Cursor-Bewegungen und interaktive Eingabeaufforderungen erhalten. Weitere Details zu diesen und anderen Funktionen finden Sie in den Versionshinweisen zu Bun 1.4.

Gefällt Ihnen der Artikel? Erhalten Sie jeden Morgen einen wie diesen per E-Mail.

eine E-Mail pro Tag · Abmeldung mit zwei Klicks · kein Tracking durch Dritte

Die wahre Dividende des Rust-Rewrites

Das grundlegende Rust Rewrite von Bun 1.4 liefert erhebliche Leistungssteigerungen, die wahre Dividende der Neuarchitektur. Diese Überarbeitung führt zu schnelleren Startzeiten und einer messbar geringeren CPU-Auslastung bei allen Vorgängen. Bemerkenswert ist, dass die Bun-Binärdatei trotz der Hinzufügung umfangreicher neuer Funktionen wie Bun.WebView und Bun.Image um 17 % kleiner ist.

Zusätzliche Dienstprogramme optimieren die Entwicklungsworkflows weiter. Bun.Archive bietet eine schnelle, native Implementierung zur Untersuchung von Tarballs, die es Entwicklern ermöglicht, bestimmte Dateien, wie z. B. eine package.json aus einem .tgz-Archiv, ohne vollständige Extraktion zu lesen. Bun führt außerdem eine native Unterstützung für das Parsen und Stringifizieren von JSON5 und XML ein, wodurch Drittanbieter-Bibliotheken für diese gängigen Datenformate überflüssig werden.

Eine bedeutende Verbesserung der Lebensqualität für das Paketmanagement ist der neue globale virtuelle Speicher, isolatedLinker. Diese Funktion spart erheblich Festplattenspeicher, indem installierte Pakete per Symlink in die node_modules-Ordner der einzelnen Projekte eingebunden werden, anstatt sie zu duplizieren. Der isolatedLinker beschleunigt zudem nachfolgende bun install-Befehle über mehrere Projekte hinweg und steigert so die allgemeine Entwicklereffizienz.

Häufig gestellte Fragen

Was ist die größte Änderung in Bun 1.4?

Das 'Rust Rewrite' führt eine leistungsstarke integrierte Standardbibliothek ein, die darauf abzielt, über 15 gängige NPM-Abhängigkeiten für Aufgaben wie Browser-Automatisierung, Bildverarbeitung und Cron-Jobs direkt innerhalb der Laufzeitumgebung zu ersetzen.

Ersetzt Bun 1.4 Playwright oder Puppeteer vollständig?

Nicht vollständig. Bun.WebView eignet sich hervorragend für leichtgewichtige Browser-Automatisierung, Scraping und UI-Skripte. Es fehlen jedoch derzeit fortgeschrittene Funktionen von Playwright, wie ein dedizierter Test-Runner und Trace-Viewer.

Welche wichtigen Abhängigkeiten kann Bun 1.4 ersetzen?

Bun 1.4 kann Pakete wie Playwright/Puppeteer (Bun.WebView), Sharp (Bun.Image), Marked (Bun.Markdown), node-cron (Bun.cron), concurrently (parallele Skripte) sowie verschiedene Tar- und ANSI-String-Bibliotheken ersetzen.

Wie funktioniert der globale virtuelle Speicher von Bun 1.4?

Wenn der 'isolatedLinker' aktiviert ist, extrahiert bun install Pakete in einen einzigen globalen Speicher auf Ihrem Computer. Anschließend werden Symlinks verwendet, um sie mit den node_modules Ihres Projekts zu verbinden, was erheblich Festplattenspeicher spart und Installationen über mehrere Projekte hinweg beschleunigt.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only