libev-4.00 has just been released

Marc Lehmann schmorp at
Mon Oct 25 13:05:53 CEST 2010

I am pleased to announce libev 4.00.


Release hilights: there have been numerous minor bugfixes and
improvements, and a few API changes (and a backwards compatibility layer),
and a new ev_cleanup watcher type.

All in all, this is not a supposed to be a big flashy feature release but
a bugfix release consolidating existing features, the primary source of
instability should be the API changes.

The complete Changes are:

4.00 Mon Oct 25 12:32:12 CEST 2010
        - "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended reading.
        - ev_embed_stop did not correctly stop the watcher (very good
          testcase by Vladimir Timofeev).
        - ev_run will now always update the current loop time - it erroneously
          didn't when idle watchers were active, causing timers not to fire.
        - fix a bug where a timeout of zero caused the timer not to fire
          in the libevent emulation (testcase by Péter Szabó).
        - applied win32 fixes by Michael Lenaghan (also James Mansion).
        - rename EV_TIMEOUT to EV_TIMER.
        - rename ev_loop_count/depth/verify/loop/unloop.
        - remove ev_default_destroy and ev_default_fork.
        - use enum instead of #define for most constants.
        - replace EV_MINIMAL by EV_FEATURES.
        - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as it
          seems the former is *much* faster than the latter.
        - linux kernel version detection (for inotify bug workarounds)
          did not work properly.
        - reduce the number of spurious wake-ups with the ports backend.
        - remove dependency on sys/queue.h on freebsd (patch by Vanilla Hsu).
        - do async init within ev_async_start, not ev_async_set, which avoids
          an API quirk where the set function must be called in the C++ API
          even when there is nothing to set.
        - add (undocumented) EV_ENABLE when adding events with kqueue,
          this might help with OS X, which seems to need it despite documenting
          not to need it (helpfully pointed out by Tilghman Lesher).
        - do not use poll by default on freebsd, it's broken (what isn't
          on freebsd...).
        - allow to embed epoll on kernels >= 2.6.32.
        - configure now prepends -O3, not appends it, so one can still
          override it.
        - ev.pod: greatly expanded the portability section, added a porting
          section, a description of watcher states and made lots of minor fixes.
        - disable poll backend on AIX, the poll header spams the namespace
          and it's not worth working around dead platforms (reported
          and analyzed by Aivars Kalvans).
        - improve header file compatibility of the standalone eventfd code
          in an obscure case.
        - implement EV_AVOID_STDIO option.
        - do not use sscanf to parse linux version number (smaller, faster,
          no sscanf dependency).
        - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
        - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
        - add section on accept() problems to the manpage.
        - switch to two-digit minor version.
        - work around an apparent gentoo compiler bug.
        - define _DARWIN_UNLIMITED_SELECT. just so.
        - improve compatibility to older C++ compilers.
        - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have now
          default arguments when compiled as C++.
        - enable automake dependency tracking.
        - ev_loop_new no longer leaks memory when loop creation failed.
        - new ev_cleanup watcher type.


                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_    
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list