All notable changes to this project are documented here. Format follows Keep a Changelog; this project adheres to Semantic Versioning.
beckon-ffm/close! to stop the native dispatcher, restore signal
dispositions, and release FFM descriptors and shared memory. This supports
clean REPL reloads, test teardown, and supervised restarts.signalfd backend no longer changes SIGUSR2's process-wide
disposition. HotSpot uses SIGUSR2 internally for thread suspend/resume, so
installing SIG_DFL there could terminate the JVM. The dispatcher still
blocks the signal and consumes its own thread-directed raises via signalfd.struct pollfd entry's revents offset in the
dispatcher poll loop, which previously read back the events field and so
never observed the shutdown wakeup.signalfd descriptor is opened with SFD_NONBLOCK and raise! posts the
eventfd wakeup, so a post-poll read can never block the dispatcher.beckon-signal-launcher, which pre-blocks an explicit
signal allowlist before starting the JVM so signalfd can reliably receive
external signals. USR2 and CHLD are rejected by default, and -Xrs is
required for HotSpot-managed termination signals.SIG_IGN only for signals in the launcher's
pre-blocked external allowlist, preserving the registration race protection
there while retaining SIG_DFL in default mode so externally-delivered
signals are not silently swallowed.signal, kevent, kill, sigemptyset,
sigaddset, pthread_sigmask, pthread_kill, and the signalfd mask update)
are checked and throw with the return value and captured errno instead of
being ignored.reset instead of forcing SIG_DFL.signalfd and macOS/BSD kqueue.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |