Sobre el proyecto

running-process es un runtime de procesos del sistema operativo multiplataforma escrito en Rust con enlaces Python de primera clase. Proporciona una abstracción unificada sobre la creación de procesos, pipes, PTYs, árboles de procesos, contención, observación, daemons independientes y servicios de larga duración gestionados por broker. La biblioteca aborda la naturaleza no portátil del comportamiento de los procesos del sistema operativo entre plataformas: los Job Objects y ConPTY de Windows, los grupos de procesos y señales de Unix, el trazado ptrace de Linux, las named pipes, la recolección de hijos y el control de terminal tienen reglas diferentes de duración y fallo. running-process encapsula todo esto en un núcleo Rust expuesto tanto mediante APIs de Rust como mediante superficies Pythonic síncronas/asyncio. Las capacidades clave incluyen: - Comandos y flujos: captura concurrente de stdout/stderr, esperas acotadas, salidas tipadas, manejo de texto y bytes. - Terminales interactivas: PTYs nativos en Windows (ConPTY), Linux y macOS con reglas expect, retransmisión de entrada, redimensionado, interrupción y detección de inactividad. - Ciclo de vida del árbol de procesos: contención, terminación/muerte recursiva, limpieza de descendientes, etiquetado de originadores y seguimiento consciente de zombis. - Observación: eventos de ciclo de vida, vigilancia de procesos, trazado exacto de árboles en Linux mediante ptrace, capturas de pila y registros explícitos de pérdidas. - Ejecución duradera: lanzamiento independiente, ciclo de vida de daemon, negociación con broker, retransmisión de sesión, sondas de salud y diagnósticos de administración. - Herramientas para operadores: CLI de supervisión, manifiestos de limpieza, detección de capacidades de terminal y panel de procesos. El paquete Python no es una reimplementación separada: sus enlaces llaman al mismo motor de procesos Rust que usan los consumidores nativos. APIs básicas como subprocess_run, RunningProcess, InteractiveProcess y ContainedProcessGroup funcionan sin ninguna configuración de broker o daemon. El framework daemon/broker está disponible para la gestión de procesos supervisada y entre sesiones. En Windows 10, la biblioteca obtiene y almacena en caché de forma transparente un sidecar ConPTY para un comportamiento de terminal moderno, con verificación SHA-256 y fallback offline a kernel32. La detección de capacidades de gráficos de terminal (Sixel, Kitty, iTerm2) está disponible para llamadores de Rust. Un wrapper CLI proporciona ejecución de comandos supervisada con tiempos de espera por inactividad y de reloj de pared, terminación de árboles y detección de fugas. Una utilidad de limpieza lee los manifiestos de caché del broker para podar raíces de daemons inactivos. La biblioteca está probada en Soldr, que la usa como su frontera de creación de procesos y base de daemon/broker. Se distribuye en PyPI y Crates.io con CI que cubre Linux, macOS y Windows.