rightkit-child-process 0.5.4

Ownership-safe child lifecycle, restart, and health primitives for Right Suite apps.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.98.0"
name = "rightkit-child-process"
version = "0.5.4"
build = false
include = [
    "src/**",
    "tests/**",
    "README.md",
    "CHANGELOG.md",
    "LICENSE-MIT",
    "LICENSE-APACHE",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Ownership-safe child lifecycle, restart, and health primitives for Right Suite apps."
readme = "README.md"
keywords = [
    "process",
    "supervisor",
    "lifecycle",
    "sidecar",
]
categories = ["os"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/bogusyogi/rightkit"

[package.metadata.rightkit]
continuous = false
continuous_reason = "thread-spawn: per-call pipe drain threads (capture.rs OutputCapture) and the macOS kqueue exit watcher (exit_watch.rs), each ending with its child or stream, plus the opt-in macOS parent-death watchdog process (process_unix.rs arm_parent_death_watch, one per tied child, exits with its child or its owner); power-assertion holder thread (power.rs, Windows only, one per live PowerAssertion, joined on drop); detached-child: spawning and owning children is this crate's purpose, every child is owned by an OwnedChild/job object and torn down with a bounded staged kill; task-spawn/runtime-builder: none, the optional tokio feature only awaits tokio::time::sleep inside terminate_tree; no listener, resident cache or model (reviewed 2026-10-16); event-loop: the macOS kqueue in src/exit_watch.rs is one descriptor per watched child, registered with a single EVFILT_PROC NOTE_EXIT event and read only with a bounded wait or a zero-timeout receipt, closed when the watch drops; no loop of its own; resident-static: OWNED in src/registry.rs is a Mutex<Vec<Entry>> of Weak references, one entry per live OwnedChild, removed by forget on drop and pruned of dead entries on every register and count, so its size is the number of children this process currently owns (reviewed 2026-10-17)"

[features]
tokio = ["dep:tokio"]

[lib]
name = "rightkit_child_process"
path = "src/lib.rs"

[[test]]
name = "adopted_identity"
path = "tests/adopted_identity.rs"

[[test]]
name = "api"
path = "tests/api.rs"

[[test]]
name = "drop_bounded"
path = "tests/drop_bounded.rs"

[[test]]
name = "env_policy"
path = "tests/env_policy.rs"

[[test]]
name = "exit_observation"
path = "tests/exit_observation.rs"

[[test]]
name = "handle_inheritance"
path = "tests/handle_inheritance.rs"

[[test]]
name = "inherited_terminal"
path = "tests/inherited_terminal.rs"

[[test]]
name = "membrane_process"
path = "tests/membrane_process.rs"

[[test]]
name = "native_capture"
path = "tests/native_capture.rs"

[[test]]
name = "output_capture"
path = "tests/output_capture.rs"

[[test]]
name = "owned_tree_control"
path = "tests/owned_tree_control.rs"

[[test]]
name = "package_metadata"
path = "tests/package_metadata.rs"

[[test]]
name = "parent_death"
path = "tests/parent_death.rs"

[[test]]
name = "restart_health"
path = "tests/restart_health.rs"

[[test]]
name = "reveal_scope"
path = "tests/reveal_scope.rs"

[[test]]
name = "streaming_capture"
path = "tests/streaming_capture.rs"

[[test]]
name = "supervision_primitives"
path = "tests/supervision_primitives.rs"

[[test]]
name = "sweep_matching"
path = "tests/sweep_matching.rs"

[[test]]
name = "tokio_support"
path = "tests/tokio_support.rs"

[[test]]
name = "tree_identity"
path = "tests/tree_identity.rs"

[[test]]
name = "unix_process_group"
path = "tests/unix_process_group.rs"

[[test]]
name = "windows_process_tree"
path = "tests/windows_process_tree.rs"

[dependencies.tokio]
version = "1"
features = [
    "process",
    "time",
]
optional = true
default-features = false

[dev-dependencies.tokio]
version = "1"
features = [
    "rt",
    "macros",
    "process",
    "time",
]

[dev-dependencies.trybuild]
version = "=1.0.116"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[target."cfg(windows)".dependencies.windows]
version = "0.62"
features = [
    "Wdk_System_SystemInformation",
    "Win32_Foundation",
    "Win32_Security",
    "Win32_System_Diagnostics_ToolHelp",
    "Win32_System_JobObjects",
    "Win32_System_Power",
    "Win32_System_ProcessStatus",
    "Win32_System_Threading",
    "Win32_System_WindowsProgramming",
]