2.3.006 Apr 2019 11:45
Support for Linux eventfd, concluding full support for the epoll family of APIs.
2.2.005 Oct 2018 08:25
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.
missing header deps. in Makefile.am, library did not rebuild properly if any of the local header files were changed.
2.1.307 Sep 2018 03:17
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.
Let uev_timer_stop() call () on the timerfd directly, do not call uev_timer_set() since that may cause lockups or hangs.
2.1.227 Feb 2018 06:05
Minor refactor of event loop after ing the nasty use-after-free in v2.1.1. Code can now be collapsed and noticeably simplified.
Check if AM_PROG_AR macro exists before calling it, problem building libuEv on systems with older autoconf + automake. Patch by Markus Svilans.
Minor with unit tests, return result of test not event loop.
2.1.129 Jan 2018 10:25
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 by @tisyang.
Doc timer updates, non-zero timeout required.
2.1.015 Nov 2017 16:05
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, this may also be signaled by read() returning zero.
Add missing --enable-examples to configure script.
Update documentation, both README.md and API.md.
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.
double-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 ().
unit test's error handling in watcher callbacks, for reference.
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.
2.0.012 Nov 2017 03:18
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.
1.6.023 Sep 2017 14:05
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.
bench.c: Use signal.h, not non-standard sys/signal.h.
1.5.031 Oct 2016 15:05
Add support for absolute timers with the uev_cron_*() API.
Update build install instructions in README.
uev_timer_set() so that it returns error in case the underlying
Linux timerfd API fails.
1.4.227 Jun 2016 08:25
Update ChangeLog and bump version for v1.4.2 release
Signed-off-by: Joachim Nilsson lt;firstname.lastname@example.org gt;.
1.4.126 Apr 2016 10:25
Add some pkg-config integration tips for developers using libuEv
With GNU autotools in their projects.
Add missing SFD_CLOEXEC and TFD_CLOEXEC to signal and timer file
Descriptors. This prevents these file descriptors from "leaking" into
Sub-processes of the parent thread. The kernel will atomically these descriptors for forked-off children calling the exec*() family
Minor coding style and simplification of build scripts.
1.4.024 Mar 2016 13:25
Change namespace for header files: libuev/ to uev/, e.g. using
pkg-config your C program must now #include
Support for EPOLLPRI events for I/O watchers, thanks to Markus Svilans.
Simplified joystick example.
Updated README slightly.
1.3.022 Jan 2016 06:25
Change to GNU configure and build system.
Default optimization is now -O2, not -Os, which can be a bit
Unpredictable with some cross compiler toolchains. -O2 is
The tried and tested path, and default in autotools.
Added -Wextra to the previous -W -Wall, drop -Werror
Which is supposed to be used by maintainer(s) only.
1.2.424 Nov 2015 09:05
Do not allow VERSION to be overloaded by build system.
Make sure we don't inherit LDFLAGS from environment.
1.2.318 Sep 2015 22:45
README.md updates, mostly cleanup and readability improvements.
make test now runs the test case, on behalf of Travis-CI.
Renamed CHANGELOG.md to ChangeLog.md
Dropped TODO.md from distribution archives, only for devs.
Lots of Markdown syntax in both README and ChangeLog.
Silence annoying warning from newer GNU ar in Ubuntu 15.10.
1.2.231 Aug 2015 13:25
The ifdef STATIC in the Makefile has been removed. Now both the
.a and.so libraries are built. The user may then select what to.
Install. This is a change for convenience when using libuEv from
a GNU Configure Build based project.
Odd data ordering on Debian Jessie in new uev_private_t
Segfault when stopping timer before calling uev_exit().
1.2.104 Jul 2015 23:05
Private data members in uev.h have now been moved to a new file
called private.h. This will hopefully make it easier to understand
what a user of libuEv is allowed to play around with. Thanks to @vonj
for the discussions around this!.
All builds of libuEv now default to use -fPIC, this bloats the code
slightly, but ensures that linking works for all use cases, withouth
introducing unnecessary complexity.
1.2.010 Jun 2015 21:25
Remove first uev_ctx_t argument in callbacks, incompatible API
change! Please update all your callbacks if you upgrade.
1.1.005 Mar 2015 11:25
Handle case when user closes a descriptor before stopping a watcher.
Handle EPOLLHUP and EPOLLERR. Restart epoll(7) descriptor and
all watchers when an error count reaches a MAX value -- handles stale
descriptors or cases when kernel does not notice updated descriptors.
Return error when stopping a watcher fails.
Update README.md with new uev_*_start() functions.
Bump dev version to 1.1 due to the number of significant changes.
Remove test.c from DISTFILES in Makefile. You need the
comeplete sources to build the examples now. Thanks to @karasz for
the heads up on this and the musl libc issue with missing queue.h!
Fix broken link to v1.0.5 in this file.
1.0.516 Feb 2015 07:05
Add uev_*_start() functions.
Add slightly odd examples/signal.c example that utilises fork()
and causes segfault in child.
Renamed main.c to uev.c
Move examples to examples/ subdirectory
Simplify automatic dependency calculation
Add TODO.md for wishlist items
Add CHANGELOG.md , attempt to align with http://keepachangelog.com
Further updates to README.md
1.0.425 Jan 2015 03:15
test.c has been simplified/clarified
README has seen further updates
Makefile had a minor change in how build progress is echoed.
1.0.307 Jan 2015 01:24
This is a very minor release of a stable library,
the focus of the release is on on documentation.
* README.md, massively updated
* API documentation, updated
* New joystick.c example added
* Travis CI integration added, https://travis-ci.org/troglobit/libuev
* Coverity Scan integration, https://scan.coverity.com/projects/3846
* Clang scan-build support added