Changes for version 0.113 - 2026-09-12

  • Replace the internal Socket Stream multiple-inheritance diamond with a single behavioral parent, the ordered-byte engine. Socket descriptors, connection acquisition, configuration, addresses, and transports remain explicitly composed facilities. Document and test ordinary subclass-owned instance state, and organize Stream implementation code into demarcated constructor, accessor, method, and private-helper sections.
  • Replace Listener stream_class and flat accepted-Stream constructor templates with one resolved stream => {...} recipe. Listener bind/listen/ accept policy remains top-level while class, data, tuning, TLS, and Stream callbacks belong to the generated-connection recipe.
  • Rename the ordered-byte class tuning hook from stream_options() to stream_tuning(), add live $stream->tune(...), and keep effective mutable values in native per-Stream state with no new steady-state Perl lookup.
  • Define deterministic live tuning transitions for batching, watermarks, hard output/input limits, and established idle/read/write deadlines.
  • Make accepted TLS acquisition-time policy selected by stream->{tls} rather than Stream class identity. Listener construction validates deployment policy and prepares one reusable server SSL_CTX; accepted connections allocate independent SSL state from that prepared context.
  • Add regression coverage for recipe validation and precedence, live tuning, plain/TLS reuse of one Stream class, prepared TLS context cloning, and lowered max_pending_bytes/max_buffer grandfathering behavior.
  • Add a dedicated accepted-TLS setup benchmark alongside the existing steady-state encrypted-I/O microbenchmark, and update public POD, examples, README, and architecture documents to the new API.
  • Repair remaining shipped Listener documentation and benchmark examples that still used the removed stream_class/flat callback API, and add a regression guard against reintroducing the retired configuration syntax.

Modules

Linux-native reactor, I/O, and kernel event facilities
lazy socket-address value
structured Linux::Event failure details
native framing for ordered-byte I/O
native decimal-length framing declaration
native delimiter framing declaration
native fixed-size framing declaration
native binary length framing declaration
native netstring framing declaration
native 32-bit big-endian framing declaration
native unsigned LEB128 framing declaration
application data I/O namespace
asynchronous ordered-byte I/O for pipes and FIFOs
Linux socket I/O namespace
asynchronous Linux SOCK_DGRAM I/O
asynchronous listening SOCK_STREAM socket
asynchronous Linux SOCK_STREAM connections
asynchronous ordered-byte I/O for terminals and PTYs
kernel event and state namespace
eventfd-backed Loop notification
pidfd process lifecycle and asynchronous stdio
synchronous signalfd delivery on a Loop
monotonic one-shot and recurring Loop timers
Linux-native epoll event loop
OpenSSL transport for Linux::Event stream sockets