6 Punkte von GN⁺ 2024-04-02 | 1 Kommentare | Auf WhatsApp teilen

Windows-Unterstützung

  • Bun kann unter Windows 10 und neuer ausgeführt werden
  • Besteht 98 % der Bun-Testsuite von macOS und Linux
  • Mit integriertem npm-kompatiblem Paketmanager ist die Installation einer Vite-React-App 18-mal schneller als mit yarn und 30-mal schneller als mit npm
  • Unterstützt schnellere Skriptausführung unter Windows mit dem Dateiformat .bunx
  • Optimiert die Node.js-API unter Windows durch Nutzung der schnellsten Systemaufrufe
    • Beispiel: fs.readdir() ist 58 % schneller als bei Node.js

Bun ist eine JavaScript-Runtime

  • Unterstützt JavaScript, TypeScript und JSX
  • Kommandozeilen-Tools wie tsc sind bis zu 2-mal schneller als in Bun 1.0
  • Bun Shell ist jetzt eine plattformübergreifende Shell, die auch unter Windows verfügbar ist
    • Enthält Core-Utilities wie ls, rm, cat usw.
    • Shell kann aus JavaScript und TypeScript über die API Bun.$ ausgeführt werden
  • Bun.Glob
    • Bietet eine integrierte Glob-API für Datei- und String-Matching
    • Ähnlich wie fast-glob und micromatch, aber beim String-Matching 3-mal schneller
  • Bun.Semver
  • Neue Semver-API zum Parsen und Sortieren von semver-Strings
  • Ähnlich wie das Paket node-semver, aber 20-mal schneller
  • Bun.stringWidth()
    • Neue API zur Messung der sichtbaren Breite von Strings im Terminal
    • Unterstützt ANSI-Escape-Codes, vollbreite Zeichen, Grapheme und Emojis
  • server.url: Mit der Eigenschaft server.url kann die URL eines mit Bun.serve() erstellten HTTP-Servers abgerufen werden
  • server.requestIP(): Mit der Methode server.requestIP() kann die IP-Adresse einer HTTP-Anfrage abgerufen werden
  • subprocess.resourceUsage(): Auf die CPU- und Speicherauslastung eines mit Bun.spawn() erzeugten Unterprozesses kann über die Methode resourceUsage() zugegriffen werden
  • Verbesserte Node.js-Kompatibilität
    • Verschiedene API-Verbesserungen, darunter Unterstützung für die Client-API von node:http2, Date.parse()-Kompatibilität und rekursives fs.readdir()
    • IPC zwischen Bun und Node.js möglich
    • Unterstützt auch einige nicht dokumentierte Node.js-APIs
  • Web API: Unterstützung für standardisierte Web-APIs wie WebSocket, performance.mark(), fetch() mit Brotli-Komprimierung und URL.canParse()

Bun ist ein npm-kompatibler Paketmanager

  • Mit bun install lassen sich npm-Pakete bis zu 29-mal schneller installieren
  • Verbesserungen bei Lifecycle-Skripten, trustedDependencies, bun pm trust und weiteren Funktionen

Bun ist ein JavaScript-Bundler

  • Unterstützt das Bundling von unter Node.js ausführbarem Code mit bun build --target=node
  • Mit dem Flag --compile können TypeScript- und JavaScript-Dateien zu ausführbaren Einzeldateien kompiliert werden

Bun ist ein Test-Runner

  • Bietet ein integriertes Testmodul mit derselben API wie Jest
  • Neue expect()-Matcher hinzugefügt und Unterstützung für Module-Mocking

Integrierte SQLite-Unterstützung

  • SQLite-Unterstützung mit einer von better-sqlite3 inspirierten API
  • Verbesserungen bei Multi-Statement-Queries, detaillierten Fehlermeldungen, Datenbankimport und integrierter Unterstützung

Meinung von GN⁺

  • Bun ist ein JavaScript-Toolkit, das die Performance bei gleichzeitiger Kompatibilität mit Node.js deutlich verbessert und durch die Windows-Unterstützung eine breitere Entwickler-Community erreichen kann.
  • Der integrierte Test-Runner und die SQLite-Unterstützung ermöglichen es Entwicklern, auch ohne zusätzliche Tools effizient zu arbeiten.
  • Die hohe Geschwindigkeit von Bun und die verbesserte Developer Experience können sich besonders bei großen Projekten oder performancekritischen Anwendungen bemerkbar machen.
  • Trotz der vielen Funktionen und Verbesserungen von Bun sind kontinuierliche Weiterentwicklung und Feedback aus der Community nötig, um vollständige Kompatibilität mit dem breiten Paket-Ökosystem von Node.js zu erreichen.
  • Es braucht weitere Analysen dazu, wie die neuen Funktionen von Bun mit bestehenden Node.js-basierten Tools konkurrieren oder mit ihnen zusammenarbeiten können.

1 Kommentare

 
GN⁺ 2024-04-02
Hacker-News-Kommentare
  • Beeindruckende Liste an Änderungen in Bun

    • Bun wirkt wie die ideale Alternative zu Node.js, und dass Zeit in die Windows-Unterstützung investiert wurde, ist etwas, das in der Welt der Webentwicklung oft übersehen wird.
    • Die Aussage „Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux.“ wirft die Frage auf, ob das bedeutet, dass die Windows-Version trotz fehlgeschlagener Tests veröffentlicht wurde, oder ob das missverstanden wurde.
  • Buns Makro-Funktion

    • Es wurde entdeckt, dass Bun eine grundlegende Makro-Funktion besitzt, mit der Code zur Bundle-Zeit ausgeführt werden kann. Das ist eine sehr interessante Funktion.
  • Fragen zum Einsatz von Bun und Deno

    • Es wurde klar, dass Kompatibilität mit Node.js für Bun und Deno essenziell ist, dennoch gibt es bei VC-Finanzierung Fragen zur langfristigen Nachhaltigkeit des Produkts.
    • Trotz ihrer Zugehörigkeit zum gleichen, teils unvollkommenen Ökosystem wie Node.js ist nicht eindeutig, warum man Bun oder Deno unbedingt verwenden sollte.
  • Ein großer Fan von Bun

    • Bun wurde zunächst wegen der Kompatibilität mit TypeScript genutzt und wird wegen der Performance weiterverwendet.
    • Deno wurde ausprobiert, war aber schwer zu verwenden, während Bun leicht zu integrieren war und insgesamt eine sehr angenehme Erfahrung bot.
  • Einschätzung zum neuen Bun-Release

    • Es wurde zwar das Video zu Bun angesehen, aber die Diagramme waren nicht klar genug, um zu erkennen, ob mit früheren Bun-Versionen oder mit Node.js verglichen wurde.
    • Die Erfahrungen mit Bun in Nebenprojekten waren gut, und die eingebauten APIs funktionieren gut. Es besteht der Wunsch, dass Deno und Node.js ebenfalls einige dieser APIs übernehmen.
    • Bun sammelt standardmäßig gewisse Telemetriedaten. Das wird im Installationsskript nicht erwähnt, sondern nur in der Bunfile-Dokumentation.
    • Es wäre wünschenswert, wenn Nutzer während der Installation Hinweise zum Deaktivieren der Telemetrie bekämen und diese optional aktivieren könnten.
    • Bun bietet eine Option, den .js-Einstiegspunkt eines Projekts und die Runtime zu bündeln, um eine ausführbare Datei ohne Abhängigkeiten zu erzeugen. Das ist nützlich, wenn man Nutzern ein einzelnes Binary bereitstellen möchte, allerdings ist die Dateigröße derzeit noch recht groß (bei kleinen Projekten unter GNU/Linux über 90 MB).
    • Es wird gefragt, ob Bun Optionen anbieten wird, bestimmte Funktionen zu deaktivieren, um kleinere Binaries zu erhalten.
    • Bun wird gerade als Haxe-Target ausprobiert und ist eine überlegenswerte Wahl, wenn man Haxe TypeScript vorzieht oder einem bestehenden Haxe-Projekt einen Webserver hinzufügen möchte.
  • Bitte an das Bun-Team

    • Es gibt die Bitte um eine klare Support-Richtlinie bzw. einen Lifecycle-Zeitplan. Wichtig ist auch Klarheit über Stabilitätsgarantien zwischen Versionen und Modulen.
  • Beteiligung eines Bun-Entwicklers

    • Ein Bun-Entwickler erklärt, dass er bereit ist, Fragen zu beantworten. Außerdem erwähnt er, dass Bun v1.1 noch kompiliert und bis zur Fertigstellung etwa 20 Minuten braucht.
  • Fragen zur Stabilität von Bun

    • Bun wurde in mehreren Projekten dreimal ausprobiert, dabei kam es jedoch während der Runtime oder bei der Paketinstallation zu Segmentation Faults.
  • Buns Erlösmodell und VC-Finanzierung

    • Es gibt Fragen dazu, wie Buns Erlösmodell aussieht und was passiert, wenn die VC-Finanzierung aufgebraucht ist.