{{$NEXT}}

<<<<<<< HEAD
  * Bump version to 0.010 for the post-restructure release candidate.

  * Rewrite and expand POD across the selector, reactor, proactor, backend contract, and support modules so the dual-engine architecture is explained consistently.

  * Refresh the examples directory to reflect the current reactor/proactor structure and retire stale pre-restructure examples.

  * Update README and CI example checking so user-facing documentation stays aligned with the code.
=======
  * Require explicit model selection in Linux::Event::Loop and Linux::Event->new.
    Constructor calls must now pass model => 'reactor' or model => 'proactor'.

  * Refresh tests, examples, README, and POD to reflect explicit model
    selection and the post-restructure architecture.
>>>>>>> 1401c31 (prep for cpan and release, new tool added)

  * Restructure the core loop into a forward-looking selector/engine layout.
    Linux::Event::Loop is now the front-door selector, with the readiness
    engine in Linux::Event::Reactor and the epoll backend in
    Linux::Event::Reactor::Backend::Epoll.

  * Add Linux::Event::Reactor::Backend and Linux::Event::Proactor::Backend
    contract modules with backend contract POD for both engine families.

  * Update the test suite and examples to use the new reactor backend
    namespace and add a selector test covering reactor and proactor model
    construction.

Revision history for Linux-Event

0.010  2026-03-09
  - Require explicit model selection in Linux::Event::Loop and Linux::Event->new.
  - Refresh tests, examples, README, and POD for the reactor/proactor selector architecture.
  - Add release preparation helper script and GitHub release notes for 0.010.


0.009  2026-002-28
  - fixed error where perl's scientific notation stringifies

0.008  2026-002-28
  - fixed error where _rearm_timer cannot comput remaining duration and returns a non number

0.007  2026-02-22
  - Fix: $loop->waker now installs an internal read watcher that drains the wakeup fd.
    This makes $waker->signal (and $loop->stop after waker creation) reliably wake a
    blocking backend wait (e.g. epoll_wait).
  - Docs: waker fd is reserved for loop wakeups; user code must not watch/unwatch it.

0.006  2026-02-14
  - Fix: stop() no longer falls into backend wait in the same tick after stop() is called.
  - Fix: EPOLLONESHOT rearm is reliable even when the effective mask is unchanged.
  - Fix: after(0) no longer disarms the timer; it arms a minimal non-zero delay for immediate scheduling.
  - Fix: run()/run_once() derives epoll wait timeout from next timer deadline when no explicit timeout is provided.
  - Tests: add regressions for stop/no-wait, EPOLLONESHOT rearm, oneshot watcher persistence, and after(0).
  - Examples: add reliable oneshot+edge stress and a simple pipe throughput benchmark.

0.004  2026-02-14
  - First stable API release.
  - Split timer queue into Linux::Event::Scheduler (Loop delegates scheduling).
  - Add signalfd integration: $loop->signal(...) with strict 4-argument callback ABI.
  - Add eventfd-based wakeups: $loop->waker (user watches $waker->fh).
  - Add pidfd integration: $loop->pid(...) for process-exit notifications (one-shot, replacement semantics per PID).
  - Freeze dispatch order for I/O watchers: error, then read, then write.
  - Freeze callback ABIs per watcher type (I/O, timer, signal, pid).

0.003_001  2026-02-12
  - Development snapshot prior to 0.004 API freeze.
  - Timers (after/at), I/O watchers (replacement semantics) and dispatch order tests.

0.002_001  2026-02-10
  - Introduce Linux::Event::Watcher (mutable watcher handles).
  - IO API: watch(...) returns a watcher; masks are internal.
  - Watchers support data (avoid closure captures) and enable/disable toggles.
  - Simplify timer API to seconds: after($seconds) and at($seconds).

0.001_001  2026-02-09
  - First developer release of Linux::Event::Loop + Backend boundary.
  - Epoll backend via Linux::Epoll.
  - Deadline scheduler (ns) included.