- Spegnimento
- 6 settembre 2026 alle ore 15:07 UTC
- Autore
- Kamo
- Impegno
- b0e94d5
Un audit di tutte le diciotto scene ha trovato lo stesso difetto in dodici di loro, ed è la forma che degrada una scheda oltre un minuto o due e poi lo blocca nella spazzatura raccolta: `onResize` ricostruito l'intera banca sprite su ogni chiamata, anche se la sprite dipende solo da `size.dpr`. I negozi di supporto in tela vivono fuori dal JS heap e sono reclamati solo quando il loro wrapper è raccolto, quindi questo è vero churn — Halloween era 10,4 MB e 100 `createRadialGradient` chiamate per chiamata, Pasqua 706 KB attraverso 16 tele, Big Game 7.1 MB. Risolto in due posti, perché era due difetti separati. Il KIT, da cui proviene la maggior parte. `resize()` ora ritorna prima chiamando `onResize` quando larghezza, altezza e dpr sono tutti invariati. `resize` is collegato deliberatamente a BOTH un ResizeObserver sulla tela e il ridimensionamento della finestra evento, così ogni scena stava pagando per la sua banca di sprite due volte su un cambiamento reale, e pagare di nuovo per ogni no-op notifica. Quella era la cimice del kit, non la scene. LE SCENES, per quello che il kit non può rimuovere. Un cambiamento di altezza reale raggiunge ancora `onResize`, e su iOS la barra URL che ritrae durante una pergamena cambia il viewport altezza ripetutamente attraverso un solo gesto. Ogni scena ora chiave la sua rasterizzazione su quello che realmente dipende e lascia la larghezza / altezza metà corsa. Due scene già fatto questo e sono stati il modello che il resto ha seguito. Le chiavi non sono uniformi, deliberatamente. Tasti di Halloween su scala raster E nebbia conteggio band, perché il conteggio è una decisione di qualità che può muoversi senza scala. La sola guardia all-or-nothing di Cyber Lunedi divenne tre — sprites su dpr, la scansione sliver su dpr e altezza della banda, la scheda sul viewport — perché la sua bordo è il viewport e congelarlo su un cambiamento di altezza lo lascerebbe teso. Il Ringraziamento si è rivelato non avere affatto il difetto (le sue foglie sono ridisegnate Path2D riempie, non sprite, per motivi che la sua intestazione sostiene) ma stava ricostruendo la sua tavoli di colore incondizionatamente, e quelli sono chiave sulla tavolozza piuttosto che su dpr perché una stringa non è rasterizzata e la tavolozza è ciò che dipendono. E l'EGG-IDENTITY BUG, che era il risultato più serio L'identità delle uova è stata schiacciata dal rett misurato — `qx = tondo(x/8)`, `qy = tondo(y + scrollY)/4)` — sul presupposto documentato che la pagina di una sporgenza la posizione è stabile. Non è stabile su questo sito. globals.css guida `.reveal` con `animazione-timeline: vista()` e `reveal-up` interpola `translateY(28px)` a nulla; gli elementi propri del selettore dello scaffale sono quelli animati, alcuni nidi, così fino a 56px di viaggio composto. `getBoundingClientRect()` include un live trasformare e `utilizzareEsemplariShelves` esattamente mentre sono ancora in movimento. Contro un quantismo 4px che è quattordici identità per una carta come scorre in, nessuna delle quali corrisponde. L'elenco pinned a MAX EGGS, la sua specie ha eseguito ogni passaggio invece di mai, nulla è stato colto perché ogni record era sullo schermo, e le uova vicino a un applicando due regioni a 9 punti `ctx.clip()` per frame. Era anche l'esatta visuale fallimento il commento di progettazione del file dice che impedisce: il campo bolle. `Shelf` ha guadagnato un `id` stabile — una maniglia WeakMap-backed sull'elemento, costante mentre quell'elemento è nel documento e immune a qualsiasi trasformazione. Pasqua Le chiavi le uova. L'identità viene ora dall'elemento e dalla geometria dal vivo rect, che è la divisione che è stata destinata; `mint` anche rinfresca x/pageY, senza che un id stabile avrebbe congelato un uovo alla sua posizione di mezza-animazione, un bug il mandrino si era nascosto. tsc clean, tutte le 14 guardie verdi, 187 percorsi ancora prerendered.