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 pas breaking, 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 cession granulaire 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 regroupe les 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.

État de TypeScript 2026 : langage #1 sur GitHub, Project Corsa et la facture de la supply chain
security

État de TypeScript 2026 : langage #1 sur GitHub, Project Corsa et la facture de la supply chain

Un regard rétrospectif sur les événements majeurs qui ont redéfini la position de TypeScript dans l'écosystème JavaScript, du dépassement de JavaScript sur GitHub à la réécriture du compilateur en Go pour des builds 10x plus rapides.
Node.js Mars 2026 : Six Correctifs de Sécurité Sur Toutes les Branches Actives
security

Node.js Mars 2026 : Six Correctifs de Sécurité Sur Toutes les Branches Actives

Node.js a publié des correctifs de sécurité d'urgence pour v25, v24, v22 et v20 le 24 mars 2026, corrigeant deux CVE à haute sévérité dont un crash TLS SNICallback et un risque de pollution prototype HTTP. Détails.
Fastify v5.9.0 ajoute `request.mediaType` et `onMaxParamLength`, durcit la confiance dans les en-têtes `forwarded`, découpe les grandes réponses HTTP/2 et migre les tests de types vers TSTyche
security

Fastify v5.9.0 ajoute `request.mediaType` et `onMaxParamLength`, durcit la confiance dans les en-têtes `forwarded`, découpe les grandes réponses HTTP/2 et migre les tests de types vers TSTyche

Fastify v5.9.0, publié le 2026-06-28 (github.com/fastify/fastify), est la première version mineure de la ligne v5 en 2026 et un cycle substantiel de 65 PR. Les fonctionnalités principales sont `request.mediaType` (un accesseur typé pour le type de média négocié, [#6653](https://github.com/fastify/fastify/pull/6653) par climba03003), l'option de route `onMaxParamLength` ([#6716](https://github.com/fastify/fastify/pull/6716) par climba03003), et un correctif de sécurité qui ne fait plus confiance à `X-Forwarded-Host` et `X-Forwarded-Proto` quand le socket entrant est absent ([#6684](https://github.com/fastify/fastify/pull/6684) par mcollina). Le cycle livre un correctif de découpage en morceaux du buffer HTTP/2 pour les grandes réponses ([#6746](https://github.com/fastify/fastify/pull/6746) par mcollina), trois gains de performance liés au schéma (parsing différé du ContentType dans `getSchemaSerializer` #6692, mise en cache des objets `ContentType` analysés dans `ContentTypeParser` #6694, garde `typeof` avant `toString.call` dans `send` / `onSendEnd` #6693 par aquie00t), Node.js 26 ajouté à la matrice de tests ([#6728](https://github.com/fastify/fastify/pull/6728) par Fdawgs) et Node.js 20 retiré de la matrice yarn CI ([#6662](https://github.com/fastify/fastify/pull/6662) par Tony133), la migration de la suite de tests de types d'assertions `expect-type` artisanales vers [TSTyche](https://github.com/mrazauskas/tstyche) ([#6532](https://github.com/fastify/fastify/pull/6532) par mrazauskas, avec les suites #6726 et #6727), et un bump de fastify-plugin v6.0.0 purement TypeScript. Autres correctifs notables : déduplication de `res.end` du trailer (#6676), garde de complétion dupliquée du trailer (#6714), `error.code` sur les erreurs de routage (#6678), `hasRequestDecorator` / `hasReplyDecorator` détectant les propriétés natives assignées par constructeur (#6753), `getValidationFunction()` autorisé à retourner `undefined` (#6665), et un nettoyage du `_meta` du socket qui ferme une fuite keep-alive (#6799).

Commentaires

Connexion Connectez-vous pour participer à la conversation.

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