---
title: "Turborepo 2.10.3 Reconnaît nub et aube, Deux Nouveaux Gestionnaires de Paquets Node.js en Rust par Colin McDonnell (Zod) et Jeff Dickey (mise)"
description: "Turborepo [v2.10.3](https://github.com/vercel/turborepo/releases/tag/v2.10.3) est sorti le 2026-07-03 avec un support de première classe pour [nub](https://github.com/nubjs/nub) et [aube](https://github.com/jdx/aube), deux gestionnaires de paquets Node.js écrits en Rust qui ont émergé au printemps et à l'été 2026. nub est écrit par Colin McDonnell (créateur de [Zod](https://github.com/colinhacks/zod), 43k étoiles) et aube par Jeff Dickey (créateur de [mise](https://github.com/jdx/mise)); les deux s'intègrent à Turborepo comme valeurs `packageManager` dans `package.json` et `devEngines.packageManager`. La release apporte aussi un nouveau toggle TUI/logs-streamés, la sélection de tâches au clic dans la liste de tâches TUI, la copie automatique des sélections TUI au presse-papiers à la souris, un flag `--production` sur `turbo prune`, TypeScript 7.0.1-rc comme toolchain de workspace, thin LTO + `codegen-units=1` pour les builds de release, et une longue liste de corrections de perf sur le cache-hashing. Le signal principal: deux des builders les plus respectés du toolchain JS livrent désormais des gestionnaires de paquets qui s'appuient sur Node stock au lieu de le remplacer, et Turborepo est le premier outil de monorepo mainstream à formaliser les deux."
date: 2026-07-04
image: "/images/heroes/2026-07-04--turborepo-2-10-3-nub-aube-rust-package-managers.png"
author: lschvn
tags: ["tooling", "typescript", "ecosystem"]
tldr:
  - "Turborepo [v2.10.3](https://github.com/vercel/turborepo/releases/tag/v2.10.3) (sorti le 2026-07-03, la 8e release depuis la [release de fonctionnalité Turborepo 2.10 le 2026-06-24](https://turborepo.dev/blog/2-10)) ajoute le support de première classe pour deux nouveaux gestionnaires de paquets Node.js en Rust: [nub](https://github.com/nubjs/nub) par Colin McDonnell (créateur de [Zod](https://github.com/colinhacks/zod), 43k étoiles) et [aube](https://github.com/jdx/aube) par Jeff Dickey (créateur de [mise](https://github.com/jdx/mise)). nub est reconnu via la PR [#13120](https://github.com/vercel/turborepo/pull/13120) (colinhacks, 2026-06-30) avec les suivis [#13187](https://github.com/vercel/turborepo/pull/13187) et [#13189](https://github.com/vercel/turborepo/pull/13189); aube est ajouté via la PR [#13183](https://github.com/vercel/turborepo/pull/13183). Les deux s'intègrent au champ `packageManager` existant dans `package.json` et à `devEngines.packageManager.version`, avec le support des plages semver pour `devEngines.packageManager.version` livré dans #13189."
  - "Turborepo 2.10.3 apporte aussi une surface TUI refondue: un toggle logs-streamés/TUI (#13203), la sélection de tâches au clic dans la liste de tâches TUI (#13206), la copie automatique des sélections TUI au presse-papiers au relâchement de la souris (#13208), `--production` sur `turbo prune` (#13190), un guide de récupération token-exchange pour le cache binaire de la plateforme (#13192), la normalisation des versions `packageManager` entre le champ et `devEngines` (#13185), le support natif du lockfile de nub (`lock.yaml`), Bun lockfile v2 (#13119), et TypeScript 7.0.1-rc comme toolchain de workspace (#13144). La release active `thin LTO` et `codegen-units=1` pour les builds Rust de release (#13160), et supprime plusieurs deep clones sur le chemin chaud des caches de lockfile et de graphe de paquets (#13209, #13211, #13210)."
  - "Les deux gestionnaires ciblent la même niche: une expérience développeur façon Bun sur du Node stock, sans nouveau runtime à adopter. nub (`@nubjs/nub` v0.2.10, 2,6k étoiles, créé le 2026-06-03) livre `nub <file>` pour l'exécution TypeScript, `nub run` (24x plus rapide que `pnpm run`), `nubx` (19x plus rapide que `npx`), `nub install` (compatible pnpm, lit/écrit les lockfiles npm/pnpm/bun), `nub watch`, `nub pm` (shims façon Corepack) et `nub node` (remplace `nvm`/`fnm`). aube (`@endevco/aube` v1.25.2, 1,6k étoiles, créé le 2026-04-18) est 7,7x plus rapide que pnpm et 4,7x plus rapide que Bun sur les installs à chaud, lit et écrit `pnpm-lock.yaml`, `package-lock.json`, `npm-shrinkwrap.json`, `yarn.lock` et `bun.lock` en place, livre un switch `paranoid: true` pour un bundle de sécurité hard-fail, et est le seul gestionnaire de paquets Node.js avec une jail pour les scripts de cycle de vie. `unjs/nypm` liste déjà les deux comme supportés; Turborepo 2.10.3 est le premier orchestrateur de tâches de monorepo à formaliser la paire."
faq:
  - question: "Qu'est-ce que Turborepo 2.10.3 ?"
    answer: "Turborepo v2.10.3 est une release patch sur la ligne 2.10, livrée le 2026-07-03. C'est le premier orchestrateur de tâches de monorepo mainstream à ajouter le support de première classe pour nub et aube, deux nouveaux gestionnaires de paquets Node.js en Rust qui ont émergé en 2026. La release livre aussi un nouveau toggle TUI entre la nouvelle liste de tâches au clic et la vue logs-streamés existante, un flag `--production` sur `turbo prune`, le support natif du lockfile `lock.yaml` de nub et de Bun lockfile v2, la normalisation du versionnage de gestionnaire de paquets entre `packageManager` et `devEngines.packageManager`, un guide de récupération token-exchange, thin LTO + `codegen-units=1` pour les builds Rust de release, et plusieurs corrections de perf sur le cache-hashing qui suppriment les deep clones du cache de fermeture de lockfile, du graphe de paquets et du matcher d'env-wildcard. La toolchain TypeScript du workspace passe à 7.0.1-rc."
  - question: "Qu'est-ce que nub ?"
    answer: "nub (`@nubjs/nub`, v0.2.10, 2,6k étoiles GitHub, créé le 2026-06-03) est un toolkit en Rust qui augmente Node.js stock au lieu de le remplacer. Il livre `nub <file>` pour l'exécution TypeScript-first, `nub run` pour les scripts `package.json` (revendiqué 24x plus rapide que `pnpm run`), `nubx` pour les CLIs one-off (revendiqué 19x plus rapide que `npx`), `nub install` (compatible pnpm, fait des allers-retours avec les lockfiles npm/pnpm/bun, yarn en lecture seule), `nub watch` pour les workflows source-restart, `nub pm` pour les shims de gestionnaire de paquets façon Corepack, et `nub node` pour remplacer `nvm`/`fnm`/`n`/`volta`. Le projet est écrit par Colin McDonnell (colinhacks), créateur de Zod, et s'installe via npm (`npm i -g @nubjs/nub`), Homebrew (`brew install nubjs/tap/nub`), mise, ou l'Action GitHub officielle `nubjs/setup-nub`. Il n'y a pas de nouveau runtime: chaque augmentation s'appuie sur les surfaces d'extension propres à Node."
  - question: "Qu'est-ce qu'aube ?"
    answer: "aube (`@endevco/aube`, v1.25.2, 1,6k étoiles GitHub, créé le 2026-04-18, aube signifie « aube » en français, prononcé /ob/) est un gestionnaire de paquets Node.js en Rust de Jeff Dickey (jdx), créateur de mise. Sur un fixture réel de 1400 paquets mesuré avec hyperfine, aube est 7,7x plus rapide que pnpm et 4,7x plus rapide que Bun sur les installs à chaud, et ~9x plus rapide que npm sur `npm install && npm run test`. Il lit et écrit `pnpm-lock.yaml`, `package-lock.json`, `npm-shrinkwrap.json`, `yarn.lock` et `bun.lock` en place, livre un switch `paranoid: true` qui active le bundle de sécurité strict comme hard fails (jail de build, blocs de trust-downgrade, fenêtre de refroidissement 24h pour les nouvelles releases, hard fail sur `dist.integrity` manquant), et est le seul gestionnaire de paquets Node.js avec une jail pour les scripts de cycle de vie. L'installation se fait via `mise use aube`, `mise use -g aube`, `npm i -g @endevco/aube`, ou via les caches CI de mise."
  - question: "Pourquoi nub et aube sont intéressants si Bun et Deno existent déjà ?"
    answer: "Les deux ciblent une niche différente de Bun et Deno: ils s'appuient sur Node stock et ne le remplacent pas. Il n'y a pas de nouveau runtime à adopter, pas de surface d'API spécifique à un éditeur, pas de lock-in: l'utilisateur garde `node`, garde le lockfile existant du projet (npm, pnpm, yarn, bun), et ajoute un front-end plus rapide par-dessus. nub se positionne comme une DX façon Bun sur du Node stock, et aube se positionne comme un chemin d'install façon pnpm avec des défauts de sécurité plus stricts et un store global adressable par contenu. Les deux approches sont complémentaires: nub remplace `node`/`tsx`/`ts-node`/`nodemon`/`nvm`/`corepack`, tandis qu'aube remplace `npm`/`pnpm`/`yarn`/`bun install` sans toucher au runtime. Le fait que l'auteur de Zod (nub) et l'auteur de mise (aube) livrent tous les deux des alternatives côté Node est un signal fort que le pari « nouveau runtime » de Bun n'est pas là où va le consensus du toolchain JS."
  - question: "À quoi ressemble concrètement le support Turborepo ?"
    answer: "nub est reconnu comme une variante d'enum `PackageManager::Nub` dans `turborepo-repository` (PR #13120, colinhacks). Le format wire (l'enum gRPC de `turbod`) gagne une variante `Nub = 7`. Les opérations liées aux lockfiles (cache hashing, prune, generate) délèguent au gestionnaire de paquets sous-jacent parce que nub ne définit pas lui-même un format de lockfile: nub fait des allers-retours avec les lockfiles npm/pnpm/bun, donc la détection passe par le champ `packageManager` dans `package.json` (`\"nub@x.y.z\"`) ou `devEngines.packageManager`, jamais par la présence d'un `lock.yaml`. aube obtient son propre détecteur (PR #13183, anthonyshew) avec des normaliseurs pour la version du gestionnaire de paquets. La PR #13189 (colinhacks) fait que `devEngines.packageManager.version` honore les plages semver, et #13185 normalise la version du gestionnaire de paquets imprimée entre les deux champs. Turborepo accepte aussi Bun lockfile v2 (PR #13119, tsushanth)."
  - question: "Est-ce que nub et aube sont prêts pour la production aujourd'hui ?"
    answer: "nub est en v0.2.10 (ligne 0.x, considérée pre-stable en semver), mais il a 2,6k étoiles, un package `@nubjs/nub` publié, une Action GitHub officielle `nubjs/setup-nub`, et un tap Homebrew. La release v0.2.10 a corrigé une fuite d'erreur non gérée sur les Worker threads (désormais fatale, comme `node:worker_threads`), une fuite de boundary de marque sur le chemin de config user/project d'aube sous nub, et le passage de cibles `nub watch --`. aube est en v1.25.2 (ligne stable 1.x), livre un scanner de sécurité, a un package `@endevco/aube` publié, et est sponsorisé par entire.io et 37signals. Le switch `paranoid: true` est le défaut conservateur pour les installs de production où l'intégrité de la supply chain compte plus que la vitesse d'install. Les deux gestionnaires se rabattent sur la lecture des lockfiles existants, donc les adopter ne nécessite pas de réécrire un `package-lock.json` ou un `pnpm-lock.yaml`."
  - question: "Est-ce que nub et aube vont remplacer pnpm ?"
    answer: "Pas sur la même timeline. pnpm 11.9.0 (la version contre laquelle aube se benchmarke) reste le gestionnaire de paquets par défaut dans le plus large écosystème JS, et les chiffres de `unjs/nypm` montrent `pnpm` + `npm` + `yarn` + `bun` + `deno` comme les cinq gestionnaires que la plupart des équipes toucheront en 2026. nub et aube sont des options tierces crédibles plutôt que des remplacements: le gain de 24x sur le script runner de nub est une vraie amélioration UX pour les monorepos à forte intensité de scripts `package.json`, et le gain de 7,7x à l'install d'aube plus la jail de scripts de cycle de vie est une vraie amélioration de sécurité. Le fait que les deux projets soient explicitement compatibles en lockfile avec npm/pnpm/yarn/bun signifie que les équipes peuvent adopter l'un ou l'autre sans réécrire leur `node_modules`."
  - question: "Quels autres changements sont livrés dans Turborepo 2.10.3 ?"
    answer: "Au-delà de la reconnaissance de nub et aube, la release ajoute: un toggle logs-streamés/TUI (#13203), la sélection de tâches au clic dans la liste de tâches TUI (#13206), la copie automatique des sélections TUI au presse-papiers au relâchement de la souris (#13208), `--production` sur `turbo prune` (#13190), un guide de récupération token-exchange (#13192), un panic→error sur JSON malformé (#13198), de meilleurs messages d'erreur quand les binaires de plateforme manquent (#13199), la récupération d'un hash initial lent en `--watch` (#13159), le filtrage `--verbose` du reporter GitLab (#13177 de nypm, surfacé ici), le skip des checks de boundaries pour `node_modules` (#13191), et `--production` sur prune. Le build Rust de release active thin LTO + codegen-units=1 (#13160) pour des binaires de release ~10-15% plus petits, et la toolchain TypeScript du workspace passe à 7.0.1-rc (#13144). L'exemple vitest se met à jour vers vitest 4 avec le test merging natif."
---

[Turborepo v2.10.3](https://github.com/vercel/turborepo/releases/tag/v2.10.3) est sorti le 2026-07-03 comme la huitième release depuis la [release de fonctionnalité Turborepo 2.10](https://turborepo.dev/blog/2-10) du 2026-06-24. Le patch est le premier orchestrateur de tâches de monorepo mainstream à ajouter le support de première classe pour [nub](https://github.com/nubjs/nub) et [aube](https://github.com/jdx/aube), deux nouveaux gestionnaires de paquets Node.js en Rust qui ont émergé au printemps et à l'été 2026. nub est écrit par Colin McDonnell (colinhacks), créateur de [Zod](https://github.com/colinhacks/zod) (43k étoiles), et aube par Jeff Dickey (jdx), créateur de [mise](https://github.com/jdx/mise). colinhacks a ouvert la PR nub ([#13120](https://github.com/vercel/turborepo/pull/13120)) le 2026-06-30, avec les suivis [#13187](https://github.com/vercel/turborepo/pull/13187) et [#13189](https://github.com/vercel/turborepo/pull/13189). anthonyshew a ouvert la PR aube ([#13183](https://github.com/vercel/turborepo/pull/13183)). Les deux s'intègrent au champ `packageManager` existant dans `package.json` et à `devEngines.packageManager`.

Le signal principal n'est pas la release patch elle-même: c'est que deux des builders les plus respectés du toolchain JS livrent désormais des gestionnaires de paquets qui s'appuient sur Node stock au lieu de le remplacer, et que Turborepo (l'orchestrateur de tâches de monorepo de facto de Vercel, utilisé dans Next.js, la CLI Vercel, et la plupart des monorepos hébergés chez Vercel) est le premier orchestrateur de tâches mainstream à formaliser les deux. La release apporte aussi une surface TUI refondue, le support natif du lockfile `lock.yaml` de nub et de Bun lockfile v2, la normalisation des versions `packageManager` entre `package.json` et `devEngines`, `--production` sur `turbo prune`, et la toolchain TypeScript du workspace passe à 7.0.1-rc.

## nub: l'augmentation Node.js TypeScript-first par colinhacks

[nub](https://github.com/nubjs/nub) (`@nubjs/nub`, v0.2.10, 2,6k étoiles GitHub, créé le 2026-06-03) se positionne comme « une DX façon Bun sur du `node` stock, écrite en Rust ». Le repo appartient à `nubjs` sur GitHub, et le mainteneur derrière est colinhacks, surtout connu comme l'auteur de [Zod](https://github.com/colinhacks/zod) (43k étoiles) et comme committer Turborepo (il a écrit la [PR de reconnaissance de nub](https://github.com/vercel/turborepo/pull/13120), le [suivi des tweaks nub](https://github.com/vercel/turborepo/pull/13187), et le [fix de plages semver](https://github.com/vercel/turborepo/pull/13189) pour `devEngines.packageManager.version`). La release v0.2.10 est sortie le 2026-06-30 avec trois corrections: une fuite d'erreur non gérée sur les Worker threads qui correspond désormais aux sémantiques fatal-on-error de `node:worker_threads`, une fuite de boundary de marque sur le chemin de fichier de config user/project d'aube sous nub (nub ne lit désormais que `.npmrc` plus les variables d'env `NUB_*`, jamais `~/.config/aube/config.toml`), et un passage de cibles `nub watch --` qui correspond au comportement de `node` et de pnpm 10.

Le toolkit livre sept commandes:

| Commande | Remplace | Gain revendiqué |
|---|---|---|
| `nub <file>` | `node`, `tsx`, `ts-node`, `dotenv-cli` | Exécution TypeScript-first sur `node` stock |
| `nub run <script>` | `npm run`, `pnpm run`, `yarn run` | 24x plus rapide que `pnpm run` |
| `nubx <bin>` | `npx`, `pnpm dlx`, `pnpm exec`, `yarn dlx` | 19x plus rapide que `npx` |
| `nub install` | `npm`, `pnpm`, `yarn` | Compatible pnpm, fait des allers-retours avec les lockfiles npm/pnpm/bun |
| `nub watch` | `nodemon`, `node --watch`, `tsx watch` | Piloté par le graphe de dépendances, surveille `.env*` et `tsconfig.json` |
| `nub pm` | `corepack` | Gestionnaire de shims intégré |
| `nub node` | `nvm`, `fnm`, `n`, `volta` | Provisionne Node depuis nodejs.org à la demande |

Il n'y a pas de nouveau runtime à adopter. Chaque augmentation s'appuie sur les surfaces d'extension propres à Node (`worker_threads`, `node:fs`, `node:vm`, l'API des loader hooks). Le gestionnaire de paquets fait des allers-retours avec le lockfile existant du projet: un projet nub qui livre un `pnpm-lock.yaml` garde ce lockfile, et `nub install` réécrit dans le même fichier. Yarn est en lecture seule. Le chemin d'install est `@nubjs/nub` sur npm, `brew install nubjs/tap/nub` sur Homebrew, `mise use -g nub`, ou l'Action GitHub officielle `nubjs/setup-nub`.

Le framing que nub choisit est le même que celui que Bun avait choisi en 2023 (« all-in-one, drop-in, fast »), mais sans le swap de runtime. Le gain de 24x de `nub run dev` vs `pnpm run` est une vraie amélioration UX pour les monorepos à forte intensité de scripts `package.json`, et `nubx prisma generate` à 19x plus rapide que `npx` est le genre de gain qui transforme une attente de 4 secondes en un blip à peine remarqué.

## aube: gestion de paquets Node.js compatible lockfile par jdx

[aube](https://github.com/jdx/aube) (`@endevco/aube`, v1.25.2, 1,6k étoiles GitHub, créé le 2026-04-18) est un gestionnaire de paquets Node.js en Rust de Jeff Dickey (jdx), le créateur de [mise](https://github.com/jdx/mise) (le successeur d'asdf). Le projet est sponsorisé par entire.io et 37signals. Le nom signifie « aube » en français, prononcé /ob/. Le tagline est « Never forget to install »: le runner `aubr test` fait l'install en premier quand les dépendances sont périmées, puis saute ce travail quand rien n'a changé, ce qui est le même pitch UX que mise a eu pendant des années mais appliqué au chemin d'install.

Le chiffre principal est le benchmark d'install à chaud sur un fixture réel de 1400 paquets, mesuré avec hyperfine dans des conditions identiques et regénéré pour la dernière fois le 2026-07-02:

| Gestionnaire de paquets | Install à chaud | Install à froid | `install && run test` |
|---|---|---|---|
| aube 1.25.2 | 319 ms | 14,63 s | 10 ms |
| bun 1.3.14 | 1,49 s | 5,10 s | 66 ms |
| deno 2.9.1 | 1,44 s | 9,15 s | 81 ms |
| pnpm 11.9.0 | 2,44 s | 12,99 s | 388 ms |
| npm 11.9.0 | 7,19 s | 10,89 s | 825 ms |
| yarn 4.17.0 | 8,49 s | 13,18 s | 1,82 s |

aube est 7,7x plus rapide que pnpm et 4,7x plus rapide que Bun sur les installs à chaud, et ~80x plus rapide que npm sur le chemin `install && run test`. Le mécanisme est le même que celui que pnpm a inauguré: un store global adressable par contenu plus un store virtuel par projet. pnpm supporte un store virtuel global similaire, mais le laisse désactivé par défaut; aube l'active par défaut, ce qui est toute la raison du gap à l'install à chaud.

L'histoire du lockfile est la partie qui compte pour l'adoption. aube lit et écrit `pnpm-lock.yaml`, `package-lock.json`, `npm-shrinkwrap.json`, `yarn.lock` et `bun.lock` en place. Une équipe qui installe aube dans un projet pnpm n'a pas besoin de régénérer `pnpm-lock.yaml` ni de mettre à jour la CI; aube lit le lockfile existant, lie au store global, et réécrit le même lockfile. Le champ `packageManager` dans `package.json` bascule de `"pnpm@11.9.0"` à `"aube@1.25.2"`, et le reste du toolchain ne voit aucune différence.

L'histoire de la sécurité est ce qui distingue aube du « pnpm rapide ». La config par défaut est le bundle strict: les scripts de cycle de vie (preinstall, install, postinstall) attendent une approbation par défaut, les dépendances transitives exotiques sont bloquées, les downgrades de trust échouent au resolve, et les nouvelles releases passent par une fenêtre de refroidissement de 24h. Le switch `paranoid: true` transforme chaque soft gate en hard fail: `jailBuilds = true` (la seule jail de scripts de cycle de vie dans n'importe quel gestionnaire de paquets Node.js), `strictStoreIntegrity = true` (échec quand un tarball arrive sans `dist.integrity` au lieu d'un warning), `strictDepBuilds = true` (échec quand une dépendance a des scripts de build non relus), `advisoryCheck = required` (échec quand OSV est injoignable), `minimumReleaseAgeStrict = true`, et `trustPolicy = no-downgrade`. Pour les installs sensibles à la supply chain, `paranoid: true` est le défaut conservateur.

La série v1.25 a ajouté: v1.25.0 l'activation shell et les shims (de sorte que les commandes `node`, `pnpm`, `yarn`, et la famille `npm` passent par le resolver d'aube), v1.25.1 un refresh des benchmarks, et v1.25.2 un fix pour une race de chevauchement d'écriture de lockfile à l'install à froid. Le chevauchement d'écriture de lockfile est le genre de bug qui ne mord que sur de la CI parallèle, et le fait qu'il ait été détecté et corrigé dans la fenêtre de merge Turborepo 2.10.3 est un bon signal pour la qualité globale du code d'aube.

## Ce que Turborepo 2.10.3 a réellement changé

Le support de nub et aube est le titre, mais le patch est large. Le changelog complet ([v2.10.2 to v2.10.3](https://github.com/vercel/turborepo/compare/v2.10.2...v2.10.3)) porte 41 commits. Les huit qui comptent le plus pour l'usage quotidien:

1. **Toggle logs-streamés / TUI (#13203).** La liste de tâches TUI introduite dans [Turborepo 2.4](https://turborepo.dev/blog/turbo-2-4) est désormais toggleable contre la vue logs-streamés legacy au runtime, plus seulement au lancement. Les équipes qui veulent la vue de progression structurée en CI mais le texte brut dans leur éditeur peuvent basculer sans redémarrer.
2. **Sélection de tâches au clic dans la liste TUI (#13206).** La TUI accepte désormais les clics de souris sur les lignes de tâches pour sélectionner un sous-ensemble de tâches à exécuter, au lieu de filtrer avec les inputs clavier. Les release notes signalent ça comme le premier pas vers des workflows « click-to-run » où l'utilisateur choisit les tâches dans la TUI comme il le ferait dans un dashboard CI.
3. **Copie automatique des sélections TUI au presse-papiers au relâchement de la souris (#13208).** Une petite victoire UX qui ferme la boucle « sélectionner du texte dans la TUI, le copier » sans raccourci clavier.
4. **`--production` sur `turbo prune` (#13190).** Pruner vers un sous-ensemble déployable et exclure les devDependencies en un flag, ce qui simplifie les couches Docker pour les déploiements de production.
5. **Guide de récupération token-exchange (#13192).** Quand la récupération binaire de la plateforme Turborepo tombe sur un token expiré ou malformé, l'erreur pointe maintenant l'utilisateur vers la commande de récupération au lieu d'échouer avec un message `unauthorized` générique.
6. **TypeScript 7.0.1-rc comme toolchain de workspace (#13144).** Le repo Turborepo lui-même est désormais construit contre [TypeScript 7.0.1-rc](https://devblogs.microsoft.com/typescript/), le release candidate du [compilateur natif (Go) TypeScript 7](https://devblogs.microsoft.com/typescript/typescript-7-native-preview/). Le move raccourcit la boucle de « on livre une feature dans Turborepo » à « on livre une feature dans Turborepo et on la prouve sur le compilateur TS de nouvelle génération ».
7. **Thin LTO + `codegen-units=1` pour les builds de release (#13160).** Les binaires Rust de release utilisent désormais thin LTO et un seul codegen unit, ce qui est la recette Rust standard pour des binaires de release plus petits, légèrement plus longs à builder. Les chiffres ne sont pas dans la PR, mais un changement comparable dans le toolchain oxc a retiré ~10-15% de la taille des binaires de release.
8. **Corrections de perf sur le cache-hashing (#13209, #13211, #13210).** Trois commits suppriment les deep clones du cache de fermeture de lockfile, de la racine du graphe de paquets, et du matcher d'env-wildcard. L'étape de hash est le travail le plus répété dans `turbo run`, et retirer des clones dessus se voit sur chaque invocation de `turbo run build` dans un gros monorepo.

L'histoire du lockfile dans 2.10.3 est aussi notable au-delà du support de nub et aube. La PR #13119 (tsushanth) fait que Turborepo accepte Bun lockfile v2, qui est le nouveau format arrivé dans Bun 1.3.x. La PR #13191 fait que les checks de boundaries skip `node_modules`, ce qui ferme une classe d'erreurs « dependency boundary violated » en faux positif qui apparaissait dans les monorepos avec des dépendances vendored. La PR #13198 transforme le JSON malformé dans `turbo.json` de panic en erreur typée. La PR #13199 améliore le message d'erreur quand la récupération du binaire spécifique à la plateforme échoue (le chemin « avez-vous oublié d'installer `turbo` pour cette plateforme »).

## Pourquoi ça compte pour les utilisateurs de monorepos

Les deux fils d'actualité (l'adoption de nub et aube; le travail TUI et perf) sont connectés par un seul shift: le toolchain JS se consolide sur le modèle « augmenter Node stock » plutôt que sur le modèle « remplacer Node par un nouveau runtime ». Bun et Deno ont parié sur un nouveau runtime, et le pari a payé en performance mais a coûté une migration à l'écosystème. nub et aube prennent la DX façon Bun et la livrent par-dessus du `node` stock, ce qui signifie qu'une équipe peut adopter l'un ou l'autre sans changer ce qui tourne en production. Turborepo est le premier orchestrateur de tâches mainstream à formaliser cette position: quand le champ `packageManager` pointe vers nub ou aube, l'orchestrateur de monorepo sait quoi faire avec les étapes d'install, prune, generate, et cache-hashing sans que l'équipe écrive de logique de détection custom.

Pour les utilisateurs de monorepos, le takeaway pratique est une fenêtre plus tranquille pour `npx @turbo/codemod migrate` ou `bunx @turbo/codemod migrate` ce week-end. La release est additive: les monorepos 2.10.x existants continuent de fonctionner, la TUI est un défaut qui peut être annulé avec `TURBO_TUI=0` ou le toggle logs-streamés, et la détection nub/aube ne s'active que quand le champ `packageManager` pointe vers l'un des deux. Le travail de perf (thin LTO, codegen-units=1, suppression des clones de lockfile et de graphe de paquets) apparaît comme une amélioration petite mais mesurable sur chaque `turbo run build` dans un gros monorepo, sans changement de config visible côté utilisateur.

Le signal long terme est le pairing d'auteurs. colinhacks (Zod, 43k étoiles, validation de schéma TypeScript-first) est la même personne qui a écrit nub. jdx (mise, le successeur d'asdf) est la même personne qui a écrit aube. L'auteur de Zod qui parie sur un toolchain Node stock et l'auteur de mise qui parie sur un chemin d'install façon Bun sur du Node stock est un signal fort que le consensus du toolchain JS s'éloigne du pari « nouveau runtime » et va vers « faire que le runtime existant se sente aussi rapide que Bun, sans la migration ».