The Daily Commit · Édition de rubrique La une PHP AI Dev EN DE FR ES

Independent. Nonpartisan. Untested in production.

jeudi 20 août 2026 HACKER NEWS (DEV, ≥100 P.)
Versions!

Bun 1.4 arrive avec une réécriture en Rust et de nets progrès de compatibilité Node.js

Bun 1.4 achève la réécriture du runtime de Zig vers Rust, fait passer 1 517 tests supplémentaires de la suite Node.js et divise par cinq la consommation CPU au repos.

HACKER NEWS (DEV, ≥100 P.) — Parmi les nouveautés: Bun.Image, Bun.WebView, Bun.cron, un PTY natif, des streams web natifs et HTTP/3 expérimental.

Bun 1.4 est disponible, et le changement majeur est structurel: le runtime a été réécrit de Zig vers Rust. Claude Code tourne sur ce port Rust depuis des mois, et Prisma a bâti Prisma Compute dessus. La version corrige aussi plus de 2 900 tickets.

La compatibilité Node.js fait son plus grand bond depuis Bun 1.0. Bun exécute désormais 1 517 tests supplémentaires de la suite Node.js à chaque commit. node:http, node:fs, node:cluster, node:timers, node:zlib, node:vm et node:stream réussissent 97% des tests de Node, node:quic 99%, node:events, node:trace_events et node:sqlite 100%. Playwright, vitest avec couverture, Next.js 16.3 avec Turbopack et React Compiler, l'instrumentation OpenTelemetry et dd-trace de Datadog fonctionnent désormais sous Bun. Nuxt, testcontainers, amqplib, TypeORM, nock, inject() de Fastify et les uploads en streaming du client AWS S3 marchent sans modification.

La consommation de ressources baisse partout. Bun s'est rallié à l'allocateur mimalloc, enrichi d'un nettoyage partiel de pages et d'un thread scavenger qui libère la mémoire quand JavaScript est inactif. La CPU en production de Claude Code a été divisée par deux: p99 de 24% à 10%, p50 de 5,8% à 2,5%. Pour une application minimale, la CPU au repos chute d'un facteur cinq. Les serveurs HTTP consomment 13% à 48% de mémoire en moins; un benchmark Fastify plafonne à 120 Mo contre 233 Mo sous Bun 1.3. Un motif SSR App Router de Next.js qui grandissait sans borne en 1.3 se stabilise à 238 Mo sur 4 000 pages, sous les 410 Mo de Node.

Le démarrage est 2,5 fois plus rapide sous Windows (15,5 ms pour hello.js contre 40,1 ms pour Node.js 26) et deux fois plus rapide sous Linux à 5,1 ms avec moins de la moitié de la mémoire. Les binaires Linux et Windows maigrissent jusqu'à 17%.

ReadableStream, WritableStream et TransformStream sont désormais natifs et réussissent 100% des Web Platform Tests. Dans les pipelines de 64 Mo de Bun, un téléchargement via DecompressionStream et TextDecoderStream atteint 1 519 Mo/s contre 204 Mo/s pour Node.js 26 et 530 Mo/s pour Deno 2.9. CompressionStream et DecompressionStream sont natifs, avec 2 291 Mo/s en décompression gzip contre 491 Mo/s pour Node. Response.clone() et Request.clone() partagent désormais les chunks du corps au lieu de les copier. Bun.serve applique la backpressure aux corps en stream: un client lent n'occupe plus qu'un tampon de mémoire serveur.

La bibliothèque standard s'étoffe et absorbe 15 dépendances npm courantes. Bun.Image décode, redimensionne, pivote et encode JPEG, PNG, WebP, GIF et BMP avec une API proche de sharp, sans addon natif, et se montre 1,38 fois plus rapide que sharp sur un pipeline redimensionnement-encodage. Bun.WebView pilote un navigateur headless via le WebKit système sur macOS ou un Chrome, Chromium ou Edge installé ailleurs. Bun.markdown parse le GFM vers du HTML, des éléments React ou des callbacks personnalisés; attention, la sortie HTML n'est pas assainie. Bun.cron() enregistre des tâches auprès du planificateur de l'OS (crontab, launchd, Planificateur de tâches) ou exécute des fonctions sur la boucle d'événements. Bun.Terminal est un PTY intégré qui remplace node-pty. bun run --parallel exécute des scripts en concurrence avec sortie préfixée, remplaçant npm-run-all et concurrently. Les routes de Bun.serve peuvent servir des répertoires avec sendfile, ETag, Range et 304, protégées sous Linux par openat2 avec O_RESOLVE_BENEATH contre les évasions par lien symbolique. S'ajoutent des API pour JSON5, XML, les archives tar et des helpers de chaînes compatibles ANSI.

bun:ffi repose maintenant sur un support FFI intégré directement à JavaScriptCore, en remplacement de TinyCC. Les points d'appel chauds sont compilés par le JIT en appels C directs. Un appel FFI vide passe de 2,13 ns à 0,70 ns, soit un facteur trois. Le nouveau type buffer_length transmet la longueur d'un TypedArray avec son pointeur, et returns: "cstring" renvoie des chaînes simples ou null.

Côté observabilité, l'outillage devient natif Markdown. --cpu-prof-md et --heap-prof-md émettent des profils CPU et tas en Markdown, lisibles via SSH ou collables dans un rapport de bug; les sorties .cpuprofile et .heapsnapshot classiques demeurent, et BUN_CPU_PROFILE=1 profile les processus sans accès aux flags. Les stack traces asynchrones rattachent les erreurs de fs.promises, fetch(), S3, DNS ou crypto au await d'origine. process.on("memoryPressure") se déclenche quand l'OS manque de mémoire, sur macOS, Linux et Windows.

Côté réseau, Bun.serve gagne HTTP/3 expérimental (http3: true, 2,7 fois plus rapide que HTTPS/1.1 sur un benchmark de routes statiques, pas encore prêt pour la production) et fetch() des clients HTTP/2 et HTTP/3 expérimentaux derrière des flags. La mise à jour se fait avec bun upgrade.

Lire la source originale (en anglais) ↗

Évaluer cet article : 0

Tribune des lecteurs

Pas encore de contributions — lance le débat.

◀ En bref — Page D1

All stories real, just louder · The Daily Commit · Édition écran · Mentions légales · Politique de confidentialité