# puriy-costura-torrent — el brazo LARGO de la costura (SDD 26 §6.9): el daemon de torrent. # # ══ POR QUÉ ES UN BINARIO APARTE Y NO UN VERBO DENTRO DEL HOST ════════════════════════════════ # Dos razones, y la primera decide: **una descarga tiene que sobrevivir al navegador**, y Gecko # lanza un host de native messaging POR PUERTO y lo mata cuando el puerto se cierra (medido el # 2026-09-10). Un cliente BitTorrent dentro de `puriy-costura` dejaría de bajar al cerrar la # pestaña. La segunda es el precio: librqbit + tokio + rustls son 226 crates, y ese host —952 K, # compartido por las extensiones del navegador— pasaría a ~20 MB y cada iteración a un cuarto de # hora. # # ⚠ Que esa pila COMPILA para musl con zig-cc se midió antes de decidir nada, con una receta # desechable: 226 crates y sella. Era una incógnita real —ninguna receta de tawasuyu del corpus # había construido tokio+rustls; las que hay dicen «deps livianas (sin tokio/libp2p/axum)»— así que # la decisión no fue «no se puede», fue «no ahí». # # ══ PEREZOSO: ESTO NO ES UN SERVICIO ══════════════════════════════════════════════════════════ # El artefacto es un binario y nada más: NO se declara ningún `.service`, ni nada que corra al # iniciar sesión. Lo levanta su propio cliente la primera vez que hay un `magnet:` que tomar, y se # va solo cuando no queda nada bajando. Un daemon que arranca con la sesión es un daemon que nadie # pidió, y en una distro se nota. # # ══ EL COMMIT PINEADO ═════════════════════════════════════════════════════════════════════════ # `3f69aab2` = el crate + el `Cargo.lock` cerrado (generado en un árbol LIMPIO del commit, que es # la única forma de que describa `main` y no el árbol compartido de las sesiones). name = "puriy-costura-torrent" version = "0.1.0" license = "MIT OR Apache-2.0" [source] repo = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git" commit = "3bd1440dcb96cfac085cdc669f1cd9c65b5142e5" # Obligatorio para cualquier receta desde este monorepo: tawasuyu commitea su propio `vendor/` con # un `smithay` parcheado por RUTA, y el `cargo vendor` de takana convertiría ese directorio en uno # de reemplazo de fuente, donde cada crate tiene que traer `.cargo-checksum.json` — que ese patch # nunca tuvo. El síntoma no menciona nada de esto (ver `puriy-costura.toml`). cargo_vendor_dir = ".hammer-cargo-vendor" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # Estático: lo lanza el navegador (a través del host) y no puede depender de encontrar un loader. link = "static" # `--bin` además de `-p` porque el crate tiene lib + bin y `cargo rustc` exige un target único. flags = ["-p", "puriy-costura-torrent", "--bin", "puriy-costura-torrent"]