Revision history for Linux-Event
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.