diff --git a/recipes/curl.toml b/recipes/curl.toml index 8e97e661..83c271fa 100644 --- a/recipes/curl.toml +++ b/recipes/curl.toml @@ -1,6 +1,6 @@ # curl 8.20.0 → libcurl (C). Lib FUNDACIONAL: dep del crate `curl`/curl-sys (hurl y muchos tools), # y de cola C de red. De-Alpinizada (Etapa G): -# - compiler=gcc, configure-split explícito, --disable-shared --enable-static. +# - compiler=zig-cc (migrado de gcc, matar-gcc 2026-07-16), configure-split explícito, --disable-shared --enable-static. # - TLS vía openssl del corpus (--with-openssl); compresión vía zlib del corpus. # - drop de deps ausentes: --disable-ares, --without-{libidn2,nghttp2,libpsl,libssh2}. HTTP/HTTPS ok. name = "curl" @@ -11,7 +11,7 @@ tarball = "https://curl.se/download/curl-8.20.0.tar.xz" sha256 = "63fe2dc148ba0ceae89922ef838f7e5c946272c2e78b7c59fab4b79d3ce2b896" [build] -compiler = "gcc" +compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = [] diff --git a/recipes/libevent.toml b/recipes/libevent.toml index c4bdb605..1e9872d9 100644 --- a/recipes/libevent.toml +++ b/recipes/libevent.toml @@ -1,4 +1,4 @@ -# libevent 2.1.12 — lib C base (de-Alpinizada, Etapa G). compiler=gcc, configure-split, estático. +# libevent 2.1.12 — lib C base (de-Alpinizada, Etapa G). compiler=zig-cc (migrado de gcc, matar-gcc 2026-07-16), configure-split, estático. name = "libevent" version = "2.1.12" @@ -7,7 +7,7 @@ tarball = "https://github.com/libevent/libevent/releases/download/release-2.1.12 sha256 = "92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb" [build] -compiler = "gcc" +compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = [] diff --git a/tandas/needs-review-harkaq/migracion-zig.md b/tandas/needs-review-harkaq/migracion-zig.md index 0618c9c5..40943b68 100644 --- a/tandas/needs-review-harkaq/migracion-zig.md +++ b/tandas/needs-review-harkaq/migracion-zig.md @@ -1,27 +1,31 @@ -# Migración compiler=gcc → zig-cc (matar-gcc): ¿granjeada o matraca? +# Migración compiler=gcc → zig-cc (matar-gcc) — BALANCE (2026-07-16) -**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: +harkaq nombró 47 recetas `compiler=gcc`. `migra-zig.sh` (build con zig + smoke-test del binario) +midió cuáles migran. Las C-puras (36) se verificaron en el laptop (store completo, fiable). -- **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. +## MIGRADAS a zig-cc (27 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 -## Veredicto +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. 27 dependencias menos del gcc de Alpine. -**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). +## MATRACA real (4 recetas) — razones específicas, una por una +- **libgcrypt, libsodium**: no construyen con zig. Crypto con assembly/detección de features que + zig maneja distinto. Matraca criptográfica. +- **file**: falla en el subdir `magic`. +- **linux-pam**: no construye con zig. -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. +## Sin confirmar (2) — construyen con zig pero el smoke-test no verifica el binario +- **libevdev, mtdev**: libs sin binario claro que correr. Probablemente migrables; verificar el + link en un consumidor antes de promover. -## Rollout (decisión de rollout, no técnica) +## Fuera de alcance (11 Rust con sys-crate C) +delta gitui helix xplr yazi zellij ouch hurl git-absorb cargo-audit cargo-cache — el gcc compila +el C embebido de libgit2-sys/etc, no el Rust. Otra evaluación (más arriesgada y lenta). -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. +## Balance +De 47: **27 migradas**, 4 matraca-C, 2 sin confirmar, 11 Rust diferidas, resto no medido. matar-gcc +pasó de "47 invisibles" (harkaq las reveló) a **27 cerradas + una cola nombrada y priorizada**. + +**Rollout: re-hashea las 27 (estaban en el índice firmado 748) ⇒ re-firma en el próximo packaging.**