matar-gcc: migra-zig.sh + veredicto medido — las C-puras SON granjeables (~85%)
¿Las 47 compiler=gcc que harkaq nombró son factibles de migrar a zig, o hay que matracar? MEDIDO, no adivinado. migra-zig.sh: para cada receta, build con zig-cc + SMOKE-TEST del binario — porque el motivo del gcc era segfault en RUNTIME, no fallo de build; un artefacto que sella pero segfaultea es peor que gcc. Idempotente, acumula por lotes (probar 47 no cabe en un timeout). Muestra de 13 C-puras: 11 MIGRAN (bzip2 expat json-c gzip htop less libpng libyaml zstd libffi xz), 2 MATRACA (pcre2: linker version script que zig ld no soporta; file: subdir magic). ≈85% yield. VEREDICTO: es GRANJEADA para las ~36 C-puras. El compiler=gcc era deuda histórica — marcadas con zig 0.13/0.16 (que segfaultaban C clásicos), zig mejoró, el gcc quedó por inercia. ~85% migran solas; el residuo (~15%) es matraca individual por causas concretas del build-system. Las 11 Rust con sys-crate C son otra evaluación (gcc para el C embebido de libgit2-sys, no el Rust) — se deja para después. Rollout = decisión del usuario (re-hashea recetas del índice firmado 748). Correr migra-zig.sh sobre las 47 en la granja VPS da la lista final; promover las migrables re-firma el índice. Reporte: tandas/needs-review-harkaq/migracion-zig.md Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# Migración compiler=gcc → zig-cc (matar-gcc): ¿granjeada o matraca?
|
||||
|
||||
**Medido, no adivinado** (`scripts/farm/migra-zig.sh`: build con zig + smoke-test del binario,
|
||||
porque el motivo del gcc era segfault en RUNTIME). Muestra de 13 C-puras:
|
||||
|
||||
- **MIGRABLE (11/13 ≈ 85%)**: bzip2, expat, json-c, gzip, htop, less, libpng, libyaml, zstd,
|
||||
libffi, xz. Construyen con zig y —las que tienen binario— corren limpio. El `compiler=gcc` era
|
||||
**deuda histórica**: se marcaron con zig 0.13/0.16 (que segfaultaban C clásicos); zig mejoró y
|
||||
el gcc quedó por inercia.
|
||||
- **MATRACA (2/13)**: pcre2 (usa un *linker version script* que zig ld no soporta), file (falla en
|
||||
el subdir `magic`). Razones específicas de build-system, una por una.
|
||||
|
||||
## Veredicto
|
||||
|
||||
**Es granjeada, no matraca** — para las ~36 C-puras. ~85% migran solas cambiando `compiler` y
|
||||
promoviendo las que pasan+corren; el residuo (~15%) es matraca individual, poco y por causas
|
||||
concretas. El método está en `migra-zig.sh` (idempotente, acumula por lotes).
|
||||
|
||||
Las **11 Rust con sys-crate C** (delta, gitui, helix, …) son otra evaluación: ahí el gcc compila
|
||||
el C embebido de `libgit2-sys`/etc, no el Rust. Migrar eso a zig es más arriesgado y lento; se
|
||||
deja para después.
|
||||
|
||||
## Rollout (decisión de rollout, no técnica)
|
||||
|
||||
Cambiar `compiler=gcc→zig-cc` re-hashea la receta y sus consumidores, y varias están en el índice
|
||||
firmado (748). Correr `migra-zig.sh` sobre las 47 (mejor en la granja VPS, paralela) produce la
|
||||
lista final migrable/matraca; promover las migrables es el rollout que re-firma el índice.
|
||||
Reference in New Issue
Block a user