Ce qui se passe
Node.js 26.9.0, publiée le 16 septembre 2026 par Antoine du Hamel sur la
branche Current, aligne onze changements marqués SEMVER-MINOR. Deux
retirent chacun une dépendance ou une chaîne de compilation d'un projet.
La FFI par défaut
ffi: enable module by default — PR #65475, par Matteo Collina.
Appeler une fonction d'une bibliothèque C depuis JavaScript ne demande plus de compiler un addon natif, ni de poser un drapeau au démarrage. C'est la voie qu'avaient prise Bun et Deno ; Node s'y range.
Concrètement, lier une bibliothèque système cesse de traîner node-gyp, un
compilateur par plateforme et un artefact binaire par cible dans le pipeline de
publication.
Un banc d'essai dans le cœur
lib: implement node:bench — PR #65606, par James M Snell. Le module
arrive complet : implémentation, ligne de commande, reporters, création
explicite de runners, runFile(), context.diagnostic(). La documentation
précise les modes d'isolation et la politique de significativité
(PR #65631) — ce qui n'est pas anodin pour un outil de mesure.
perf_hooks suit le mouvement : l'API meanCI sur les histogrammes
(#65606) et un export/import CBOR pour échanger des histogrammes entre
processus (#65434).
Le test unitaire avait été intégré au cœur de la même façon il y a quelques versions. La mesure de performance suit le même chemin.
Le reste des notables
| Domaine | Changement | PR |
|---|---|---|
| vfs | intégration aux chargeurs CJS et ESM | #63653 |
| worker | Web Workers natifs, avec ref/unref et intégration WPT | #64894 |
| src,lib | API DTLS expérimentale | #63182 |
| crypto | API MAC générique | #65553 |
| crypto | découverte des ciphers et des hashes des providers OpenSSL | #65484 |
| src | cache de code des builtins fourni par l'embarqueur, sans snapshot | #65352 |
Le système de fichiers virtuel mérite une ligne de plus : couplé au ZipProvider (#64915), il permet de charger des modules — y compris des addons natifs — depuis une archive. C'est la brique d'un exécutable à fichier unique.
Côté crypto, la version corrige aussi plusieurs comportements que personne
n'aime découvrir en production : Hmac.digest() pouvait renvoyer de la mémoire
non initialisée (#65112), les JWK RSA multi-premiers étaient mal gérés (#65649),
et le sel surdimensionné en RSA-PSS était mal traité (#65550).
Ce que ça change
La bascule FFI rouvre une décision d'architecture. Jusqu'ici, « appeler du C depuis Node » supposait un addon, donc une matrice de compilation, donc souvent un renoncement au profit d'un binaire lancé en sous-processus. L'arbitrage n'est plus le même.
node:bench déplace une autre habitude : mesurer une régression de performance
ne justifie plus d'ajouter une dépendance de développement.
À retenir
26.9.0 est sur la branche Current, pas LTS. C'est une version pour expérimenter — surtout sur DTLS et le VFS, explicitement expérimentaux — pas pour basculer la production cette semaine.