From 2d8514555ca600b77cc12550507c2ec92ae48395 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 16 Jul 2026 20:03:35 -0400 Subject: [PATCH] =?UTF-8?q?matar-gcc:=20riesgo=20GUI=20VERIFICADO=20?= =?UTF-8?q?=E2=80=94=20el=20ABI=20de=20las=20libs=20migradas=20es=20id?= =?UTF-8?q?=C3=A9ntico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Debí evaluar esto ANTES de migrar, no después: las 29 tienen 36 consumidores, incl. toda la cadena GUI (cairo/gtk4/pango/harfbuzz/fontconfig/libadwaita) + mesa/mirada. 6 migradas son deps de ese stack, que por regla no se rebuildea en el laptop. No se pudo construir la GUI completa en ninguna máquina (laptop: python3 no construye — gotcha conocido, verificado que es PREEXISTENTE revirtiendo mis deps; worker golden: busybox no construye — store parcial). Así que se verificó lo que decide el link: el ABI. freetype 90 · expat 12 · libpng/libpng16 385 · libffi 68 símbolos globales → IDÉNTICOS entre gcc y zig ⇒ la GUI linkea igual. Dos falsos positivos cazados al medir: . comparaba libpng.a contra libpng16.a (libs distintas), y cuenta símbolos INTERNOS de los .o que difieren entre compiladores sin tocar el ABI (294 'diferencias' espurias). Lo correcto: mismo fichero + --extern-only. Co-Authored-By: Claude Opus 4.8 --- tandas/needs-review-harkaq/migracion-zig.md | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tandas/needs-review-harkaq/migracion-zig.md b/tandas/needs-review-harkaq/migracion-zig.md index 3bb02a44..d124464d 100644 --- a/tandas/needs-review-harkaq/migracion-zig.md +++ b/tandas/needs-review-harkaq/migracion-zig.md @@ -31,3 +31,27 @@ Los `compiler=gcc` bajaron de 47 a 18. matar-gcc pasó de invisible a **medido, mayoría, y con el residuo justificado**. **Rollout: las 29 re-hashean (índice firmado 748) ⇒ re-firma en el próximo packaging.** + +## Riesgo sobre la cadena GUI: VERIFICADO (ABI idéntico) — 2026-07-16 + +Las 29 migradas tienen **36 consumidores**, incluidos cairo, gtk4, pango, harfbuzz, fontconfig, +libadwaita, mesa y mirada. 6 de ellas (expat, freetype, libpng, libffi, pcre2, zstd) son deps de +ese stack, y la regla del proyecto prohíbe rebuildear la GUI en el laptop. + +**No se pudo construir la cadena GUI completa en ninguna máquina** (el laptop no construye +`python3` — gotcha conocido; el worker golden no construye `busybox` — store parcial). Así que se +verificó lo que de verdad decide el link: **el ABI de las libs migradas**. + +| lib | símbolos globales | gcc vs zig | +|---|---|---| +| freetype | 90 | idénticos | +| expat | 12 | idénticos | +| libpng / libpng16 | 385 | idénticos | +| libffi | 68 | idénticos | + +⇒ **La GUI linkea igual.** El cambio gcc→zig no altera la superficie que consumen sus consumidores. + +**Ojo al comparar** (dos falsos positivos en el intento): `find | head -1` puede tomar libs +distintas de cada artefacto (`libpng.a` vs `libpng16.a`), y `nm --defined-only` incluye símbolos +**internos** de los `.o` — que difieren entre compiladores sin tocar el ABI (294 "diferencias" +espurias en libpng). Comparar **el mismo fichero** y con **`--extern-only`**.