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!)