Nondeterministic codegen: Next.js app-page-turbo.runtime.prod.js and server.js objects differ between identical compiles
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, rust, typescript
- Ambito
- build-system, compilers, performance
Direzione di ricerca
Start with the cpar lane’s full.sh setup and reproduce by compiling the Next.js standalone server twice with PERRY_NO_AUTO_OPTIMIZE=1, then compare per-module objects. Trace id or symbol-suffix assignment during lowering or codegen for app-page-turbo.runtime.prod.js and server.js; the issue does not name the responsible source file or test location. Done means identical inputs produce byte-identical objects across runs and a fixture test verifies this.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found by the cpar lane (compile parallelism) while checking byte-identity.
Compiling the same Next.js standalone input three times on the same base (b3fed79c8a lineage, before the scheduler change) gives different module objects for app-page-turbo.runtime.prod.js and server.js. Every other module (762 of 764) is byte-identical across runs. The diff shows wrapper and object-method numbering that changes between runs. That points to iteration over an unordered container (e.g. a HashMap/HashSet) when ids or symbol suffixes are assigned during lowering or codegen for those modules.
Why it matters: object caching and A/B measurement both assume that the same input gives the same bytes.
Repro: compile the Next standalone server (env as in the nextrun lane's full.sh) twice with PERRY_NO_AUTO_OPTIMIZE=1, then md5 the per-module objects. Fix: give the id/suffix assignment a deterministic order (source order, or a sort by a stable key), then add a test that compiles a fixture twice and compares the objects.
- Lingua principale
- Rust
- Stelle
- 4.9k
- Fork
- 166
- Merge medio
- 2h 19m
- PR unite (30g)
- 914
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PerryTS/perry
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Implement Iterator.zip and Iterator.zipKeyedForse già presa @TheHypnoo l’ha presa oggi. Apertaenhancement
PerryTS/perry#13497 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Gap suite on macOS arm64: ~155 environment/load failures vs the snapshotForse già presa @TheHypnoo l’ha presa oggi. Apertatooling
PerryTS/perry#13496 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
gc_runtime_root_holders.py fails on main: PASS1_MARKED and INTERN_TABLE pins need re-auditForse già presa @TheHypnoo l’ha presa oggi. Apertatooling
PerryTS/perry#13495 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
check_file_size.sh fails on main: gc/types.rs is 2003 linesForse già presa @TheHypnoo l’ha presa oggi. Apertatooling
PerryTS/perry#13494 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di PerryTS/perry
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hurttlocker/o8#5112 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
memory_patch_page drops the `#` of headings like `## Notes on C#`Forse già presa @viniciusdsandrade l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
akitaonrails/ai-memory#1859 ·
I maintainer di solito rispondono entro 1 giorno