Přejít k navigační liště

Zdroják » JavaScript » Bun v1.3.4: URLPattern, fake timers, lepší buildy a desítky oprav

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

Články JavaScript

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.

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.

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted

Frugal computing: architektura pro dobu dražší infrastruktury

Vývojáři se naučili zrychlovat dotazy, přidávat cache, škálovat služby a hlídat účet za cloud. Frugal computing začíná o jednu otázku dřív: musí se výpočet, přesun dat, volání modelu nebo uložení vůbec stát? Rostoucí spotřeba datových center a nové evropské reportování ho posouvají do návrhu architektury, dřív než do závěrečné poznámky o udržitelnosti v prezentaci.

Odysseus: PewDiePie vydal open-source AI workspace, který běží na vašem vlastním hardwaru

AI
Komentáře: 0
Felix Kjellberg, youtuber se 110 miliony odběratelů, strávil rok učením se programovat a fine-tuningem vlastních AI modelů. Výsledkem je Odysseus – bezplatný, open-source workspace pro práci s umělou inteligencí, který neposílá žádná data do cloudu. Projekt má týden, přes 61 000 hvězdiček na GitHubu a znovu otevírá otázku, komu vlastně patří váš digitální kontext.

Když Git už nestačí: jak izolovat databázový stav pro pokusy AI agentů

Gitová větev vývojářům oddělí kód, ale databáze často zůstává společná. U AI agentů je to slabé místo: rychle spouštějí migrace, mění data a zkoušejí víc cest najednou. Databázová větev jim dá vlastní pracovní prostor, jenže tím práce nekončí. Ještě je potřeba řešit citlivá data, oprávnění, životnost větve i zbytek stavu aplikace.