Format: Keep a Changelog and Semantic Versioning with Cargo's pre-1.0 compatibility rules.
0.1.0 - 2026-08-03
Initial release.
- Reusable
Commandand borrowed per-spawn capabilities. - Transactional process creation with automatic rollback, built on private running/suspended typestates that make a mismatched internal transition unrepresentable.
- Explicit handle lists, high-level handle arguments and environment values,
alternate parents, ordered Jobs, typed mitigation policies, and ConPTY.
Pseudoconsole creation sets
STARTF_USESTDHANDLESwith all three standard handles null, matching Microsoft Terminal'sConptyConnection.cpp, so a hosted child cannot fall back to standard handles the parent redirected. - Owned standard streams, cached exit status, and concurrent output draining. Both reader threads are joined even when one reader fails or panics.
SuspendedChildtype-state transitions with pre-resume process and primary thread inspection.resumerequires the primary thread's previous suspend count to be exactly one; externally changed counts fail and roll back.- Crate documentation backed by
docs/crate.md, with the README compiled and executed as a doctest so its example cannot drift from the API. - Packaged lifecycle examples and ADRs.
- Rust 1.75, cross-architecture, public API, coverage, mutation, supply-chain,
license, spelling, package, and CodeQL gates.
clippy::undocumented_unsafe_blocksis denied, making CONTRIBUTING's "everyunsafeblock carries a specific safety justification" rule machine-checked instead of a convention.
- The arbitrary
InheritableHandleescape hatch andSpawnOptions::inherit_handle. Handles are transferred through standard I/O or the argument/environment protocol, with inheritable duplicates limited to the spawn transaction.
- Windows retains a process-wide reverse inheritance race: unrelated broad-inheritance spawns can receive a short-lived inheritable duplicate. Avoid concurrent broad inheritance when transferred handles are sensitive. See ADR 0005.
- The
sha2bump to 0.11 stays deferred because it requires Rust 1.85, above this crate's 1.75 minimum. The release-artifact checksum helper builds against both 0.10 and 0.11.