@troglobit troglobit released this Oct 4, 2018 · 4 commits to master since this release

Assets 9

NOTE: You now have to explicitly include sys/queue.h, or provide a local version of queue.h, if your application depends on it.

Changes

  • Replaced BSD queue.h doubly-linked lst API with own implementation. Making libuEv stand-alone, no longer imposing any particular version of queue.h on the user
  • Enforce -std=gnu11 to unlock typeof() in older GCC versions
  • Code cleanup

Fixes

  • Fix missing header deps. in Makefile.am, library did not rebuild properly if any of the local header files were changed

@troglobit troglobit released this Sep 6, 2018 · 13 commits to master since this release

Assets 9

Changes

  • Update joystick example, use first device, /dev/input/js0
  • Minor refactor of uev_exit(), use _SAFE macros to traverse list of watchers instead of while()
  • New API test to verify that uev_exit() terminates properly
  • Make uev_signal_stop() idempotent

Fixes

  • Let uev_timer_stop() call close() on the timerfd directly, do not call uev_timer_set() since that may cause lockups or hangs

@troglobit troglobit released this Feb 26, 2018 · 24 commits to master since this release

Assets 9

Changes

  • Minor refactor of event loop after fixing the nasty use-after-free bug in v2.1.1. Code can now be collapsed and noticeably simplified

Fixes

  • Issue #17: Check if AM_PROG_AR macro exists before calling it, fixes problem building libuEv on systems with older autoconf + automake. Patch by Markus Svilans
  • Fix minor issue with unit tests, return result of test not event loop

@troglobit troglobit released this Jan 28, 2018 · 31 commits to master since this release

Assets 9

Fixes

  • Fix use after free in main event loop if watcher deletes itself in the callback. I.e., the callback must be the last action for the watcher in the event loop
  • Doc timer example fix by @tisyang
  • Doc timer updates, non-zero timeout required

@troglobit troglobit released this Nov 14, 2017 · 38 commits to master since this release

Assets 4

Changes

  • Remove event loop error tracking used to trigger a epoll_create1() at a certain error threshold. This tracking was first introduced in [v1.1.0][], triggered by spurious EPOLLERR on I/O watchers
  • Unconditionally stop I/O watchers that return EPOLLERR or EPOLLHUP, it is up to the watcher callback to clear the error and/or read() the last few bytes from the descriptor. HUP usally means EOF, or that the remote end of a stream or pipe closed, this may also be signaled by read() returning zero
  • Add missing --enable-examples to configure script
  • Update documentation, both README.md and API.md

Fixes

  • Properly stop and de-register signal and cron/timer watchers from the epoll socket in case of errors, problem introduced in v2.0.0
  • Mark watcher file descriptor as unintialized on internal error
  • Fix double-close of cron/timer watchers. Problem triggered when the timer expires and calls uev_exit(), which stops all watchers. When the timer callback returns another call to stop the watcher triggered the double close()
  • Fix unit test's error handling in watcher callbacks, for reference
  • Fix use-before-set in cronrun unit test
  • Make sure to restart unit test's I/O watchers on UEV_ERROR
  • Make sure to restart example I/O watchers on UEV_ERROR
  • Properly check for UEV_HUP in unit tests and examples

@troglobit troglobit released this Nov 11, 2017 · 65 commits to master since this release

Assets 4

Beware, this is a major release, introducing incompatible changes to the failure modes of uev_run() and watcher callbacks. Most users will most likely not notice any difference, but please read on.

Changes

  • uev_run() no longer exits the main event loop if an unrecoverable error with a watcher occurs. Instead, the watcher is disabled and the callback is run one last time with events set to UEV_ERROR.
  • Watcher callbacks must handle UEV_ERROR conditions. This pertains in particular to signal and timer watchers.
  • Examples and API docs updated with the new failure modes.

@troglobit troglobit released this Sep 22, 2017 · 99 commits to master since this release

Assets 4

Changes

  • Support for edge triggered and oneshot event types
  • Add make package build target to trigger a .deb package build
  • Support 64 bit time_t on 32 bit GLIBC systems

Fixes

  • bench.c: Use signal.h, not non-standard sys/signal.h

@troglobit troglobit released this Nov 27, 2016 · 159 commits to master since this release

Assets 4

Changes

  • Add support for checking if a watcher is active.
  • Refactor unit testing framework

@troglobit troglobit released this Oct 30, 2016 · 177 commits to master since this release

Assets 4

Changes

  • Add support for absolute timers with the uev_cron_*() API.
  • Update build & install instructions in README

Fixes

  • Fix uev_timer_set() so that it returns error in case the underlying
    Linux timerfd API fails.