0.029 2026-04-30 09:15:03-07:00 America/Los_Angeles - Add [PruneCruft] to dist.ini so build artifacts (blib/, pm_to_blib, MYMETA.*) no longer leak into release tarballs. 0.028 2026-04-26 20:20:00-07:00 America/Los_Angeles - Broaden environmental skip in t/resize.t for the raw fcntl(F_SETPIPE_SZ) sentinel: any non-EINVAL errno is treated as environmental (smoker pipe-page budget, EBUSY, etc.) and skipped. EINVAL stays a hard failure since that is the chomp-string regression the sentinel exists to catch. Adds the failing errno to diag output for future debugging. - Load IO::Handle explicitly in Atomic::Pipe and t/compression.t so $w->wh->autoflush(1) works on perls (e.g. 5.12) that do not autoload IO::Handle methods on pipe filehandles. Fixes the mixed_mode_compression FAIL in t/compression.t under perl 5.12.5. 0.027 2026-04-26 05:22:21-07:00 America/Los_Angeles - Skip dictionary subtests in t/compression.t when the Compress::Zstd::{Compression,Decompression}{Context,Dictionary} submodules are unavailable. Older Compress::Zstd releases ship without them, which caused four CPAN-Testers FAIL reports under perl 5.20/5.22/5.24. - Free the first pipe in t/resize.t before opening the second fifo for the raw fcntl(F_SETPIPE_SZ) sentinel, so the per-user pipe-pages budget is released. Fixes intermittent test 7 FAILs on smokers running multiple pipes in parallel. 0.026 2026-04-26 01:25:04-07:00 America/Los_Angeles - Add optional Zstd compression (with optional shared dictionary, supplied as raw bytes or a file path) for bursts and messages, plus a `keep_compressed` flag that exposes the on-wire compressed bytes alongside the decompressed payload. Compress::Zstd is a soft dependency loaded only when compression is enabled. - Fix write_blocking() so it actually toggles O_NONBLOCK correctly. Previously fcntl(F_GETFL) was treated as filling an lvalue, so the existing flags were never read, and the "blocking" branch used XOR instead of AND-NOT, which caused write_blocking(1) to silently put the pipe into non-blocking mode. 0.025 2026-04-25 10:08:57-07:00 America/Los_Angeles - Fix max_size returning a chomped string from /proc/sys/fs/pipe-max-size, which silently broke resize/resize_or_max on Linux. resize() now numifies $size defensively, and max_size() returns an integer. 0.024 2026-04-12 18:28:48-07:00 America/Los_Angeles - Use IO::Select in fill_buffer() for efficient readability polling - IO::Select is now an optional (recommended) dependency - Added use_io_select attribute to toggle IO::Select on/off per instance - Added HAVE_IO_SELECT constant - Falls back to blocking sysread with EINTR retry when IO::Select is unavailable or disabled 0.023 2026-03-31 18:57:05-07:00 America/Los_Angeles - Fix test lockup on omnios and other 16k pipe buffer systems 0.022 2024-04-10 13:24:30-07:00 America/Los_Angeles - Fix rarely seen EOF race condition in mixed data mode 0.021 2023-12-28 09:03:42-08:00 America/Los_Angeles - Make peek test more reliable, and provide more diagnostics on fail 0.020 2023-04-06 09:41:11-07:00 America/Los_Angeles - Add ability to peek at a line that is being buffered 0.019 2021-01-04 23:13:09-08:00 America/Los_Angeles - Add 'pending_data' method - Avoid infinite loop on disconnected pipe with a non-fatal SIGPIPE handler - Detect reader disconnect on windows - Better reader disconnect detection all around 0.018 2020-12-29 15:29:31-08:00 America/Los_Angeles - Fix windows bug 0.017 2020-12-28 23:26:25-08:00 America/Los_Angeles - Fix off-by-1 bug in get_line_burst_or_data - Pick a better default read size - Make read size configurable - expose fill_buffer() 0.016 2020-12-25 23:43:43-08:00 America/Los_Angeles - MASSIVE PERFORMANCE IMPROVEMENTS - Rewrite to use an internal buffer to reduce sysread calls - Fix incorrect assumptions about data recieved from pipe (it is always treated as bytes) - If internal state is messed up all future operations throw the error. 0.015 2020-12-24 19:53:36-08:00 America/Los_Angeles - Fix some bugs in mixed_data mode - Better EOF detection (not trustworthy before this fix) - get_line_burst_or_data fixes: - Return partial lines at EOF (line without newline termination) - Report incomplete messages or partial bursts (as exceptions) 0.014 2020-12-21 19:44:01-08:00 America/Los_Angeles - Add mixed_data_mode (get_line_burst_or_data) 0.013 2020-12-15 00:07:22-08:00 America/Los_Angeles - Add non-blocking write (*nix, and windows too!) 0.012 2020-12-13 18:30:33-08:00 America/Los_Angeles - Fix some tests that were breaking Test2's IPC - Fix missing PIPE->autoflush() on some platforms 0.011 2020-12-12 22:01:30-08:00 America/Los_Angeles - Fix non-blocking mode in windows - Single implementation of IPC tests where fork or threads are picked as needed. 0.010 2020-12-12 15:18:53-08:00 America/Los_Angeles - Fix win32 0.009 2020-12-10 22:46:18-08:00 America/Los_Angeles - Add fifo support 0.008 2020-12-10 20:35:19-08:00 America/Los_Angeles - Add write_burst, fits_in_burst(), and parts_needed() 0.007 2020-12-10 19:05:37-08:00 America/Los_Angeles - Fix takeover for non-linux platforms 0.006 2020-12-09 22:53:06-08:00 America/Los_Angeles - Make it possible to takeover an existing pipe 0.005 2020-12-09 21:12:51-08:00 America/Los_Angeles - Do not attempt to run on windows, dos, or os2 0.004 2020-12-08 20:22:17-08:00 America/Los_Angeles - Add stress test 0.003 2020-12-08 19:52:27-08:00 America/Los_Angeles - Work around POSIX undefined exceptions 0.002 2020-12-08 08:20:20-08:00 America/Los_Angeles - Only use ERESTART when present 0.001 2020-12-07 22:54:24-08:00 America/Los_Angeles - Initial Release (Lets see what platforms it breaks on!)