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