Mise à jour du plan
Approfondir un sujet à travers tous les passes du compilateur et mettre à jour un document de plan.
Arguments :
- $ARGUMENTS :
<plan-doc-path> <topic/question>- Exemple :
compiler/docs/rust-port/rust-port-0001-babel-ast.md stratégie de résolution de portée - Exemple :
compiler/docs/rust-port/rust-port-architecture.md modèles de gestion d'erreur
- Exemple :
Instructions
Étape 1 : Lire le contexte
Lire ces fichiers pour comprendre l'état actuel :
- Le document de plan spécifié dans $ARGUMENTS
compiler/docs/rust-port/rust-port-architecture.md(guide d'architecture et conventions de port)compiler/packages/babel-plugin-react-compiler/docs/passes/README.md(vue d'ensemble des passes)
Étape 2 : Lancer des agents d'analyse en parallèle
Lancer 8 appels d'agents parallèles en utilisant l'agent analyze-pass-impact. Chaque agent analyse un groupe de phases. Passer à chaque agent le sujet de $ARGUMENTS et la liste des fichiers de documentation de pass pour sa phase.
Groupes de phases et leurs documentations de pass :
-
Lowering & SSA (passes 01-03) :
01-lower.md,02-enterSSA.md,03-eliminateRedundantPhi.md -
Optimization & Types (passes 04-06) :
04-constantPropagation.md,05-deadCodeElimination.md,06-inferTypes.md -
Function & Effect Analysis (passes 07-09) :
07-analyseFunctions.md,08-inferMutationAliasingEffects.md,09-inferMutationAliasingRanges.md -
Reactivity & Scope Variables (passes 10-14) :
10-inferReactivePlaces.md,11-inferReactiveScopeVariables.md,12-rewriteInstructionKindsBasedOnReassignment.md,13-alignMethodCallScopes.md,14-alignObjectMethodScopes.md -
Scope Alignment & Terminals (passes 15-20) :
15-alignReactiveScopesToBlockScopesHIR.md,16-mergeOverlappingReactiveScopesHIR.md,17-buildReactiveScopeTerminalsHIR.md,18-flattenReactiveLoopsHIR.md,19-flattenScopesWithHooksOrUseHIR.md,20-propagateScopeDependenciesHIR.md -
Reactive Function & Transforms (passes 21-30) :
21-buildReactiveFunction.md,22-pruneUnusedLabels.md,23-pruneNonEscapingScopes.md,24-pruneNonReactiveDependencies.md,25-pruneUnusedScopes.md,26-mergeReactiveScopesThatInvalidateTogether.md,27-pruneAlwaysInvalidatingScopes.md,28-propagateEarlyReturns.md,29-promoteUsedTemporaries.md,30-renameVariables.md -
Codegen & Optimization (passes 31, 34-38) :
31-codegenReactiveFunction.md,34-optimizePropsMethodCalls.md,35-optimizeForSSR.md,36-outlineJSX.md,37-outlineFunctions.md,38-memoizeFbtAndMacroOperandsInSameScope.md -
Validation Passes (passes 39-55) :
39-validateContextVariableLValues.md,40-validateUseMemo.md,41-validateHooksUsage.md,42-validateNoCapitalizedCalls.md,43-validateLocalsNotReassignedAfterRender.md,44-validateNoSetStateInRender.md,45-validateNoDerivedComputationsInEffects.md,46-validateNoSetStateInEffects.md,47-validateNoJSXInTryStatement.md,48-validateNoImpureValuesInRender.md,49-validateNoRefAccessInRender.md,50-validateNoFreezingKnownMutableFunctions.md,51-validateExhaustiveDependencies.md,53-validatePreservedManualMemoization.md,54-validateStaticComponents.md,55-validateSourceLocations.md
Le prompt de chaque agent doit être :
Analyser comment le sujet « <topic> » affecte les passes du compilateur suivantes.
Lire la documentation de chaque pass dans compiler/packages/babel-plugin-react-compiler/docs/passes/ et son implémentation source. Lire également compiler/docs/rust-port/rust-port-architecture.md pour les conventions de port.
Documentations de pass à analyser : <liste des noms de fichiers de doc de pass>
Pour chaque pass, signaler :
- Nom et objectif du pass (1 ligne)
- Impact : « none », « minor » (changements mécaniques uniquement), « moderate » (changements logiques), ou « significant » (redesign nécessaire)
- Si l'impact n'est pas « none » : détails spécifiques des changements nécessaires
- Emplacements clés du code dans l'implémentation (références fichier:ligne)
Soyez thorough mais concis. Concentrez-vous sur les impacts concrets, pas sur la spéculation.
Étape 3 : Consolider et mettre à jour
Après que tous les agents se terminent :
- Fusionner leurs conclusions dans une analyse cohérente
- Grouper par niveau d'impact (significant > moderate > minor > none)
- Mettre à jour le document de plan. L'état final doit refléter les dernières conclusions et la compréhension actuelle :
- Mettre à jour le document de plan sur place pour supprimer le contenu obsolète et décrire la dernière compréhension.
- CONSERVER tout contenu existant qui reste pertinent
- SUPPRIMER le contenu obsolète ou devenu non pertinent
- Tableau récapitulatif de l'impact par pass (mis à jour sur place, c.-à-d. mettre à jour chaque section en fonction des nouvelles conclusions)
- Notes détaillées pour les passes avec un impact modéré ou plus
- Section « Statut actuel » ou « Travail restant » mise à jour si applicable
Étape 4 : Afficher le résumé
Afficher à l'utilisateur un bref résumé des conclusions : combien de passes sont affectées à chaque niveau, et les principaux constats.