#performance

Les dernières actualités, versions et analyses performance pour les développeurs TypeScript et web.
23 articles tagged with performance
Oxlint v1.72 et Oxfmt v0.57 livrent le cycle crates v0.138, unifient l'AstBuilder et retirent le repli Prettier pour CSS/GraphQL

Oxlint v1.72 et Oxfmt v0.57 livrent le cycle crates v0.138, unifient l'AstBuilder et retirent le repli Prettier pour CSS/GraphQL

Oxlint apps_v1.72.0 et oxfmt apps_v0.57.0, tous deux publiés le 2026-06-29, clôturent le cycle v0.138 prédit dans les [notes de version v1.71](/articles/2026-06-23--oxlint-v1-71-oxfmt-v0-56). La version crates (crates_v0.138.0, aussi 2026-06-29) unifie les anciennes et nouvelles API AstBuilder (#23876, #23834, #23831, avec les méthodes héritées marquées `#[deprecated]`), renomme `AllocatorAccessor` en `GetAllocator` et fait prendre `&self` à sa méthode `allocator` (#23675, #23676), fait prendre `&GetAllocator` aux méthodes `Str` et `Ident` (#23781), ajoute `transformer_plugins: Support typeof define keys` pour vue-i18n et macros similaires (#23605, Alexander Lichter), et livre l'entrée de perf phare du cycle : `minifier: memoize value_type to remove its O(n^2) re-walk on long binary chains` (#23929, Dunqing), qui transforme une chaîne d'addition arithmétique de 20 000 termes de 6 118 ms à 4,7 ms (≈1300x) et le bundle antd.js réel de 78,1 ms à 65,4 ms. Oxlint v1.72.0 livre 3 fonctionnalités (suggestion React pour `no-unknown-property` #23936, unification AstBuilder #23875, schéma pour `eslint/no-restricted-import` #23642), 18 corrections de bugs, et 23 entrées de performance. Oxfmt v0.57.0 comporte deux changements BREAKING qui retirent le repli Prettier pour les fichiers CSS/LESS/SCSS et GraphQL : `Format parser:css,less,scss files + css-in-js by oxc_formatter_css` (#23321, leaysgur) et `Support draft syntax with removing prettier fallback` (#23326, leaysgur), tous deux construits sur les nouveaux crates `oxc_formatter_css` (#23320) et `oxc_formatter_graphql` (#23317).
Deno 2.9 livre un démarrage à froid 1,98x plus rapide, 2,2 à 3,1x moins de RSS en charge, le minimum-release-age npm activé par défaut, la politique de confiance no-downgrade et les tests par snapshot natifs

Deno 2.9 livre un démarrage à froid 1,98x plus rapide, 2,2 à 3,1x moins de RSS en charge, le minimum-release-age npm activé par défaut, la politique de confiance no-downgrade et les tests par snapshot natifs

Deno 2.9 (Bartek Iwańczuk, publié le 2026-06-25 sur deno.com/blog/v2.9) est la plus grande release Deno du cycle. Le démarrage à froid passe de 34,2 ms à 17,3 ms (1,98x), le pic RSS sur la charge realworld de Deno.serve baisse d'un facteur 2,2 (142 Mo → 64 Mo) et de 3,1x sur les corps de 1 Mio (197 Mo → 63 Mo), et le débit Deno.serve grimpe de 1,27x en realworld (56,8k → 72,4k req/s), 1,11x en plaintext, et 1,18x sur les corps de 1 Mio. Durcissement supply chain : le npm minimum-release-age est activé par défaut avec une fenêtre de 24h (PR #35458), et une nouvelle politique de confiance opt-in no-downgrade (PR #34927) refuse de résoudre toute version dont la preuve de confiance (publication échelonnée, trusted publishing, attestation de provenance) est plus faible que la meilleure preuve sur toute version précédemment publiée du même paquet. Parité du runner de tests : t.assertSnapshot() natif (#35139), Deno.test.each (#34938), --shard pour fan-out CI (#35057), retry et repeats (#35053), sélection change-aware --changed et --related (#35199), et seuils de coverage (#35056). Interop lockfile : deno install seed deno.lock depuis package-lock.json, pnpm-lock.yaml, yarn.lock ou bun.lock (#34296, #35330, #35346, #35350, #35394), pnpm-workspace.yaml auto-migre vers deno.json / package.json (#34993), et les marqueurs de conflit de fusion git dans deno.lock se résolvent automatiquement (#34726). Plus : deno desktop sort de l'expérimental (PR #33441 du 16 juin), sous-commandes deno link / deno unlink / deno list / deno watch, --unsafe-proto stable (#34738), Web Locks API (#31166), Happy Eyeballs v2 (RFC 8305) (#31726), navigator.userAgentData (#34743), la proposition WebCrypto Modern Algorithms (ML-KEM, ML-DSA, SLH-DSA, ChaCha20-Poly1305, famille SHA-3, KMAC, Argon2) (#34447, #34448, #34914, #35223), compat Node 26.3.0 (#34746, #34747), Node-API v10 (#35270), et imports de modules CSS sous --unstable-raw-imports (#35093). Plus de 165 PRs mergent dans ce cycle.
Node.js 24.18.0 'Krypton' LTS : Buffer.poolSize à 64 Kio, TurboSHAKE et KangarooTwelve dans Web Crypto, et http.writeInformation pour les codes 1xx arbitraires

Node.js 24.18.0 'Krypton' LTS : Buffer.poolSize à 64 Kio, TurboSHAKE et KangarooTwelve dans Web Crypto, et http.writeInformation pour les codes 1xx arbitraires

Node.js 24.18.0 'Krypton' (LTS), publié le 2026-06-23, embarque la valeur par défaut Buffer.poolSize à 64 Kio déjà livrée sur Current par la 26.3.0, ajoute à Web Cryptography les algorithmes TurboSHAKE et KangarooTwelve de la RFC 9861 (PR #62183, 1 521 ajouts, 13 fichiers), expose http.writeInformation pour envoyer des codes 1xx arbitraires (PR #63155, 306 ajouts, 7 fichiers), rend accessible au runtime JS le démarrage de la couverture précise de V8 (commit 8c989ec4a3), ajoute l'import-export JWK pour les types de clés post-quantiques ML-KEM et SLH-DSA (PR #62706, 842 ajouts, 39 fichiers), câble en BoringSSL ML-DSA, ML-KEM, ChaCha20-Poly1305 et AES-KW pour Web Crypto (PR #63255), durcit WebCrypto contre la pollution de prototype (PR #63363), aligne les noms d'arguments de clé de crypto.diffieHellman et accepte des données de clé en entrée (PR #62527), annule le comportement 'stream: noop pause/resume on destroyed streams' de la 24.16.0 (PR #63834), et publie dans la foulée un correctif minimal 22.23.1 qui revient sur un changement d'agent http introduit dans la release de sécurité 06-18 et qui rattachait des listeners de stream sur les sockets idle.
Vite 8.1.0 stable : Bundled Dev Mode (15x au démarrage sur 10k composants React), imports WASM ESM et Chunk Import Map, server.fs.deny étendu avec .npmrc et clés privées

Vite 8.1.0 stable : Bundled Dev Mode (15x au démarrage sur 10k composants React), imports WASM ESM et Chunk Import Map, server.fs.deny étendu avec .npmrc et clés privées

Vite 8.1.0 stable, publié le 2026-06-23 par la Vite Team (announcing-vite8-1), fait passer Bundled Dev Mode d'un flag expérimental à un point d'entrée documenté --experimental-bundle (15x plus rapide au cold start sur une app React à 10 000 composants, 10x sur les full reloads, et Linear rapporte 3x plus rapide au rendering de cold start, ~40% sur les full reloads), stabilise les imports .wasm directs via WASM ESM Integration et le build.chunkImportMap de la 8.1-beta du 2026-06-15, rapproche Lightning CSS du statut de défaut en ajoutant external-CSS-in-CSS et les dépendances fichiers des plugins, bumpe Rolldown à 1.1.2 (1.1.3 suit le même jour), épingle rolldown avec un tilde range pour que les patchs remontent sans PR Vite, étend server.fs.deny avec .npmrc, .yarnrc.yml et *.{key,p12,pfx,cer,der}, et émet un warning runtime quand envFile: false est utilisé.
Oxlint v1.71 et Oxfmt v0.56 livrent les gains des crates v0.137, ajoutent 18 nouvelles règles de linter et domptent la traversée du cycle de vie React avec un refactor en itérateur streamed

Oxlint v1.71 et Oxfmt v0.56 livrent les gains des crates v0.137, ajoutent 18 nouvelles règles de linter et domptent la traversée du cycle de vie React avec un refactor en itérateur streamed

Oxlint apps_v1.71.0 et oxfmt apps_v0.56.0, tous deux publiés le 2026-06-22, bouclent le cycle des crates v0.137 côté apps. Oxlint v1.71 reprend la nouvelle passe de minifier `treeshake pure typed arrays` (#23469), le correctif `prefer-query-selector` à sélecteur composé, 28 corrections de bugs de lint (en grande partie le travail de réécriture de fixer de Yunfei He), 13 entrées de performance ancrées sur un refactor de dispatch de règles en buckets (#23450, #23452, #23482-#23486, #23489, #23492), et le démarrage de Tokio uniquement pour le LSP dans oxlint (#23447). Oxfmt v0.56.0 livre 9 corrections de bugs (normalisation CRLF pour le texte supprimé par `// @ts-ignore` dans #23701 et #23702, le correctif de panique de chaîne de membres #23698, la préservation du `export default` avec cast de type #23697) et 3 entrées de performance de formatter qui suppriment les copies d'arena sur le texte bigint, littéral numérique et littéral de chaîne. v1.71 est la première release d'apps depuis v1.70.0 le 2026-06-15, et la dernière avant la release de crates v0.138 qui arrivera le lundi 2026-06-29.
SWC v1.15.43 intègre le React Compiler comme transformée de première classe, corrige un bug silencieux du minifier sur les littéraux de gabarit, et aligne `unsafe_math` avec Terser

SWC v1.15.43 intègre le React Compiler comme transformée de première classe, corrige un bug silencieux du minifier sur les littéraux de gabarit, et aligne `unsafe_math` avec Terser

SWC v1.15.43, publié le 2026-06-22 avec swc_core v71.0.3, livre le React Compiler Rust comme transformée SWC configurable via .swcrc jsc.transform.reactCompiler (PR #11917, 54 fichiers, 12 986 ajouts) ; corrige un bug silencieux du minifier de littéraux de gabarit où `compress` supprimait le texte après la dernière interpolation du gabarit de gauche lors de la concaténation de deux littéraux de gabarit (#11939) ; conditionne Number(x) -> +x à la fois à `unsafe: true` ET `unsafe_math: true` pour suivre terser v4.3.11+ (#11944, #11949) ; corrige la portée des brand checks ES2022 pour les propriétés privées (#11953) ; et embarque sept corrections internes du React Compiler (#11940, #11943, #11946, #11950, #11951, #11952, #11957) ainsi qu'un correctif du parser pour autoriser les builds sans feature par défaut (#11956) et une entrée de doc sur la portée de sécurité des entrées non fiables (#11937).
Oxc v0.137 apprend au minifier à treeshaker les tableaux typés purs et les littéraux Set/Map, livre un rafraîchissement de portée incrémental, et corrige un cas limite du React Compiler

Oxc v0.137 apprend au minifier à treeshaker les tableaux typés purs et les littéraux Set/Map, livre un rafraîchissement de portée incrémental, et corrige un cas limite du React Compiler

La release Oxc crates_v0.137.0, publiée le 2026-06-18, livre deux nouvelles passes de treeshaking pour le minifier (treeshake des tableaux typés purs et des littéraux de tableau Set/Map via #23469, et inline de la valeur const pour les variables read-only via #22593), un rafraîchissement de portée incrémental de longue haleine qui supprime entièrement le collecteur LiveUsageCollector (#23197), une erreur d'analyseur conviviale pour les éléments JSX adjacents (#23378), un correctif du React Compiler pour les imports référencés uniquement par une clé calculée (#23586), et deux changements cassants de l'API de configuration ESTree (#23573, #23574). La liste des passes du minifier reçoit aussi un correctif Proxy-aware pour les appels d'introspection d'Object (#23483) et une nouvelle règle de préservation de Map/WeakSet/WeakMap pour les arguments string (#23470). v0.137 est la première release de crates depuis v0.135 le 2026-06-08 et la deuxième depuis que l'intégration native du React Compiler dans Bun a atterri le 2026-06-20.
Bun intègre le React Compiler directement dans son bundler, environ 20x plus rapide que le plugin Babel

Bun intègre le React Compiler directement dans son bundler, environ 20x plus rapide que le plugin Babel

La PR #32504, fusionnée dans oven-sh/bun le 20 juin 2026, transforme le portage Rust amont du React Compiler en transformation intégrée à `bun build`, derrière `--react-compiler` et `Bun.build({ reactCompiler: true })`. Bun porte directement l'espace de travail `compiler/crates/` de `facebook/react` dans une unique crate `src/react_compiler/` (~62 k LOC) plutôt que de passer par Babel, SWC ou Oxc, et sur une grosse base de code React (environ 860 composants, 1400 slots de mémo) la passe du compilateur s'exécute en 465 ms contre 9,15 s pour le plugin Babel. La fonctionnalité est expérimentale, désactivée par défaut, et livrée avec `reactCompilerOutputMode` (client ou ssr) et un script `scripts/sync-react-compiler.sh` pour resynchroniser le portage.
Astro 7.0.0-beta.6 stabilise le cache des routes et fait de la compression d'espaces JSX la valeur par défaut

Astro 7.0.0-beta.6 stabilise le cache des routes et fait de la compression d'espaces JSX la valeur par défaut

Astro 7.0.0-beta.6 (19 juin 2026) promeut l'API expérimentale de cache des routes au niveau stable racine, supprimant les drapeaux experimental.cache et experimental.routeRules au profit d'une configuration cache de premier niveau et d'un assistant cache. La beta.5 (18 juin) a fait de « jsx » la valeur par défaut de compressHTML, changeant le HTML rendu de tout site qui s'appuyait sur la préservation d'espaces. La beta.6 embarque aussi @astrojs/markdown-satteri 0.3.1-beta.2.
pnpm 11.7 ajoute `frozenStore` pour les systèmes de fichiers en lecture seule, délègue la résolution à pacquet, et corrige un path-traversal dans le lockfile

pnpm 11.7 ajoute `frozenStore` pour les systèmes de fichiers en lecture seule, délègue la résolution à pacquet, et corrige un path-traversal dans le lockfile

pnpm 11.7.0 (15 juin 2026) apporte quatre changements principaux : un mode d'installation `--frozen-store` pour les stores Nix, les couches OCI et les montages en lecture seule ; la délégation de la résolution des dépendances au port Rust pacquet (pas seulement la matérialisation) ; un flag opt-in `--batch` pour `pnpm publish --recursive` ; et un correctif de sécurité qui rejette les alias de path-traversal et les alias réservés (`.bin`, `.pnpm`, `node_modules`, `../../escape`) dans les dépendances provenant du lockfile.
Astro 7.0.0-beta.4 fait de Sätteri le processeur Markdown par défaut et promeut le routage avancé, le logger personnalisé et le rendu en flux en stable

Astro 7.0.0-beta.4 fait de Sätteri le processeur Markdown par défaut et promeut le routage avancé, le logger personnalisé et le rendu en flux en stable

Astro 7.0.0-beta.4 (15 juin 2026) active par défaut le pipeline Markdown Rust Sätteri, retire le drapeau expérimental du routage avancé, du logger personnalisé et du nouveau moteur de rendu, supprime les commandes CLI obsolètes astro db/login/logout/link/init, et intègre en standard le mode serveur de développement en arrière-plan ajouté en alpha.2.
Deux modèles de code open-source en une semaine : Kimi K2.7-Code et Xiaomi MiMo Code

Deux modèles de code open-source en une semaine : Kimi K2.7-Code et Xiaomi MiMo Code

Moonshot AI a livré Kimi K2.7-Code, un modèle de code MoE à 1T de paramètres avec 32B activés et une baisse de 30% des thinking tokens vs K2.6. Xiaomi a suivi avec MiMo Code, un autre modèle de code open-weights. Voici ce qui figure sur la model card.
Oxc v0.135 : le port Rust du React Compiler et un break AST #[non_exhaustive]

Oxc v0.135 : le port Rust du React Compiler et un break AST #[non_exhaustive]

Oxc 0.135 intègre le port Rust du React Compiler, marque les nœuds AST comme #[non_exhaustive] (breaking change pour les crates Rust en aval), ajoute deux nouvelles méthodes AstBuilder, et apporte de nombreuses corrections de stricte parser et d'espaces en codegen.
Nitro v3.0.260522-beta : Tracing à la Compilation, Cache VFS, Queues Vercel en Local

Nitro v3.0.260522-beta : Tracing à la Compilation, Cache VFS, Queues Vercel en Local

Le beta Nitro v3 du 22 mai apporte des wrappers de tracing pour les handlers de routes à la compilation, un cache VFS pour le code dynamique nitro, et le support des queues Vercel accessible en développement local, avec les correctifs de sécurité de la beta précédente.
Vue 3.6 entre en beta : Vapor Mode terminé, réactivité refactorée

Vue 3.6 entre en beta : Vapor Mode terminé, réactivité refactorée

Vue 3.6 beta est disponible avec l'achèvement du Vapor Mode, un chemin de compilation sans virtual DOM, et une refonte majeure du système de réactivité basé sur alien-signals, promettant des gains de performance significatifs.
JetStream 3 : Le Benchmark Qui Reflète Enfin le Fonctionnement des Apps Web Modernes

JetStream 3 : Le Benchmark Qui Reflète Enfin le Fonctionnement des Apps Web Modernes

WebKit, Google et Mozilla viennent de publier JetStream 3, la première révision majeure du benchmark depuis 2019. Il abandonne les microbenchmarks au profit de workloads réalistes, refond le scoring WebAssembly, et introduit du Dart, Kotlin et Rust compilés en Wasm.
TypeScript 6.0, Dernière Version Avant la Réécriture en Go

TypeScript 6.0, Dernière Version Avant la Réécriture en Go

TypeScript 6.0 est disponible, et l'équipe Microsoft est claire : c'est une version de transition. La vraie histoire, c'est ce qui vient ensuite : TypeScript 7, écrit en Go et déjà disponible en preview, promet un gain de performance de 10x.
Oxc Construisit Discrètement En Rust Le Toolkit JavaScript Le Plus Rapide, Et Il Est Presque Prêt

Oxc Construisit Discrètement En Rust Le Toolkit JavaScript Le Plus Rapide, Et Il Est Presque Prêt

Alors qu'ESLint v10 se battait avec le ménage legacy, le projet Oxc a livré un linter 100x plus rapide, un formateur 30x plus rapide que Prettier, et un parser qui laisse SWC dans la poussière. Voici ce qu'est réellement le compilateur d'oxydation JavaScript.
Knip v6 Intègre le Parser oxc pour des Gains de Performance de 2 à 4x

Knip v6 Intègre le Parser oxc pour des Gains de Performance de 2 à 4x

L'outil populaire de détection de code mort en JavaScript et TypeScript adopte le parser Rust oxc, avec des gains de performance de 2 à 4 fois.
numpy-ts 1.2 : parité RNG bit à bit avec NumPy et support Float16 en pur TypeScript

numpy-ts 1.2 : parité RNG bit à bit avec NumPy et support Float16 en pur TypeScript

L'implémentation NumPy en pur TypeScript atteint un jalon de correction : la génération de nombres aléatoires correspond désormais bit à bit à NumPy, Float16 arrive comme dtype de première classe, et le package n'a plus besoin d'entrées par runtime.
Pretext : La bibliothèque de mesure de texte sans DOM que les agents de codage IA utilisent déjà

Pretext : La bibliothèque de mesure de texte sans DOM que les agents de codage IA utilisent déjà

Cheng Lou vient de publier Pretext, une bibliothèque JavaScript pure qui mesure et dispose du texte multiligne sans toucher au DOM. Voici pourquoi c'est important pour la virtualisation, le contrôle de layout et les agents IA qui génèrent du code UI.
Bun vs Node vs Deno en 2026 : Le Duel des Runtimes Que Personne N'a Demandé (Mais Que Tout Le Monde Fait)

Bun vs Node vs Deno en 2026 : Le Duel des Runtimes Que Personne N'a Demandé (Mais Que Tout Le Monde Fait)

Trois runtimes JavaScript. Trois philosophies différentes. Des benchmarks indépendants à travers le throughput HTTP, les cold starts et la performance asynchrone racontent une histoire plus claire que le marketing ne pourrait jamais le faire. Voici l'analyse brutale et honnête pour les développeurs qui choisissent leur prochaine plateforme JS côté serveur.
Vue 3.5 : La version 'mineure' qui a réécrit les règles de la performance frontend

Vue 3.5 : La version 'mineure' qui a réécrit les règles de la performance frontend

Vue 3.5 est arrivé sans changements cassants et avec un ensemble d'amélioration des internals qui devrait attirer l'attention de tout développeur, 56% d'usage mémoire en moins, hydration paresseuse, et une API props réactive stabilisée.