1# Migración compiler=gcc → zig-cc (matar-gcc) — BALANCE FINAL (2026-07-16)
2
3harkaq nombró 47 recetas `compiler=gcc` (invisibles hasta que aprendió a leer el `compiler=`).
4`migra-zig.sh` (build con zig + smoke-test) midió cuáles migran, verificadas en el laptop.
5
6## MIGRADAS a zig-cc — 29 recetas C ✅
7bzip2 expat json-c gzip htop less libpng libyaml zstd libffi xz freetype jq libassuan libgpg-error
8libssh2 libuv libxml2 nano pcre2 pigz socat tig tmux vim curl libevent libevdev mtdev
9
10**Deuda histórica**: marcadas con zig 0.13/0.16 (que segfaultaba C clásicos); zig mejoró, el gcc
11quedó por inercia. mtdev queda de-Alpinizado por entero (config.sub soberano + zig).
12
13## MATRACA DURA — 4 recetas, gcc JUSTIFICADO (zig genuinamente falla)
14Probadas y diagnosticadas; NO es inercia, zig no las soporta:
15- **file**: el `file` que zig compila SEGFAULTEA al generar `magic.mgc`. Persiste con `-O0`,
16 `-O1`, `-fno-strict-aliasing` ⇒ codegen profundo de zig, no optimización.
17- **linux-pam**: `configure: error: cannot run C compiled programs` — el binario de test de zig no
18 corre (mismo tipo de miscompile).
19- **libgcrypt, libsodium**: no construyen con zig. Assembly/detección de features criptográficas
20 que zig maneja distinto.
21
22Estas 4 se quedan en `compiler=gcc` con razón documentada. Son parte del "gueto gcc" legítimo.
23
24## DIFERIDAS — 11 Rust con sys-crate C
25cargo-audit broot cargo-cache delta git-absorb gitui helix hurl ouch xplr yazi zellij — el gcc
26compila el C embebido de libgit2-sys/etc, no el Rust. Otra evaluación.
27
28## Balance
29De 47: **29 migradas**, 4 matraca dura (gcc justificado), 11 Rust diferidas, 3 no medidas.
30Los `compiler=gcc` bajaron de 47 a 18. matar-gcc pasó de invisible a **medido, cerrado en su
31mayoría, y con el residuo justificado**.
32
33**Rollout: las 29 re-hashean (índice firmado 748) ⇒ re-firma en el próximo packaging.**
migracion-zig.md
Migración compiler=gcc → zig-cc (matar-gcc) — BALANCE FINAL (2026-07-16)
harkaq nombró 47 recetas compiler=gcc (invisibles hasta que aprendió a leer el compiler=).
migra-zig.sh (build con zig + smoke-test) midió cuáles migran, verificadas en el laptop.
MIGRADAS a zig-cc — 29 recetas C ✅
bzip2 expat json-c gzip htop less libpng libyaml zstd libffi xz freetype jq libassuan libgpg-error
libssh2 libuv libxml2 nano pcre2 pigz socat tig tmux vim curl libevent libevdev mtdev
Deuda histórica: marcadas con zig 0.13/0.16 (que segfaultaba C clásicos); zig mejoró, el gcc
quedó por inercia. mtdev queda de-Alpinizado por entero (config.sub soberano + zig).
MATRACA DURA — 4 recetas, gcc JUSTIFICADO (zig genuinamente falla)
Probadas y diagnosticadas; NO es inercia, zig no las soporta:
- file: el
file que zig compila SEGFAULTEA al generar magic.mgc. Persiste con -O0,
-O1, -fno-strict-aliasing ⇒ codegen profundo de zig, no optimización.
- linux-pam:
configure: error: cannot run C compiled programs — el binario de test de zig no
corre (mismo tipo de miscompile).
- libgcrypt, libsodium: no construyen con zig. Assembly/detección de features criptográficas
que zig maneja distinto.
Estas 4 se quedan en compiler=gcc con razón documentada. Son parte del "gueto gcc" legítimo.
DIFERIDAS — 11 Rust con sys-crate C
cargo-audit broot cargo-cache delta git-absorb gitui helix hurl ouch xplr yazi zellij — el gcc
compila el C embebido de libgit2-sys/etc, no el Rust. Otra evaluación.
Balance
De 47: 29 migradas, 4 matraca dura (gcc justificado), 11 Rust diferidas, 3 no medidas.
Los compiler=gcc bajaron de 47 a 18. matar-gcc pasó de invisible a medido, cerrado en su
mayoría, y con el residuo justificado.
Rollout: las 29 re-hashean (índice firmado 748) ⇒ re-firma en el próximo packaging.