Skip to content

Latest commit

 

History

History
55 lines (44 loc) · 2.52 KB

File metadata and controls

55 lines (44 loc) · 2.52 KB

Changelog

Format: Keep a Changelog and Semantic Versioning with Cargo's pre-1.0 compatibility rules.

0.1.0 - 2026-08-03

Initial release.

Added

  • Reusable Command and 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_USESTDHANDLES with all three standard handles null, matching Microsoft Terminal's ConptyConnection.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.
  • SuspendedChild type-state transitions with pre-resume process and primary thread inspection. resume requires 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_blocks is denied, making CONTRIBUTING's "every unsafe block carries a specific safety justification" rule machine-checked instead of a convention.

Removed

  • The arbitrary InheritableHandle escape hatch and SpawnOptions::inherit_handle. Handles are transferred through standard I/O or the argument/environment protocol, with inheritable duplicates limited to the spawn transaction.

Known limitations

  • 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 sha2 bump 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.