nodejs y firefox: strip_debug — medido, no supuesto

El nodejs que selló en el LXC sin strip pesa 984 MB, de los cuales .debug_info son
497 MB y .debug_line otros 43: MÁS DE LA MITAD del artefacto es información de
depuración, para una herramienta que nadie va a depurar y que ni siquiera se
publica.

Se aplica también a firefox ANTES de construirlo, que es donde importa: Firefox es
varias veces V8 y sin strip su artefacto entraría en varios GB. El store no es
sólo disco — se sincroniza hub↔worker y se respalda.

Es el hallazgo del SDD 23: el 79% del contenido binario del store era .debug_*, y
quitarlo hace que artefactos que no reproducían PASEN a reproducir, porque lo que
difería eran las rutas del árbol de build embebidas en esas secciones.

El campo entra en hash_inputs a propósito (cambia el contenido) y usa zig objcopy,
que siempre está en el sandbox ⇒ no agrega dep de build. Node se reconstruye.
This commit is contained in:
Sergio
2026-09-04 21:24:47 +00:00
parent 428be5e8d1
commit 90364fabbf
2 changed files with 18 additions and 0 deletions
+13
View File
@@ -80,6 +80,19 @@ compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
# ══ `strip_debug`: SIN ESTO EL ARTEFACTO SERÍA INMANEJABLE ═════════════════════════════════════
# Medido en el `nodejs` que acaba de sellar sin strip: su binario pesa **984 MB, de los cuales
# `.debug_info` son 497 MB y `.debug_line` otros 43** — más de la mitad del artefacto es información
# de depuración. Firefox es varias veces V8, así que sin strip su artefacto entraría en varios GB, y
# el store no es sólo disco: se sincroniza hub↔worker y se respalda.
#
# Es además el hallazgo del SDD 23: el 79% del contenido binario del store era `.debug_*`, y quitarlo
# hace que artefactos que no reproducían PASEN a reproducir, porque lo que difería eran las rutas del
# árbol de build embebidas en esas secciones.
#
# Entra en `hash_inputs` A PROPÓSITO (cambia el contenido del artefacto), y usa `zig objcopy`, que
# siempre está en el sandbox ⇒ no agrega una dep de build.
strip_debug = true
[build.phases]
configure = '''
+5
View File
@@ -35,6 +35,11 @@ compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
# `strip_debug`: la primera vuelta selló SIN esto y el binario salió de **984 MB, con `.debug_info`
# de 497 MB y `.debug_line` de 43** — más de la mitad del artefacto era información de depuración,
# para una herramienta que nadie va a depurar. Entra en `hash_inputs` a propósito (cambia el
# contenido) y usa `zig objcopy`, que ya está en el sandbox.
strip_debug = true
[build.phases]
# ⚠ `SIMDJSON_IMPLEMENTATION_ICELAKE=0` — el simdjson que Node bundlea trae un kernel AVX-512 y