Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

scopeRouteVariants repeats shared-input work for every route in compose

Abierto
#3,698 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@chubes4 ya está trabajando en esto.

Desde el 29/10/2026.

  • #3704 de @chubes4 — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
php
Área
performance

Línea de trabajo

Start by reading CssStylesheetTransformer::scopeRouteVariants, RouteSelectorMatchIndex::inertOutside, and the cited scopeRouteUnit and markerCarriers paths; compare their work across routes during compose. Profile the 112-page import described in the issue and check output against the current byte-identical result. Done means shared-input work runs once, repeated element/arm matching is avoided, and output remains byte-identical.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Problem

In compose, CssStylesheetTransformer::scopeRouteVariants costs 60 s of a 310 s compose on a 112-page real import (BE trunk after #3675/#3676). Profile, by child:

  • RouteSelectorMatchIndex::inertOutside → CssSelectorMatcher::matches: 19 s. The same selector arm is matched against each route DOM in turn, through candidate lists rebuilt per (arm, owner).
  • scopeRouteUnit → scopeRouteArms → CssSelectorTokenizer::tokenize / pseudoElementOffset / splitSelectorList: ~8 s. Identical shared units are tokenized again for each route's probe validation.
  • markerCarriers: 4 s. isWellFormedStylesheet over shared plus page sheets for each route: ~3 s. The shared sheets are re-checked for every route.

This work cannot move to page workers: base selection and attribute-marker reconciliation span all routes (#2089).

Expected

Inside compose, work that depends only on the shared input is done once rather than once per route: shared-sheet well-formedness, unit keys, probe results and parsed arms. inertOutside answers "does arm X match any route outside the set" without re-matching the same element/arm pairs per owner. Output stays byte-identical.

Lenguaje dominante
PHP
Estrellas
22
Forks
3
Merge medio
6 h 51 min
PR fusionados (30 d)
759

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Automattic/blocks-engine

Todos los issues de Automattic/blocks-engine

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.