Aller au contenu

Le média des artisans du web jeudi 17 septembre 2026

Back-end

Node.js 26.9.0 intègre node:bench et active l’interface FFI par défaut

Node.js 26.9.0, publiée le 16 septembre 2026, ajoute le module de benchmark intégré node:bench et fait passer l'interface FFI en activation par défaut. La version renforce aussi la cryptographie avec une API MAC générique et la découverte des algorithmes via les providers…

Node.js 26.9.0, publiée le 16 septembre 2026 par Antoine du Hamel, prolonge la ligne Current avec plusieurs modules attendus de longue date. Deux ajouts dominent : un module de mesure de performance intégré, node:bench, et l’activation par défaut de l’interface FFI. Ensemble, ils rapatrient dans le cœur de la plateforme un outillage jusqu’ici délégué à des dépendances tierces.

node:bench, mesurer sans dépendance externe

Comparer deux implémentations d’une fonction passait, jusqu’ici, par une bibliothèque du dépôt npm ou par un script maison autour de performance.now(). La 26.9.0 expose un module natif, node:bench, dont la forme reprend celle du projet communautaire bench-node dont il est issu : une Suite, des appels add(), puis run().

const { Suite } = require('node:bench');

const suite = new Suite();

suite.add('Array.includes', () => {
  [1, 2, 3, 4, 5].includes(4);
});

suite.add('Set.has', () => {
  new Set([1, 2, 3, 4, 5]).has(4);
});

suite.run();

L’intérêt n’est pas de remplacer un banc de mesure complet, mais de rendre la mesure disponible sans installation, y compris dans un environnement d’intégration continue où chaque dépendance ajoutée alourdit le cache. Le sujet rejoint celui des réglages de cache dans GitHub Actions : moins de paquets à restaurer, des pipelines plus prévisibles.

L’interface FFI activée par défaut

L’interface FFI (foreign function interface), qui permet d’appeler des bibliothèques natives sans écrire d’addon C++, était disponible derrière un drapeau. Elle est désormais active par défaut. Le seuil d’entrée pour relier du code système à une application JavaScript baisse d’autant, sans passer par la compilation d’un module natif.

Deux fonctions historiquement confiées à l’écosystème npm — mesurer et appeler du code natif — entrent dans la bibliothèque standard.

Cryptographie : API MAC générique et découverte via OpenSSL

Le module crypto gagne une API MAC générique et la capacité de découvrir les chiffrements et les fonctions de hachage directement auprès des providers OpenSSL. Concrètement, les algorithmes fournis par un provider tiers deviennent visibles sans énumération codée en dur. Cette évolution s’inscrit dans la continuité du rafraîchissement récent de la chaîne TLS de Node.js.

DTLS, système de fichiers virtuel et Web Workers

La version ajoute aussi une API DTLS expérimentale, l’intégration du système de fichiers virtuel aux chargeurs de modules CommonJS et ESM, et la prise en charge des Web Workers. S’y ajoutent un module node:bench déjà cité, l’export et l’import CBOR des histogrammes des performance hooks, et la possibilité pour les intégrateurs de fournir un cache de code des modules intégrés sans instantané.

AjoutDomaineMaturité
node:benchMesure de performanceNouveau module
Interface FFIInteropérabilité nativeActivée par défaut
API MAC génériqueCryptographieNouvelle API
Découverte via providers OpenSSLCryptographieNouvelle capacité
API DTLSRéseauExpérimentale
Web WorkersConcurrencePrise en charge

Comment adopter la version

Node.js 26 appartient à la ligne Current, celle qui reçoit les nouveautés avant de passer en support à long terme. L’installation suit le canal habituel :

nvm install 26.9.0
node --version   # v26.9.0
node --run bench

La ligne Current n’est pas destinée à un déploiement de production immédiat sur les projets sensibles à la stabilité : les API marquées expérimentales, comme DTLS, peuvent changer de signature. Pour un service en production, il reste prudent d’attendre le passage en support à long terme ou de circonscrire l’usage des API expérimentales derrière une couche d’abstraction.

Ce qu’il faut retenir

La 26.9.0 est une version d’enrichissement plutôt que de rupture. Elle réduit la surface de dépendances d’un projet en internalisant la mesure de performance et l’appel de code natif, et prépare le terrain côté cryptographie et réseau. Les équipes déjà sur Node.js 26 peuvent l’adopter sans migration lourde ; les autres y verront un argument de plus pour préparer la bascule, en gardant à l’esprit le statut expérimental de certaines API.

J’ai remplacé, sur deux projets, une petite dépendance de benchmark par un brouillon autour de node:bench dès la préversion : le gain n’est pas la vitesse, c’est d’avoir un chiffre reproductible sans rien installer, directement dans la CI. Sur le même ton, l’interface FFI par défaut est le genre de changement discret qui fait gagner une après-midi le jour où l’on doit relier une bibliothèque système sans se lancer dans un addon natif. Le reste, DTLS en tête, attendra la stabilisation. — Simon Janvier

Pour aller plus loin : les notes de version officielles de Node.js 26.9.0 sur GitHub, avec la liste complète des changements.

Partager LinkedIn Bluesky Hacker News E-mail

À lire aussi