libuev

Lightweight event loop library for Linux epoll() family APIs

MIT License

Stars
230

Bot releases are visible (Hide)

libuev - libuEv v2.4.1 Latest Release

Published by github-actions[bot] 10 months ago

Changes

  • Update README with list of moden Linux APIs used

Fixes

  • Fix #27: possible buffer overrun in uev_run(), found by Steve Palmer
libuev - libuEv v2.4.0

Published by github-actions[bot] about 3 years ago

Please note, this release is a major ABI bump due to changes in uev_t which requires recompiling all programs that use libuEv.

Also, libuEv is built for 64 bit time_t, this means all applications that link with libuEv also must be built with the same build flags. This applies in particular to systems with GLIBC v2.34, which now require applications to add the following to their CPPFLAGS:

CPPFLAGS += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64

Applications that use pkg-config will get these extra flags from the libuev.pc file in the distribution archive.

Changes

  • More examples added for fork + signals + timer
  • Add struct signalfd_siginfo to uev_t, valid for signal watchers. Now more metadata is available to signal callbacks

Fixes

  • Fix #24: Replace obsolete autotools macro, by Otto Urpelainen
  • Fix #25: GLIBC v2.34 require -D_FILE_OFFSET_BITS=64 for applications and libraries that want a 64-bit time_t. Affects library and test programs used for make check, as well as all other applications that link with libuEv, so the libuev.pc file is also updated
  • Fix error handling in callbacks in examples

Packages for Debian 10, or later, and compatible Ubuntu releases, available at https://deb.troglobit.com/

libuev - libuEv v2.3.2

Published by troglobit over 3 years ago

Changes

  • Copyright updates, including LICENSE file, year + author last name
  • Add tar.gz archives to distribution
  • Enable .sha256 checksums for all tarballs

Fixes

  • Debian packaging fixes only
libuev - libuEv v2.3.1

Published by troglobit over 4 years ago

Fixes

  • Debian packaging fixes only.
libuev - libuEv v2.3.0

Published by troglobit over 5 years ago

Changes

  • Support for Linux eventfd, uev_event_*() see API.md for details
libuev - libuEv v2.2.0

Published by troglobit about 6 years ago

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
libuev - libuEv v2.1.3

Published by troglobit about 6 years ago

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
libuev - libuEv v2.1.2

Published by troglobit over 6 years ago

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
libuev - libuEv v2.1.1

Published by troglobit over 6 years ago

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
libuev - libuEv v2.1.0

Published by troglobit almost 7 years ago

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
libuev - libuEv v2.0.0

Published by troglobit almost 7 years ago

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.
libuev - libuEv v1.6.0

Published by troglobit about 7 years ago

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
libuev - libuEv v1.5.2

Published by troglobit almost 8 years ago

Fixes

  • Fix build regression in v1.5.1
libuev - libuEv v1.5.1

Published by troglobit almost 8 years ago

Changes

  • Add support for checking if a watcher is active.
  • Refactor unit testing framework
libuev - libuEv v1.5.0

Published by troglobit almost 8 years ago

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.
libuev - libuEv v1.4.2

Published by troglobit over 8 years ago

Changes

Add range checks for period and timeout to uev_timer_init() and uev_timer_set().
If either on is < 0 libuEv now return ERANGE.

libuev - libuEv v1.4.1

Published by troglobit over 8 years ago

Changes

  • Add some pkg-config integration tips for developers using libuEv
    with GNU autotools in their projects.

Fixes

  • 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 close
    these descriptors for forked-off children calling the exec*() family
    of syscalls.
  • Minor coding style fixes and simplification of build scripts.
libuev - libuEv v1.4.0

Published by troglobit over 8 years ago

This release changes the header file namespace, which was silently introduced in v1.2.1.
Apologies for any problems this may cause!

Changes

  • Change namespace for header files: libuev/ to uev/, e.g. using
    pkg-config your C program must now #include <uev/uev.h>
  • Support for EPOLLPRI events for I/O watchers, thanks to Markus Svilans
  • Simplified joystick example
  • Updated README slightly
libuev - libuEv v1.3.1

Published by troglobit over 8 years ago

Fixes

  • Remove symlinks to Markdown files from GIT
  • Distribute and install Markdown files: README.md, etc.
libuev - libuEv v1.3.0

Published by troglobit almost 9 years ago

Changes

  • 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.
Package Rankings
Top 6.99% on Proxy.golang.org
Badges
Extracted from project README
License Badge GitHub Status Coverity Status