Entwicklung & Code
Webentwicklung: Bun 1.3 wird zur Full-Stack-JavaScript-Runtime
Das JavaScript-Toolkit Bun 1.3 ist erschienen. Als bisher größtes Release angekündigt, bietet das Toolkit mit den vier Bestandteilen Runtime, Bundler, Test Runner und Paketmanager unter anderem einen Full-Stack-Dev-Server in Bun.serve()
, einen integrierten Redis-Client und eine verbesserte Kompatibilität mit Node.js.
Weiterlesen nach der Anzeige
(Bild: jaboy/123rf.com)
Der Call for Proposals für die enterJS 2026 am 16. und 17. Juni in Mannheim ist gestartet. Bis zum 12. November suchen die Veranstalter nach Vorträgen und Workshops rund um JavaScript und TypeScript, Frameworks, Tools und Bibliotheken, Security, UX und mehr.
Full-Stack-Entwicklung mit Bun
Mit Version 1.3 gilt Bun laut dem Entwicklungsteam als batteries‑included Full‑Stack-JavaScript-Runtime, die „erstklassigen Support“ für die Frontend-Entwicklung anbietet. Bereits seit Bun 1.2 sind HTML-Importe möglich, aber das neue Release fügt Hot Reloading und integriertes Routing hinzu. Dank dem neu hinzugefügten Support für parametrisierte und Catch-All-Routen lässt sich nun in Bun.serve()
die gleiche API für Frontend und Backend nutzen. Die Routen können mit dynamischen Pfadparametern wie :id
und unterschiedlichen Handlern für unterschiedliche HTTP-Methoden umgehen. Das Bun-Team demonstriert das überarbeitete Routing im Ankündigungsbeitrag:
import { serve, sql } from "bun";
import App from "./myReactSPA.html";
serve({
port: 3000,
routes: {
"/*": App,
"/api/users": {
GET: async () => Response.json(await sql`SELECT * FROM users LIMIT 10`),
POST: async (req) => {
const { name, email } = await req.json();
const [user] = await sql`
INSERT INTO users ${sql({ name, email })}
RETURNING *;
`;
return Response.json(user);
},
},
"/api/users/:id": async (req) => {
const { id } = req.params;
const [user] = await sql`SELECT * FROM users WHERE id = ${id} LIMIT 1`;
if (!user) return new Response("User not found", { status: 404 });
return Response.json(user);
},
"/healthcheck.json": Response.json({ status: "ok" }),
},
});
Auch kann der in Bun enthaltene Bundler nun Frontend- und Backend-Anwendungen in einem einzigen Build verpacken.
Integrierte Anbindung an MySQL und Redis
Bun.SQL hat sich von einem integrierten PostgreSQL-Client zu einer vereinheitlichten API für MySQL/MariaDB, PostgreSQL und SQLite gemausert – ganz ohne weitere Dependencies. Wie das Bun-Team ausführt, reduziert die integrierte API nicht nur die Anzahl der in einem Projekt benötigten Dependencies, sondern bietet im Vergleich zur Nutzung bestehender npm-Pakete wie postgres oder mysql2 auch Performanceverbesserungen.
Weiterlesen nach der Anzeige
Einen integrierten Redis-Client hat Bun 1.3 ebenfalls vorzuweisen. Dieser kann nicht nur mit der In-Memory-Datenbank Redis, sondern auch mit deren BSD-lizenziertem Fork Valkey unter dem Dach der Linux Foundation umgehen. Buns Redis-Client soll sich durch eine hohe Geschwindigkeit auszeichnen und alle Standardvorgänge – insgesamt 66 Befehle – unterstützen, darunter Hashes (HSET
/HGET
), Listen (LPUSH
/LRANGE
) und Sets.
Auf dem Weg zur Node.js-Kompatibilität
Bun schickt sich an, als schnellerer und einfacherer „Drop-in“-Ersatz für Node.js zu dienen – denn Node.js hat laut dem Bun-Entwickler Jarred Sumner über die Jahre hinweg immer neue Schichten an Tooling hinzugewonnen, was die Geschwindigkeit verringert und die Komplexität erhöht habe. Im neuen Release nähert sich Bun der vollständigen Node.js-Kompatibilität weiter an. Unter anderem sind Support für das VM-Modul, node:test
und Performance-Monitoring enthalten.
Der initiale Support für das node:test
-Modul verwendet unter der Haube bun:test
für ein einheitliches Testing-Erlebnis. Somit lassen sich laut dem Bun-Team Node.js-Tests mit den Performancevorteilen von Buns nativem Test Runner ausführen.
import { test, describe } from "node:test";
import assert from "node:assert";
describe("Math", () => {
test("addition", () => {
assert.strictEqual(1 + 1, 2);
});
});
Ausführliche Informationen zu diesen und allen weiteren Updates in Bun 1.3 können Interessierte im Bun-Blog einsehen.
(mai)