veilletech.fr
17 sept. Feed du jour
#07 NODE Article

Node 26.9 : la FFI par défaut, et un bench

Le cœur de Node avale une dépendance de plus. C'est la bonne direction.

Node.js 26.9.0 active la FFI par défaut : appeler une bibliothèque C depuis JavaScript ne demande plus d'addon natif ni de drapeau. La même version fait entrer un module `node:bench` complet dans le cœur, avec CLI et reporters, et ajoute un système de fichiers virtuel branché sur les chargeurs CJS et ESM, capable de lire dans un zip.

2 min de lectureintermédiairevidéo 1:15
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. La FFI par défaut
  3. Un banc d'essai dans le cœur
  4. Le reste des notables
  5. Ce que ça change
  6. À retenir

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.