Node.js 26.3.0 : Buffer Pool double, permission.drop() arrive, les Macs Intel en péril

Node.js 26.3.0 : Buffer Pool double, permission.drop() arrive, les Macs Intel en péril

lschvn

Node.js 26.3.0 est sorti le 1er juin 2026 sur la ligne Current. C'est une mise à jour mi-cycle substantielle : l'allocateur Buffer reçoit un ajustement significatif, le système de permissions expérimental gagne sa fonctionnalité la plus demandée, Apple signale une nouvelle étape vers l'abandon des Macs Intel, et l'équipe crypto applique un renforcement multi-PR sur WebCrypto.

Buffer.poolSize double à 64 KiB

Le changement runtime le plus impactant est l'augmentation du Buffer.poolSize par défaut de 32 à 64 KiB, contribution de Matteo Collina (#63597). L'allocateur slab interne de Node utilise ce pool pour les appels Buffer.allocUnsafe() et Buffer.from() qui restent sous le seuil. Un slab plus grand réduit la fréquence à laquelle l'allocateur doit demander de nouvelles pages mémoire à l'OS, diminuant la fragmentation et améliorant le débit pour les serveurs HTTP, les pipelines de streaming, et tout code allouant de nombreux buffers de petite à moyenne taille.

Ce changement n'est pasbreaking — il affecte uniquement la valeur par défaut. Les applications peuvent toujours configurer Buffer.poolSize manuellement. Mais si vous avez des benchmarks qui mesurent l'allocateur lui-même, c'est le bon moment pour les relancer.

permission.drop() pour la cessiongranulaire de privilèges

Rafael Gonzaga a contribué permission.drop() (#62672), l'ajout le plus demandé au système de permissions expérimental de Node.js. Le modèle existant accordait les capacités au démarrage et les conservait pendant toute la durée de vie du processus. permission.drop() permet au code en cours d'exécution de renoncer aux handles de permission individuels — système de fichiers, environnement, processus enfant — sans s'arrêter. Cela permet des modèles tels que :

// Après l'initialisation, abandonner l'accès au système de fichiers
permission.drop('fs');
// Seul l'accès réseau reste

Ce changement rapproche Node.js des modèles de sécurité basés sur les capacités et réduit le rayon d'action des attaques par chaîne d'approvisionnement ou injection où un module compromis perd sa mainmise sur le système de fichiers après la fin de l'initialisation.

Avertissement binaire universel macOS

Le PR #63055 d'Antoine du Hamel documente formellement ce que le projet annonçait informellement : le binaire universel macOS — qui regroupeles deux slices Intel (x64) et Apple Silicon (arm64) dans un seul binaire — pourrait ne plus être maintenable pendant toute la durée de vie de Node.js 26. Apple a progressivement déconseillé le support de la toolchain Intel, et l'infrastructure de build de Node.js rencontre des difficultés à maintenir la slice x64 fonctionnelle. Les Macs Intel restent Tier 2 ; arm64 est Tier 1. C'est un avertissement, pas une suppression immédiate.

Renforcement WebCrypto et npm 11.16.0

Filip Skokan a mené un effort multi-PR pour renforcer WebCrypto (#63363). Les changements incluent :

  • Les méthodes WebCrypto n'utilisent plus de wrappers async en interne, réduisant l'overhead
  • Les handles CryptoKey sont passés directement aux jobs KDF au lieu d'être sérialisés et désérialisés
  • Un nouveau mode CryptoJob aligne l'implémentation WebCrypto de Node avec la spec et améliore les performances
  • L'implémentation est protégée contre les attaques par pollution de prototype ciblant les définitions de propriétés CryptoKey

npm est mis à jour en 11.16.0 (#63602), incluant des corrections d'arborescence de dépendances et une résolution plus rapide. SQLite bundlé avec Node est mis à jour avec un cherry-pick corrigeant un risque de corruption mémoire (#63525).

Le module http gagne une option httpValidation (#61597) permettant aux serveurs de configurer la rigueur de validation des valeurs d'en-têtes entrants, avec un comportement permissif par défaut. L'API inspector gagne également un flag preciseCoverageStart (#63079) pour une instrumentation de couverture de code plus précise.

Node.js 26.3.0 est la ligne Current (non-LTS). La transition LTS pour Node.js 26 est attendue avec Node.js 26.9.0 en septembre 2026.

Questions fréquentes

Articles connexes

Plus de couverture avec des sujets et tags en commun.

Nitro v3.0.260522-beta : Tracing à la Compilation, Cache VFS, Queues Vercel en Local
TypeScript

Nitro v3.0.260522-beta : Tracing à la Compilation, Cache VFS, Queues Vercel en Local

Le beta Nitro v3 du 22 mai apporte des wrappers de tracing pour les handlers de routes à la compilation, un cache VFS pour le code dynamique nitro, et le support des queues Vercel accessible en développement local — avec les correctifs de sécurité de la beta précédente.
Oxc v0.134 : oxlint v1.68 Ajoute des Règles Vue et des Contrôles TypeScript Accessor
JavaScript

Oxc v0.134 : oxlint v1.68 Ajoute des Règles Vue et des Contrôles TypeScript Accessor

La version de juin d'Oxc publie oxlint v1.68.0 avec deux nouvelles règles Vue, une règle lint method-signature-style pour TypeScript, et des améliorations du parser pour rejecter les déclarations en contexte ambient.
Turborepo v2.9.16 Ajoute le Profiling Mémoire et des Correctifs pnpm
JavaScript

Turborepo v2.9.16 Ajoute le Profiling Mémoire et des Correctifs pnpm

Les dernières versions stables de Turborepo ajoutent le profiling heap allocation via OpenTelemetry, corrigent le comportement des peers injectés pnpm, harden la validation OTEL endpoint, et règlent les hangs de shutdown PTY.

Commentaires

Connexion Connectez-vous pour participer à la conversation.

Pas encore de commentaires. Soyez le premier à partager vos pensées.