docs: record epoll Loop runtime validation on real Linux (Apple container)
The std.event.Loop epoll backend is now runtime-validated, not just lower-verified: a static aarch64-linux build of the 1632-equivalent Loop test (plus the eventfd wake path) runs 6/6 green inside an Apple `container` Linux VM (kernel 6.18 aarch64) — add_read, idle-timeout, readable+fd+udata, the MOD-mask add_write path, the eventfd wake channel, and EPOLLRDHUP/HUP eof all behave identically to kqueue (lone difference: nbytes is 0 on epoll). Update the event.sx VALIDATION note (with the re-run recipe) and the fibers checkpoint; the epoll deliverable is complete.
This commit is contained in:
@@ -30,15 +30,20 @@
|
||||
// waits, passing the nearest deadline as `wait`'s timeout.
|
||||
//
|
||||
// VALIDATION: the kqueue path runs end-to-end on the macOS dev host
|
||||
// (examples/event/1632 — which exercises the full facade surface:
|
||||
// add_read/write, add_wake/wake, wait, del_*, EOF). The epoll path has no
|
||||
// linux box here, so it is verified to LOWER clean for x86_64-linux and
|
||||
// aarch64-linux (the whole module + every epoll syscall emits) and is
|
||||
// self-reviewed; it is NOT corpus-snapshotted (a Loop example pulls in the
|
||||
// std barrel → an ~18k-line IR dump that would churn on any unrelated std
|
||||
// change — worse than the gap). The epoll ABI itself (the layout-sensitive
|
||||
// part) IS corpus-locked, by examples/event/1633 over the raw bindings.
|
||||
// Runtime behavior validates on a linux runner.
|
||||
// (examples/event/1632 — full facade surface: add_read/write, add_wake/wake,
|
||||
// wait, del_*, EOF). The epoll path is RUNTIME-VALIDATED on real Linux: a
|
||||
// static aarch64-linux build of the 1632-equivalent test (plus the eventfd
|
||||
// wake path) runs 6/6 green inside an Apple `container` Linux VM (kernel
|
||||
// 6.18 aarch64) — add_read, idle-timeout, readable+fd+udata, the MOD-mask
|
||||
// add_write path, the eventfd wake channel, and EPOLLRDHUP/EPOLLHUP eof all
|
||||
// behave identically to kqueue. The one intentional backend difference is
|
||||
// `nbytes` (kqueue reports the pending byte count; epoll reports 0). Re-run:
|
||||
// sx build --target aarch64-linux --self-contained -o /tmp/ev <test>.sx
|
||||
// container run --rm -v "$PWD/.sx-tmp:/work" alpine /work/ev
|
||||
// It is NOT corpus-snapshotted (a Loop example pulls in the std barrel → an
|
||||
// ~18k-line IR dump that churns on any unrelated std change, and the corpus
|
||||
// runner is host-based, not container-aware). The epoll ABI itself (the
|
||||
// layout-sensitive part) IS corpus-locked by examples/event/1633.
|
||||
|
||||
#import "modules/std.sx";
|
||||
kqb :: #import "modules/std/net/kqueue.sx";
|
||||
|
||||
Reference in New Issue
Block a user