Breaking Changes
- `[[nodiscard]]`` added to pipe_x functions. Most likely an error on your part
if the return value is ignored.
Non-breaking changes
- Fixed: threads ignoring return value of pipe_write and never terminating
- Changed: internal threads block SIGPIPE on a thread basis. Threads terminate
and close pipes as needed on pipe errors. This breaks the pipe chains which
prevents potential hangs with deep pipe chains.