Bun v1.3.4: URLPattern, fake timers, lepší buildy a desítky oprav

Bun 1.3.4 přináší praktické vylepšení a opravy, které usnadňují vývoj aplikací v JavaScriptu a TypeScriptu. Novinky zahrnují moderní routing, rychlejší testování a stabilnější runtime.
Nálepky:
Bun vydal verzi 1.3.4, která navazuje na velkou řadu změn z Bun 1.3, ale tentokrát se zaměřuje na praktické věci: stabilita, detailní API vylepšení, testování, opravy kompatibility a drobnosti.
Tahle verze není žádná revoluce, je to „daily driver“ update, který zlepší práci s Bunem v produkci i ve vývoji.
URLPattern – moderní práce s routováním
Bun nyní kompletně implementuje URLPattern Web API. Pokud píšete webové servery, API nebo routery, tohle budete používat pořád. URLPattern umožňuje deklarativně popsat strukturu cesty a extrahovat parametry bez ručního parsování.
// Match URLs with a user ID parameter
const pattern = new URLPattern({ pathname: "/users/:id" });
pattern.test("https://example.com/users/123"); // true
pattern.test("https://example.com/posts/456"); // false
const result = pattern.exec("https://example.com/users/123");
console.log(result.pathname.groups.id); // "123"
// Wildcard matching
const filesPattern = new URLPattern({ pathname: "/files/*" });
const match = filesPattern.exec("https://example.com/files/image.png");
console.log(match.pathname.groups[0]); // "image.png"Code language: JavaScript (javascript)
Tohle API se už objevilo v browserech, Denu a ve standardech. Bun ho tím pádem sjednocuje napříč platformami.
Fake timers v bun:test – testy bez čekání
Jedna z věcí, která výrazně zjednodušuje život, jsou fake timers. Bun teď přidává vlastní implementaci kompatibilní s očekávaným chováním setTimeout, setInterval, Date.now() a dalších časových funkcí.
Ukázka:
import { test, expect, jest } from "bun:test";
test("fake timers", () => {
jest.useFakeTimers();
let called = false;
setTimeout(() => {
called = true;
}, 1000);
expect(called).toBe(false);
// Advance time by 1 second
jest.advanceTimersByTime(1000);
expect(called).toBe(true);
jest.useRealTimers();
});Code language: JavaScript (javascript)
Vlastní proxy hlavičky při používání fetch()
Bun přidává možnost přidat vlastní hlavičky do proxy požadavků (když je fetch přesměrován přes proxy server).
Tohle může být důležité pro:
- autentizace vůči proxy
- firemní prostředí s řízenými přístupy
- interní směrování requestů
Ukázka:
// String format still works
fetch(url, { proxy: "http://proxy.example.com:8080" });
// New object format with custom headers
fetch(url, {
proxy: {
url: "http://proxy.example.com:8080",
headers: {
"Proxy-Authorization": "Bearer token",
"X-Custom-Proxy-Header": "value",
},
},
});Code language: JavaScript (javascript)
Malý detail, ale prakticky velmi často potřeba.
Opravy http.Agent a lepší connection pooling
Bun opravil problém, který způsoboval neefektivní nakládání s persistentními připojeními (keepAlive: true).
Pokud používáte Bun pro HTTP-heavy služby, tohle je okamžité vylepšení výkonu.
Build s --compile už standardně nenačítá konfigurace během běhu
Při spuštění programu se hledaly a znovu načítaly soubory jako tsconfig.json, package.json nebo jiné konfigurace.
To bylo nepraktické, protože:
- build měl být „uzavřený“
- produkční prostředí stejně tyto soubory často neobsahuje
- zpomalovalo to start
Nové chování:
- konfigurace se už nenačítají
- build je opravdu „self-contained“
Pokud váš soubor potřebuje za běhu číst tyto konfigurační soubory, můžete to udělat pomocí nových CLI flags:
# Enable runtime loading of tsconfig.json
bun build --compile --compile-autoload-tsconfig ./app.ts
# Enable runtime loading of package.json
bun build --compile --compile-autoload-package-json ./app.ts
# Enable both
bun build --compile --compile-autoload-tsconfig --compile-autoload-package-json ./app.ts
Code language: PHP (php)
nebo přes JavaScript API:
await Bun.build({
entrypoints: ["./app.ts"],
compile: {
autoloadTsconfig: true,
autoloadPackageJson: true,
autoloadDotenv: true,
autoloadBunfig: true,
},
});Code language: JavaScript (javascript)
Pokud někdo potřebuje staré chování, stále jej může zapnout explicitně.
console.log umí %j – rychlé JSON dumpy
Bun přidává podporu pro formátovací marker %j, známý z Node.js.
console.log("%j", { foo: "bar" });
// {"foo":"bar"}
console.log("%j %s", { status: "ok" }, "done");
// {"status":"ok"} done
console.log("%j", [1, 2, 3]);
// [1,2,3]Code language: JavaScript (javascript)
Desítky oprav, kompatibility a drobností
Tahle verze má dlouhý changelog oprav. Například:
- opravy v bundleru
- opravy v
bun install - zlepšená kompatibilita s Node API
- fixy pro Windows buildy
- vylepšení FFI
- stabilnější vývojový server
Tohle je přesně ten typ verze, u které má smysl aktualizovat hned, protože nezahrnuje nic velkého a pouze zlepšuje prostředí pro vývojáře.
Závěr
Bun 1.3.4 je pouze praktický update, který výrazně zlepšuje každodenní práci. Přináší moderní URLPattern pro routing, fake timers pro profesionální testování, stabilnější runtime, spolehlivější buildy a desítky oprav napříč systémem. Pokud Bun používáte pro backend, buildování nebo testy, tenhle upgrade dává jednoznačně smysl.