Skip to content

Version 1.1.0

Choose a tag to compare

@StormBytePP StormBytePP released this 13 Sep 19:51
· 23 commits to master since this release

[Summary]

StormByte System is the C++26 process and environment layer of the StormByte suite.

Dependency baseline: StormByte (base) 1.1.0.

Spawn children with piped stdin/stdout/stderr, chain them, suspend/resume, and expand environment strings. POSIX and Windows stay behind one API.

Changed

  • Public process behavior
    • Ported System exception messages to the StormByte::Component format and added ProcessCreationError for process creation failures.
    • Added a public timed Wait(std::chrono::milliseconds) overload; the existing untimed overload remains unchanged.
  • Process pipeline internals
    • Moved forwarding into the internal Pipe abstraction while preserving buffered and future output.
    • Moved Process state into the private process implementation header, reducing public-header ABI exposure.
  • Dependencies and build configuration
    • Updated the StormByte/base dependency to 1.1.0.
    • Switched Windows release optimization handling to CMake interprocedural optimization without duplicate manual compiler/linker flags.

Fixed

  • Pipe and process lifecycle
    • Pipe construction now checks platform errors, normalizes UNIX descriptors, and moved pipes invalidate their source endpoints.
    • Pipe reads, writes, polling, EOF handling, and descriptor binding now distinguish interruption, EOF, and failure.
    • Process pipeline forwarding retains pipe ownership independently of Process lifetime, supports safe reconnection, and cancels without cross-thread descriptor closure.
    • Process waiting no longer deadlocks on downstream backpressure; lifecycle joins handle unexpected thread errors without escaping noexcept cleanup paths.
    • Direct writes, interrupted waits, and Windows wait failures now preserve error and ownership semantics.
  • Process startup and platform handling
    • UNIX startup reports execvp failures to the parent and throws the appropriate exception eagerly.
    • Windows startup quotes command-line arguments and distinguishes missing executables from other creation failures.
    • Environment expansion handles missing home directories safely, expands only leading ~ paths, and grows Windows buffers as needed.
  • Regression coverage
    • Added coverage for pipelines, process moves, signal termination, interrupted waits, descriptor reuse, consumer exit, direct write failures, and oversized Windows environment expansion.
  • CI portability
    • Fixed Windows-only Process implementation initialization.
    • Made UNIX process tests resolve utilities through PATH for macOS portability.