Aller au contenu

Le média des artisans du web lundi 19 octobre 2026

Back-end

Node.js 24.22.0 : nouvelles API crypto, throttle/debounce natifs et StatementSync fermable

La version LTS 24.22.0 de Node.js ajoute des API cryptographiques avancées, des utilitaires throttle et debounce natifs ainsi qu'une fermeture explicite pour SQLite.

La branche LTS « Krypton » de Node.js a reçu le 14 octobre 2026 sa version 24.22.0, qui embarque dix-sept changements notables. Le lot touche le module crypto, l’API SQLite intégrée, perf_hooks et le module util, avec en tête d’affiche deux fonctions attendues depuis longtemps par les équipes qui limitent la fréquence d’exécution d’un code : util.throttle et util.debounce.

Le module crypto s’enrichit côté certificats et modes de chiffrement

Cinq des dix-sept changements concernent la cryptographie. crypto.parsePKCS12() permet désormais de lire directement un conteneur PKCS#12 (le format .p12/.pfx utilisé pour empaqueter certificat et clé privée) sans passer par une dépendance tierce. Une API MAC générique a aussi été ajoutée, aux côtés de la découverte dynamique des chiffrements et des fonctions de hachage exposés par les fournisseurs OpenSSL. Les modes SIV et GCM-SIV rejoignent enfin les API Cipher et Decipher, deux modes résistants à la réutilisation accidentelle d’un nonce, un scénario qui a déjà coûté cher à plusieurs implémentations de chiffrement applicatif.

Les modes SIV et GCM-SIV dépendent du fournisseur OpenSSL compilé avec le binaire Node.js utilisé. Avant de les intégrer en production, une vérification de crypto.getCiphers() sur l’environnement cible évite une erreur silencieuse en déploiement.

util.throttle et util.debounce sortent du territoire des bibliothèques tierces

Jusqu’ici, limiter la fréquence d’un appel (debounce) ou plafonner le taux d’exécution (throttle) obligeait à installer lodash ou une micro-bibliothèque dédiée. Node.js 24.22.0 propose une implémentation native des deux dans node:util, pensée pour les scripts serveur qui doivent ralentir des écritures disque, des appels à une API externe ou des notifications répétées.

import { throttle, debounce } from 'node:util';

const logMetrics = throttle(() => {
  console.log('snapshot des métriques envoyé');
}, 5000);

const persistDraft = debounce((content) => {
  writeFileSync('draft.json', JSON.stringify(content));
}, 800);

onMetricTick(logMetrics);
onEditorChange(persistDraft);

SQLite : une fermeture explicite pour les instructions préparées

StatementSync.prototype.close() et StatementSync.prototype[Symbol.dispose]() font leur entrée dans le module node:sqlite. Les instructions préparées pouvaient jusque-là rester ouvertes tant que le processus tournait ; elles peuvent désormais être libérées explicitement, ou automatiquement via la syntaxe using du langage, ce qui simplifie la gestion des ressources dans les scripts de migration ou les tâches ponctuelles.

perf_hooks affine l’observation des latences

Le module de mesure de performance reçoit un nouvel histogramme à fenêtre glissante, SlidingWindowHistogram, ainsi qu’une API d’intervalle de confiance sur la moyenne (meanCI) et un export/import au format CBOR pour faire circuler des histogrammes entre processus ou entre services.

Avec SlidingWindowHistogram, perf_hooks ne se contente plus d’une moyenne glissante : il capture comment une latence évolue dans le temps, pas seulement sa valeur moyenne sur toute la durée de vie du processus.

NouveautéModuleUsage typique
crypto.parsePKCS12()node:cryptoCharger un certificat client .p12 sans dépendance tierce
API MAC génériquenode:cryptoCalculer un code d’authentification de message indépendant de HMAC
Modes SIV / GCM-SIVnode:cryptoChiffrement tolérant à la réutilisation de nonce
util.throttle / util.debouncenode:utilLimiter la fréquence d’écritures ou d’appels réseau
StatementSync.close() / Symbol.disposenode:sqliteLibérer une instruction préparée explicitement
SlidingWindowHistogramnode:perf_hooksSuivre l’évolution d’une latence dans le temps

Ce point release illustre une tendance de fond de la branche 24 : faire entrer dans le cœur du runtime des utilitaires que la plupart des équipes allaient auparavant chercher via npm. C’est le même mouvement qui avait porté l’activation par défaut de la Temporal API dans Node.js 26, où le projet choisit de standardiser plutôt que de laisser l’écosystème fragmenter les mêmes besoins en dizaines de paquets concurrents.

Ce qu’il faut retenir

Node.js 24.22.0 reste une mise à jour mineure au sens strict (SEMVER-MINOR sur la quasi-totalité des changements), sans rupture de compatibilité attendue pour les applications existantes. Les équipes qui gèrent des certificats clients, écrivent des scripts de limitation de débit ou exploitent SQLite embarqué gagnent un motif concret de planifier la mise à jour vers cette ligne LTS.

Ce qui me frappe dans cette release, c’est moins la cryptographie que le duo throttle/debounce : ce sont deux fonctions que j’ai réimplémentées ou importées depuis lodash sur à peu près tous mes projets backend depuis dix ans. Les voir intégrées au runtime, avec une sémantique testée par l’équipe Node elle-même, c’est une ligne de dépendance en moins à auditer sur chaque projet client. — Simon Janvier

Pour aller plus loin : le détail complet des changements de la version 24.22.0 est consultable dans le changelog officiel de la branche Node.js 24.

Partager LinkedIn Bluesky Hacker News E-mail

À lire aussi