feat(shuma-exec): spill con splice (copia cero) + limpieza de temporales

El volcado de la salida excedente ya no copia por espacio de usuario:
pasado el tope, el lector escribe la línea que cruzó + lo bufereado y
luego mueve el resto del pipe al archivo con splice(2) —kernel a
kernel, sin copia—. Se aplica a stdout (el contenido principal).

shuma-shell limpia sus archivos de volcado al cerrar la sesión
(Drop). Los spills llevan el pid en el nombre para no chocar entre
instancias.

shuma-exec: 11 tests verdes (el de spill ahora verifica el camino
splice).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 20:15:30 +00:00
parent b08d5cbe0a
commit 22a0ae8c58
4 changed files with 74 additions and 42 deletions
@@ -8,3 +8,5 @@ publish.workspace = true
description = "shuma — ejecutor de comandos del shell con salida en streaming: lanza un proceso y entrega stdout/stderr línea a línea por un canal. Agnóstico de UI."
[dependencies]
# `zerocopy` habilita `splice` — volcado pipe→archivo sin copia.
nix = { workspace = true, features = ["zerocopy"] }