//! # Utils: subprocess backend components.
//!
//! Low-level building blocks applied to child processes via `pre_exec` hooks.
//! Each module handles one isolation concern and follows the same conventions:
//!
//! - **Async-signal safety**: `pre_exec` closures capture only `Copy` types, call only raw syscalls
//! - **Declarative config struct** with `is_empty()` guard (zero overhead when unused)
//! - **Per-operation error logging** via [`log::pre_exec_log`] (no heap in the child)
//!
//! ## Modules
//!
//! | Module | Config | What it does |
//! |----------------|---------------------|--------------------------------------|
//! | [`cgroups`] | [`CgroupLimits`] | cgroup v2 limits (CPU, memory, PIDs) |
//! | [`limits`] | [`RlimitConfig`] | POSIX rlimits (nofile, fsize, core) |
//! | [`security`] | [`SecurityConfig`] | capability drop + `no_new_privs` |
//! | [`capability`] | [`LinuxCapability`] | capability enum with kernel values |
//! | [`log`] | — | async-signal-safe stderr logging |
pub use ;
pub use ;
pub use RlimitConfig;
pub use attach_rlimits;
pub use SecurityConfig;
pub use attach_security;
pub use LinuxCapability;
pub