b3:46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834 Construida con flock -o en dev.gioser.net (el LXC prestado, coste 0). El artefacto trae dos ficheros: usr/bin/simi y su .hammer/recipe.toml. Medido sobre el ARTEFACTO, no sobre el build del hub: - ELF x86-64 estático, stripped, 498.736 bytes - scripts/static-audit.sh simi: «estáticos de verdad: 1 · MIENTEN: 0», o sea que el link=static no es una declaración sino un hecho (ese guardián existe porque libtool lo ignora en silencio en otras recetas) - banco diferencial, 159 casos contra el ash de busybox: 0 divergencias (bash: 8, brush: 35) - latencia 468 us contra 449 us del ash: 1,04x. brush: 1569 us, 3,5x Y la lección que vale más que el número: el build NATIVO del hub (glibc, dinámico) daba 865 us, 1,4x el ash. El estático musl baja a 1,04x. Medir el binario que VIAJA, no el que se compila a mano — la diferencia fue del 35 % y habría quedado escrita como si fuera del shell. Sigue sin estar en ningún perfil de targets.toml a propósito: declararla es meterla en ATTEST_PATHS y eso es frente C, su propia unidad de trabajo.
46 lines
2.5 KiB
TOML
46 lines
2.5 KiB
TOML
# simi — el `/bin/sh` del producto. Código takana-PROPIO, no una adopción.
|
||
#
|
||
# Mismo patrón de receta que netup/hammerd/arje-zero: construye un crate del workspace a un commit
|
||
# fijado, deps vendoreadas para build hermético `--offline`, link estático con zig cc. Sólo depende
|
||
# de libc ⇒ vendor mínimo.
|
||
#
|
||
# Por qué propio y no adoptado (ver `docs/plan-botar-busybox.md`): el único candidato Rust maduro es
|
||
# brush, y se midió — 6,9 MB contra 1,17 del busybox entero, 4,1× la latencia de arranque, y dos
|
||
# divergencias POSIX medidas (reubeno/brush#1394 y #1396, las dos reportadas por nosotros). simi son
|
||
# 4448 líneas con CERO divergencias contra el ash de busybox en los 159 casos del banco diferencial.
|
||
#
|
||
# SELLADA en el worker el 2026-09-21: `b3:46ff6fcf67bd23dece4d130c92855908520200f88ca85981317f81fcc56bb834`
|
||
# ELF x86-64 **estático** (verificado por `scripts/static-audit.sh simi`: «estáticos de verdad: 1,
|
||
# MIENTEN: 0»), stripped, **498 736 bytes**. Contra el artefacto sellado, no contra el build del hub:
|
||
# · banco diferencial, 159 casos vs el ash de busybox 1.36.1 → **0 divergencias** (bash: 8, brush: 35)
|
||
# · latencia de arranque **468 µs contra 449 µs del ash — 1,04×** (brush: 1569 µs, 3,5×)
|
||
#
|
||
# ⚠ Todavía NO está en ningún perfil de `docs/state/targets.toml`, y es a propósito: declararla es
|
||
# meterla en la raíz de confianza del arranque (frente C) y eso es su propia unidad de trabajo.
|
||
|
||
name = "simi"
|
||
version = "0.0.1"
|
||
license = "MIT"
|
||
|
||
[source]
|
||
# El propio takana. El commit es el identificador inmutable; subirlo cuando simi avance.
|
||
repo = "https://git.gioser.net/sergio/takana.git"
|
||
commit = "6809ef4be28f606aae856890a74667187ff75b05"
|
||
|
||
[build]
|
||
compiler = "zig-cc"
|
||
target = "x86_64-linux-musl"
|
||
link = "static"
|
||
|
||
# Split de la info de depuración, igual que hammerd. Entra en `hash_inputs`.
|
||
strip_debug = true
|
||
# Sólo el binario `simi` del workspace.
|
||
flags = ["-p", "simi"]
|
||
|
||
# Sin `[build.phases]`: igual que hammerd y netup, el BuildSys::Cargo del lab instala el binario del
|
||
# crate. **El symlink `sh` NO lo pone esta receta**, y eso es a propósito: quién gana como `/bin/sh`
|
||
# lo decide el ensamblado del producto (`USERLAND_COMPONENTS` en `crates/takana-bootstrap/src/lib.rs`,
|
||
# que hidrata el userland Rust DESPUÉS de busybox para que ensombrezca sus applets, y `lib.rs:676`,
|
||
# que retira el homónimo de los otros directorios). Ese cableado es frente C y es su propia unidad de
|
||
# trabajo: mete a simi en la raíz de confianza del arranque, y eso no se hace de paso.
|