Rolldown 1.1.4 Désactive `experimental.lazyBarrel` par Défaut, un Mois Après que 1.1.0 l'Ait Activé

Rolldown 1.1.4 Désactive `experimental.lazyBarrel` par Défaut, un Mois Après que 1.1.0 l'Ait Activé

lschvn

Rolldown v1.1.4, publié le 2026-07-01T14:02:02Z, est une annulation quatre semaines plus tard du changement principal de Rolldown v1.1.0 (2026-06-03), qui avait rendu experimental.lazyBarrel activé par défaut avec une note indiquant que l'opt-out était prévu pour suppression dans une release future. La release 1.1.4 rebascule la valeur par défaut à off, force l'option à off en mode dev par-dessus le forçage existant à off pour treeshake, et embarque un tail de 19 corrections de bogues. Le gap de correction sous-jacent est collecté dans la nouvelle issue de suivi #10085 « Tracking strictExecutionOrder correctness and architecture issues », ouverte le lendemain de la release. 1.1.4 est la première release de la ligne 1.1.x à toucher la surface de configuration lazyBarrel depuis la bascule par défaut de 1.1.0.

L'article précédent sur Rolldown 1.1.0 et lazyBarrel couvrait la bascule par défaut d'origine: lazyBarrel est passé d'un opt-in discret à un comportement activé par défaut, le titre de la release 1.1.0. L'article disait aussi « the opt-out flag is planned for removal in a future release » et « if you encounter a case where you need to disable it, the recommendation is to open an issue so the underlying detection logic can be improved instead. » La 1.1.4 revient sur la suppression prévue et livre à la place le chemin « open an issue »: l'opt-in reste, la valeur par défaut bascule, et la logique de détection sous-jacente est le sujet de la nouvelle issue de suivi.

Ce que 1.1.4 change dans la configuration

L'unique entrée de fonctionnalité dans 1.1.4 est une ligne dans le changelog: « disable experimental.lazyBarrel by default (#10071) by @shulaoda ». Le corps de la PR fait quatre paragraphes. Le premier paragraphe est l'information: « temporarily disables experimental.lazyBarrel by default again (back to opt-in) ». Le deuxième est la raison: « Only one unresolved issue is left: a strictExecutionOrder tree shaking issue, which is the root cause of the lazy barrel runtime error. Even though it could be fixed quickly, it doesn't hurt to turn the option off today and re-enable it by default in a future release once that issue is resolved. » Le troisième est le fix technique: « Default experimental.lazyBarrel to false in is_lazy_barrel_enabled. Update the @default JSDoc tag on the lazyBarrel option to false. » Le quatrième est le changement de documentation: « Update the lazy barrel docs to reflect that it is now disabled by default and document how to opt in. »

Le deuxième changement côté configuration dans 1.1.4 est un fix du mode dev, aussi par @shulaoda. La PR #10060 fusionne les trois overrides du mode dev en un seul bloc dans prepare_build_context.rs: incrementalBuild est forcé à on, treeshake est forcé à off, et lazyBarrel est forcé à off. La PR est explicite sur la raison du troisième override: « Dev mode requires treeshaking to be disabled, and lazy barrel relies on treeshaking, so it must be disabled as well. » L'override passe par is_lazy_barrel_enabled(), donc un seul Some(false) désactive la feature dans le module task, le module loader et les flat options. Le fix supprime l'incohérence où un build dev exécutait une passe de treeshake sensible aux barrels sur un graphe où le treeshake général était désactivé.

La cause racine suivie

La release 1.1.4 est livrée un jour avant que l'équipe n'ouvre l'issue #10085 canonique pour le gap sous-jacent. Le titre de l'issue est « Tracking strictExecutionOrder correctness and architecture issues », et le corps est une liste structurée de deux bogues spécifiques et de deux problèmes d'architecture. Le premier bogue est un miss de onDemandWrapping: les lectures de bindings d'imports top-level ne sont pas prises en compte, donc un module d'apparence pure peut être déplacé à travers une mutation et capturer la mauvaise valeur d'export live. Le deuxième bogue est un miss de ExecutionOrderSensitive: le check actuel demande si une instruction elle-même peut faire quelque chose d'observable, mais il manque les lectures dont la valeur observée dépend d'une exécution antérieure du module. Les deux problèmes d'architecture sont: StmtEvalAnalyzer qui court-circuite sur les side effects (donc il ne peut pas aussi servir de collecteur complet de faits d'ordre), et le pattern plus large d'envelopper largement puis désenvelopper, au lieu de dériver les obligations d'enveloppement des faits d'ordre d'exécution et des dépendances du graphe.

L'issue #10077 sœur « Support tree shaking and lazy barrel under dev mode » est le suivi du mode dev: le mode dev force le treeshake à off parce que l'implémentation originale ne pouvait pas garantir la correction avec le modèle d'exécution à la demande, et lazyBarrel repose sur le treeshake. Le fix consiste à amener la correction du treeshake en mode dev au niveau du mode production, après quoi lazyBarrel pourra être activé en dev aussi. Les deux issues sont le travail qui débloque la prochaine bascule par défaut.

Les 19 corrections de bogues en plus

La release 1.1.4 embarque 19 corrections de bogues, toutes par-dessus une surface d'API 1.1.x inchangée. Les titres sont trois fixes JSON default-export sous preserveModules (#10056, #10020, #9996), qui ensemble conservent l'interface JSON complète sous preserveModules et court-circuitent le split par défaut JSON quand l'objet s'échappe. Le fix de rétention de facade de chunk (#9997) conserve la facade d'entrée quand un chunk partagé détient le module d'une autre entrée, ce qui prévient un vrai cas limite de build de production où une entrée ré-exportée perdrait sa facade. Le fix de deconflict (#9921) renomme les locales CJS-wrapped qui masquent des bindings chunk-root, ce qui corrige une catégorie de problèmes d'ombrage de variables dans les builds CJS/ESM mixtes. Les fixes de treeshake couvrent la classification await (#9987), les side effects d'accès aux membres de namespace (#9986), les bailouts de mutation de default JSON (#9972), et les side effects de computed keys sur les accès aux membres de namespace. Les fixes de mode dev incluent des erreurs d'init rattrapables dans les modules lazy-compiled (#9981) et un fix de metadata de plugin (#9991, annulé par #10005).

La release embarque aussi le tail de performance habituel, avec en tête la désactivation de preserve_parens sur tous les chemins de parse (#10057), l'inlining de declared_symbols avec SmallVec (#9920), et le packing de TaggedSymbolRef sur 8 octets (#9919). La release met à niveau vers oxc 0.138.0 et migre la construction AST vers des factories par type, ce qui est un prérequis pour le travail de correction strictExecutionOrder qui est maintenant scopé sous la nouvelle issue de suivi.

Pourquoi cela compte pour la roadmap Rolldown

La release 1.1.4 est un petit bump de version qui livre un signal significatif sur la façon dont le projet gère les régressions de fonctionnalités phares. La bascule par défaut sur experimental.lazyBarrel était le changement le plus visible des release notes 1.1.0, et la fenêtre de quatre semaines entre la bascule et l'annulation est le genre de cadence qui produit de la confiance: l'équipe a activé la feature, pris les rapports de bogues, ouvert une issue de suivi, et est revenue sur la valeur par défaut plutôt que de masquer le gap. Le chemin opt-in est inchangé, donc tout projet qui était déjà sur le chemin opt-in n'a rien à faire. Tout projet qui avait récupéré le comportement activé par défaut implicitement obtient le chemin historique plus conservateur. L'équipe n'a pas engagé de fenêtre de release pour la réactivation, mais les issues de suivi sont publiques et le travail est scopé.

La release stable Vite 8.1, livrée le 2026-06-23 et tournant sur Rolldown 1.1.2, hérite du comportement activé par défaut pour l'instant. La première release Vite qui livrera sur Rolldown 1.1.4 récupérera l'annulation de la bascule par défaut et le fix du mode dev, et sera la release qui ferme l'arc 1.1.0-à-1.1.4 pour les utilisateurs de Vite. La rétrospective de l'ère Vite 8 / Rolldown de mars est le contexte long format pour comprendre pourquoi cela compte: Vite 8 a été la première release où le serveur de dev tourne sur le même graphe Rolldown que le build de production, et la bascule par défaut de lazyBarrel était un pas vers le fait de rendre ce graphe le plus rapide de l'écosystème. L'annulation 1.1.4 est un pas en arrière sur la courbe de vitesse et un pas en avant sur la courbe de correction; l'équipe ne ralentit ni l'un ni l'autre, mais ne livre pas non plus une valeur par défaut rapide mais incorrecte.

Questions fréquentes

Claude Code 2.1.198 rend Claude in Chrome généralement disponible, permet aux agents en arrière-plan de committer, pusher et ouvrir des PRs en brouillon, ajoute la skill `/dataviz` et intègre Claude Platform on AWS à la Gateway

Anthropic a publié Claude Code [v2.1.198](https://github.com/anthropics/claude-code/releases/tag/v2.1.198) le 2026-07-01T20:45:36Z, deuxième jour consécutif de livraison pour Claude Code après la v2.1.197 (la version qui faisait de Sonnet 5 le modèle par défaut) la veille. Le changement principal est que Claude in Chrome devient généralement disponible dans Claude Code: l'assistant côté navigateur qui était en recherche preview passe sur un canal stable et n'est plus verrouillé par un drapeau de fonctionnalité ou une liste d'attente. La version livre aussi la première automatisation de bout en bout pour les agents en arrière-plan dans `claude agents`, qui committent, pushent et ouvrent une pull request en brouillon lorsqu'ils terminent un travail de code dans un worktree, au lieu de s'arrêter pour demander. Autres ajouts notables: une skill `/dataviz` pour la conception de graphiques et de tableaux de bord avec un validateur de palette de couleurs exécutable, un upstream Gateway pour Claude Platform on AWS (`anthropicAws`) avec des réponses model-not-found qui avancent dans la chaîne de basculement, un agent Explore intégré qui hérite désormais du modèle de la session principale (plafonné à opus) au lieu de tourner sur Haiku, et des sous-agents qui héritent de la configuration d'extended thinking de la session parente. La version supprime aussi l'assistant `/agents` et le remplace par le flux conversationnel, corrige une longue liste de bugs de fiabilité sur les agents en arrière-plan, les coupures réseau et l'authentification de plateforme, et améliore la coloration syntaxique en passant à highlight.js 11.

Articles connexes

Plus de couverture avec des sujets et tags en commun.

Prettier 3.9 refond cinq parseurs : micromark pour Markdown, yaml v2, GraphQL.js v17, un parseur Flow en Rust et Angular
tooling

Prettier 3.9 refond cinq parseurs : micromark pour Markdown, yaml v2, GraphQL.js v17, un parseur Flow en Rust et Angular

Prettier 3.9.0, publié le 27 juin 2026 (prettier/prettier, billet de Fisker Cheung), est une release centrée sur les parseurs qui fait passer Markdown de remark-parse v8 à micromark v4 (meilleure conformité CommonMark et GFM et une série de bugs de parsing de longue date corrigés), YAML à yaml v2, GraphQL à GraphQL.js v17 (arguments de fragment et directives sur les définitions de directive), Flow au nouveau parseur oxidized basé sur Rust de l'équipe Flow (environ 37 % plus rapide sur les fixtures Flow valides de Prettier et 43 % plus rapide sur flow_parser.js en benchmarks parser-only locaux) et Angular. Le formateur JavaScript et TypeScript est aussi retravaillé, en particulier en mode --no-semi où les commentaires autour de break et continue sont maintenant stables entre plusieurs passages (un fix d'idempotence), plus la suppression des parenthèses redondantes dans les return, l'alignement des interpolations de template embarquées et l'inlining des expressions de négation logique. La release retire la syntaxe legacy import ... assert {} (Babel 8 a supprimé le plugin de parseur ; migrez vers with), corrige une option --cache-strategy content silencieusement cassée et empêche les fichiers EditorConfig au-dessus des worktrees Git de s'infiltrer. L'équipe rappelle d'épingler la version exacte dans package.json car les changements de formatage vont produire des diffs.
Playwright v1.61.0 : passkeys WebAuthn, vraie API WebStorage et modes vidéo à la trace pour le test runner
tooling

Playwright v1.61.0 : passkeys WebAuthn, vraie API WebStorage et modes vidéo à la trace pour le test runner

Playwright v1.61.0 (15 juin 2026) livre un authentificateur virtuel pour les cérémonies WebAuthn/passkey, une API de première classe page.localStorage / page.sessionStorage, les détails de sécurité réseau sur les APIResponse, et aligne l'enregistrement vidéo du test runner sur l'enregistrement de trace. Canaux navigateur : Chromium 149, Firefox 151, WebKit 26.5.
Vite 8.1 Beta : imports `.wasm` directs, `build.chunkImportMap` et rename `server.hmr` → `server.ws`
tooling

Vite 8.1 Beta : imports `.wasm` directs, `build.chunkImportMap` et rename `server.hmr` → `server.ws`

Vite 8.1.0-beta.0 (15 juin 2026) est la première beta de la ligne 8.1. Elle livre le standard WASM ESM Integration en imports `.wasm` directs, une option build.chunkImportMap qui exploite les import maps pour améliorer les taux de cache des chunks, l'intégration avec Vite Task pour du cache de build sans configuration, le support des dépendances de plugin lightningcss, et un breaking rename qui déplace toutes les options `server.hmr` vers `server.ws`.

Commentaires

Connexion Connectez-vous pour participer à la conversation.

Pas encore de commentaires. Soyez le premier à partager vos pensées.