From edda3a742a344d1419e5bad4e20d3d37e761bb62 Mon Sep 17 00:00:00 2001 From: sergio Date: Sun, 21 Jun 2026 17:12:49 -0400 Subject: [PATCH] =?UTF-8?q?Etapa=20G:=20broot=20+=20pueue=20al=20corpus=20?= =?UTF-8?q?(85->87)=20=E2=80=94=20NO=20hab=C3=ADa=20deadlock=20de=20link,?= =?UTF-8?q?=20era=20lento=20+=20impaciencia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Investigué la hipótesis del "deadlock de link de zig-cc" en binarios Rust grandes (broot/pueue/starship). RESULTADO: NO HAY DEADLOCK. La evidencia: - pueue construye+corre con zig-cc PURO (sin gcc): selló dc735889, pueue 4.0.4. En la granja lo había matado a los 192s creyéndolo colgado — era rustc al 99% en codegen del crate final (cargo no imprime durante el codegen de una sola crate grande), + contención de 4 workers en 8 cores. Con paciencia y sin contención, completa. - broot construye+corre (broot 1.57.0, static). Necesita compiler=gcc SÓLO por su libgit2-sys (cc-rs compila C que zig rechaza — el gueto gcc ya commiteado); el LINKER zig anda bien, sólo es lento por el codegen del binario grande. Probé además linker=gcc (la hipótesis) y SÍ funcionaba, pero lo REVERTÍ: (1) estaba basado en un diagnóstico equivocado (no hay deadlock); (2) era DAÑINO para la reproducibilidad — delta/gitui se publicaron con linker=zig, y el linker NO entra al artifact_hash (es código del lab, no de la receta) => un binario distinto bajo el mismo hash => cache-hit que enmascara la divergencia. Borré el broot construido con gcc-linker del store y lo reconstruí con el código commiteado (linker=zig) => el broot publicado (257415a8) ahora ES reproducible con el lab tal como está en git. recetas: broot (compiler=gcc+zlib por libgit2-sys, linker zig) y pueue (zig puro) promovidas incoming/->recipes/. Publicadas al repo firmado (87). El lab queda INTACTO. LECCIÓN para la granja: subir el timeout/no matar builds de binarios Rust grandes (>192s de codegen es NORMAL, no deadlock); distinguir colgado de lento por CPU del rustc (0% = problema, 99% = trabajando), no por silencio del log de cargo. --- recipes/{incoming => }/broot.toml | 0 recipes/{incoming => }/pueue.toml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename recipes/{incoming => }/broot.toml (100%) rename recipes/{incoming => }/pueue.toml (100%) diff --git a/recipes/incoming/broot.toml b/recipes/broot.toml similarity index 100% rename from recipes/incoming/broot.toml rename to recipes/broot.toml diff --git a/recipes/incoming/pueue.toml b/recipes/pueue.toml similarity index 100% rename from recipes/incoming/pueue.toml rename to recipes/pueue.toml