EV

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for Perl extension EV

Changes marked with (libev) are changes in libev, and might have more
documentation in the libev Changes file.

4.34 Sun 08 Oct 2023 23:45:11 CEST
	- the EV::stat->path method errornously freed the result, causing
          corruption (testcase by Carsten Witt).
        - new functino EV::Child::reinit.

4.33 Wed Mar 18 13:31:12 CET 2020
	- the enable assertion makefile question failed to enable
          assertions due to a typo.
	- try harder to avoid perl's assert () which does not actually
          behave correctly.
        - updated libecb to make it compile under more windows environments.

4.32 Fri Jan 24 14:21:35 CET 2020
	- (libev) fixed a bug introduced in 4.31 when timerfds and signalfds were
          used at the same time.
        - (libev) 0 is now allowed as requested event mask in io watchers.
        - (libev) once-per-minute wakeups will now be optimized away when
          timerfds are available
	- use the new ev_io_modify in EV::IO->events, instead of the potentially
          slower ev_io_set.
        - add a bunch of mutator methods, mostly untested(!): EV::Timer->repeat,
          EV::Periodic->offset, EV::Periodic->interval,
          EV::Periodic->reschedule_cb.
        - minor optimisations and bugfixes.

4.31 Fri Dec 20 21:57:00 CET 2019
        - (libev) handle backends with minimum wait time a bit better by
          not waiting in the presence of already-expired timers
          (behaviour reported by Felipe Gasper).
        - (libev) use timerfd to detect timejumps.
        - (libev) new loop flag: EVFLAG_NOTIMERFD.

4.30 Fri Nov 22 21:00:00 CET 2019
	- (libev) use a different and hopefully even more portable
          test to disable io_uring when header files are too old,
          by directly testing LINUX_VERSION_CODE.
        - (libev) fix a bug in the io_uring backend that polled the wrong
          backend fd, causing it to not work in many cases.

4.29 Fri Nov 22 15:34:29 CET 2019
	- (libev) add io uring autoconf and non-autoconf detection,
          the latter of which should disable io_uring compilation
          on old systems.

4.28 Tue Nov 19 13:55:39 CET 2019
	- (libev) fix ev_port backend, thanks to David H. Gutteridge for
        - (libev) many bugfixes in linuxaio backend.
        - (libev) experimental io uring interface.
          reminding me to actually release the fix.
	- try to name ev.h more explicitly, to hopefully improve portability.
        - opportunistically round up wait times for poll and epoll backend,
          to avoid unnecessary loop iterations.
        - add build dependency on ev_linuxaio.c.
        - quickly (re)-ported to minix 3.3 before minix crashed again.

Changes  view on Meta::CPAN

	- (libev) use more aggressive assertions to catch
          more usage errors.
	- allow users to re-enable assert() in case it is disabled
          by perl (which is typically the case).

4.26 Mon Jun 24 23:39:40 CEST 2019
	- (libev) included experimental linux aio backend.
        - allow the linux aio backend to be used by default
          only when explicitly configured during Makefile.PL time.

4.25 Fri Dec 21 08:04:26 CET 2018
	- (libev) updated to libev 4.25, minor fixes and enhancements.
	- document the requirement to "use EV" when using EV::MakeMaker.
	- only use __register_atfork with glibc and uclibc, as musl
          defines __linux__, but doesn't implement the linux standard
          base ABI, nor makes itself detectable via a macro, both apparently
          by design, winning the "broken by design 2016 award" - well done.
        - correct EV::periodic example 24h after midnight -> one day after
          midnight (reported by Felix Ostmann).

4.22 Sun Dec 20 02:34:39 CET 2015
        - (libev) when epoll detects unremovable fds in the fd set, rebuild
          only the epoll descriptor, not the signal pipe, to avoid
          SIGPIPE in ev_async_send. This doesn't solve it on fork,
          so document what needs to be done in ev_loop_fork
          (analyzed by Benjamin Mahler).
        - (libev) remove superfluous sys/timeb.h include on win32
          (analyzed by Jason Madden).
        - updated libecb.

4.21 Mon Jul 13 21:47:33 CEST 2015

Changes  view on Meta::CPAN

4.18 Sat Sep  6 20:37:23 CEST 2014
	- use slightly better weay to find includes, to support multiarch
          on newer perls.

4.17 Fri Apr 11 06:22:38 CEST 2014
	- perl5porters broke Async::Interrupt, BDB, EV, IO::AIO, OpenCL
          without warning by switching the meaning of USE_SOCKETS_AS_HANDLES
          in 5.18. What's so attractive about giving a shit about backwards
          compatibility - I will never understand.

4.16 Sat Mar  8 16:49:05 CET 2014
	- make sure EV::CHECK is available at all times.
        - avoid a spurious warning when perl -w overrides "no warnings".
        - use perl's signal implementation on WIN32.
        - ensure extern "C" function pointers are used for externally-visible
          pointers.
	- (libev) mark event pipe fd as cloexec after a fork (analyzed by Sami Farin).
        - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
        - (libev) in the absence of autoconf, do not use the clock syscall
          on glibc >= 2.17 (avoids the syscall AND -lrt on systems
          doing clock_gettime in userspace).
        - (ecb) work around memory barriers and volatile apparently both being
          broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).

4.15 Fri Mar  1 12:15:53 CET 2013
	- (libev) upgrade to 4.15 - too many changes to list.
	- EV::run now returns a boolean.
        - API version 5:1.
        - document that cleanup watchers are not available via perl.
        - cast I32 to int in error message printf.
        - remove dependencies on librt and libpthreads on GNU/Linux.

4.11 Sat Feb  4 19:56:26 CET 2012
	- (libev) implement memory fences for (obsolete) llvm-gcc.

4.10 Thu Jan 19 18:54:23 CET 2012
        - (libev) fix a race where the workaround against the epoll fork
          bugs caused signals to not be handled anymore.
        - (libev) correct backend_fudge for most backends, and implement
          a windows specific workaround to avoid looping because we call
          both select and Sleep, both with different time resolutions.
	- e_new wasn't declared static (causing very minor .so bloat).
        - replace more old api names by new ones.

4.03 Tue Jan 11 14:51:05 CET 2011
	- do not avoid the clock_gettime call on GNU/Linux anymore, as EV
          links against -lpthread anyways - as a result, EV might now take
          advantage of fast userspace clock_gettime implementations,
          but also links against -lrt.
        - (libev) lots of event port bug workarounds.
        - (libev) officially support files in I/O watchers.
        - (libev) new function ev_feed_signal.
        - fix documentation parts still refering to the 3.x API.

4.02 Thu Dec 30 08:27:41 CET 2010
        - the revents argument did not stringify correctly, as only the
          numeric value was updated, while the string value was kept from
          previous invocations.

4.01 Sun Dec  5 12:42:13 CET 2010
	- fully support EV_COMPAT3=0.
        - default_fork was stupidly defined as inline.
        - ask cpan to upgrade AnyEvent if < 5.29.
        - support EV_EXTRA_DEFS during configuration.
        - support -DEV_NO_LOOPS for snakker build.

4.00 Mon Oct 25 13:30:09 CEST 2010
	- many API changes, see the manual.
        - (libev) lots and lots of bugfixes, see the ev documentation.
	- fix a bug where inotify usage would parse the same event

Changes  view on Meta::CPAN

        - (libev) ev_embed_stop did not correctly stop the watcher.
        - (libev) disable poll backend on AIX.
        - (libev) rename EV_TIMEOUT to EV_TIMER.
        - (libev) add section on accept() problems to the manpage.
        - (libev) no child watchers on win32.
        - make code more aliasing compliant, in case perl is ever
          translated to C.
        - document the EV::CHECK runtime unavailability.
        - ported to minix 3.1.7.

3.9  Thu Dec 31 07:59:59 CET 2009
	- disable t/07* under automatic testing.
        - increase t/09* timeouts as netbsd has *horribly* broken
          select/kevent that *usually* sleep >>0.6s instead of 0.3.
        - add constants EV::FLAG_NOSIGFD, EV::FLAG_NOINOTIFY and
          EV::BACKEND_ALL.
        - (libev) signalfd is no longer used by default.
	- (libev) backport inotify code to C89.
        - (libev) inotify file descriptors could leak into child processes.
        - (libev) ev_stat watchers could keep an errornous extra ref on the loop.
        - (libev) take advantage of inotify_init1, if available.

Changes  view on Meta::CPAN

        - (libev) correctly zero the idx values for arrays, so destroying
          and reinitialising the default loop actually works (patch by
          Malek Hadj-Ali).
        - (libev) new EV::CUSTOM revents flag for use by applications.
        - (libev) add documentation section about priorites.
        - (libev) add a glossary to the dcoumentation.
        - (libev) extend the ev_fork description slightly.
        - (libev) optimize a jump out of call_pending.
        - t/03_keepalive could fail when there was no actual error.

3.53 Sun Feb 15 02:38:20 CET 2009
	- (libev) on win32, the event loop creation could randomly fail
          due to an initialised variable having the wrong value.
        - (libev) probe for CLOCK_REALTIME support at runtime as well and
          fall back to gettimeofday if there is an error, to support older
          operating systems with newer header files/libraries.
        - prefer gettimeofday over clock_gettime by default.

3.52 Wed Jan  7 21:46:14 CET 2009
	- (libev) fix some issues in the select backend when in fd_set mode.
        - (libev) due to a thinko, instead of disabling everything but
          select on the borked OS X platform, everything but select was
          allowed (reported by Emanuele Giaquinta).
        - (libev) actually verify that local and remote port are matching in
          libev's socketpair emulation, which makes denial-of-service
          attacks harder (but not impossible - it's windows). Make sure
          it even works under vista, which thinks that getpeer/sockname
          should return fantasy port numbers.

3.51 Wed Dec 24 23:01:59 CET 2008
        - do not cache the arguments passed to callbacks if the refcount
          indicates that the callback has stolen them.
	- (libev) try to avoid librt on GNU/Linux.
        - (libev) check port_getn return value dfferently, might potentially
          avoid problems.
        - (libev) fix a bug with stat watchers possibly causing freezes.
        - (libev) work around OS X 10.5 breaking poll, now select is the
          only viable choice left on that pile of garbage.
	- play tester whore: disable some tests that typically fail only
          on cpan tester machines.

3.49 Wed Nov 19 11:26:53 CET 2008
        - fix typos in manpage (Alex Efros).
	- increase timing even further, for the ever-overloaded cpan-tester
          machines, and to the detriment of everybody else who wants a fast
          make test.
        - possible 5.6 compatibility.
        - (libev) use inotify even on buggy kernels, but don't rely on it.
        - (libev) use inotify only as an added hint on network filesystems.

3.48 Thu Oct 30 09:09:48 CET 2008
	- (libev) use a generation counter to detect spurious epoll events
          and recreate the kernel in such a case (sorry, it's slow, but
          I didn't design epoll...).
	- (libev) optimise away an EPOLL_CTL_ADD/MOD combo in the epoll
          backend in some cases.
        - (libev) use memset to initialise most arrays now and do away
          with the init functions.
        - speed up event callback invocation further (~15%), by
          not creating the object reference each time.
        - EV::sleep was documented, but not implemented. fun.

Changes  view on Meta::CPAN

        - added example to EV::MakeMaker manpage.
        - add async_pending method.

3.2  Wed Apr  2 17:08:16 CEST 2008
	- "ported" again to the Microsoft "C" language.
        - relax testsuite timing for the benefit of freebsd users once more.
        - fix EVAPI's ev_time and ev_sleep macros.
        - (libev) fix select backend on 64 bit architetcures.
        - (libev) ev_loop flags are now local to each invocation.

3.1  Sat Mar  8 11:41:14 CET 2008
	- add ev_sync_* and ev_fork_* to EVAPI.h.
	- provide EV::Embed->sweep method.
	- new watcher type: async (not very useful in perl).

3.0  Mon Jan 28 13:23:11 CET 2008
	- upgrade to libev-3.0.
        - change child handler to incorporate tracing flag.

2.01 Mon Dec 31 01:59:19 CET 2007
	- found a minor problem in the testsuite that is only
          caught by new Test::Harness versions (reported by Andreas
          König).

2.0  Sat Dec 22 17:47:03 CET 2007
	- no longer force kqueue when enabled, enable it
          on more systems (as its now by default not used on most).
	- expose fork watchers.
        - switch to libev's MULTIPLICITY API.
        - use a slightly different include file name strategy.
        - get rid of (unused) libevent emulation.
        - 5% watcher management speedup due to callback optimisation
          when inline closures are used, 5% slowdown due to multiplicity.
        - very minimal support for dynamic event loops and embed watchers.
        - fix name of prepare start/stop methods.
        - create and export EV::sleep and EV::set_*_collect_interval.
        - fix typos in manpage (Alex Efros).

1.86 Tue Dec 18 02:36:57 CET 2007
        - add periodic->at methods.

1.85 Fri Dec 14 20:32:40 CET 2007
        - further optimise epoll backend by adding a heuristic that
          avoids EPOLL_CTL_DEL calls if possible.
	- EV::signal->start was not async-signal safe.
        - optimise start/stop when the fd hasn't changed.

1.8  Tue Dec 11 22:17:46 CET 2007
	- API version 3:0.
	- reduced fudge factor to zero for select, poll, epoll
          and kqueue: your system better be posix-compliant
          even in its extensions :->
        - improve long-term numerical stability in periodic watchers
          by introducing a separate offset value instead of reusing at.
        - recalculate real/monotonic clocks before blocking fully
          to avoid blocking for longer than necessary.
        - fix bugs in the heap functions. this rarely lead to illegal
          heap orderings.

1.72 Sat Dec  8 15:31:26 CET 2007
	- add dummy loop arguments to some EVAPI functions
          so that clients can use EV_A and EV_DEFAULT.
        - expose ev_clear_pending.
        - renamed trigger to invoke.

1.71 Fri Dec  7 19:10:24 CET 2007
	- changed/implemented idle watcher priority.
	- allow out-of-range priorities to be set.
        - fix ->priority to actually work on started watchers.
        - improved testsuite.

1.6  Wed Dec  5 15:06:20 CET 2007
	- add a missing SPAGAIN.
        - ripped out EV::DNS, use EV::ADNS for a better backend.
        - make ev_time callable from EVAPI.h.
        - add EV::loop_count.
        - some space optimisations.

1.5  Wed Nov 28 20:19:09 CET 2007
	- add inotify backend.
        - make testsuite even less sensible to timing issues,
          add more stat tests.
        - add ->attr, ->prev, ->stat calls to stat watcher.

1.4  Tue Nov 27 17:35:27 CET 2007
	- work around a linux 2.4 kernel bug in child handlers.
        - implement stat watcher interface.
        - implement fork watcher interface.
        - io->set did not keep the fh alive.
        - actively check signal numbers/names to be valid.
        - cleanups, minor fixes, new bugs.
        - work around windows bugs in the testsuite.

1.3  Sun Nov 25 10:46:57 CET 2007
	- stopping idle/check/prepare watchers could cause data corruption.
	- implement and document EV::once.
        - improved documentation, verify that netbsd indeed has the only
          working kqueue implementation (out of darwin, freebsd, netbsd and
          openbsd). Praise them!
        - fix the data method so it might work.
        - expose ev_ref/ev_unref to the C API.
        - expose ref/unref in form of the ->keepalive method to perl.
        - minor bugfixes and portability fixes.

1.2  Thu Nov 22 05:44:09 CET 2007
        - disable kqueue by default on !netbsd, as its broken on freebsd,
          darwin and openbsd and thus almost everywhere.
        - add some allowance in t/01_timer.t for the uneven monotonic
          vs. realtime clock tick on at least freebsd.
        - add -lsocket -lnsl on solaris in case the perl guy forgot to
          configure them.

1.1  Wed Nov 21 06:08:48 CET 2007
	- improved timer test to include periodics and
          withstand small timing variations.
        - many minor tweaks to libev.

1.0  Fri Nov 16 14:51:59 CET 2007
	- require AnyEvent update if AnyEvent is installed.
	- add solaris 10 port-based backend.
        - add child_ns and fix check_ns.
        - treat yes/no as enforcement, not as hint, when configuring,
          documentation update (reported by Andy Grundman).

0.9  Wed Nov 14 22:24:49 CET 2007
	- changed LIBEV_METHODS to LIBEV_FLAGS and the
          way this is used inside libev.
        - many, many bugfixes.
        - add unloop constants.
        - add timer test.
        - ev_loop will now terminate immediately when no watchers are active.

0.8  Mon Nov 12 02:28:46 CET 2007
	- fix "testsuite" again :().
        - fix check/idle/prepare/child watcher stop.
        - enourmously many fixes.
        - rewritten select backend (mostly for win32).
        - cache socket handles on win32.
        - provide considerably finer control over configuration.

0.7  Fri Nov  9 20:37:58 CET 2007
	- move AnyEvent adaptor into the AnyEvent module.
        - use private copy of evdns.[ch].
        - many minor fixes.

0.6  Thu Nov  8 18:23:43 CET 2007
	- (libev) better native win32 support.
        - fix idle watchers.
        - implement and document periodic reschedule callbacks.
        - do not run dns test on !linux platforms (actually to exclude win32).
        - fix (unused in EV :) poll backend.

0.51 Tue Nov  6 19:50:22 CET 2007
	- fix kqueue/poll compilation issue.
        - work around design issues in kqueue.
        - enable kqueue by default, seems to work.

0.5  Tue Nov  6 17:37:44 CET 2007
	- add signal and pid mutators.
        - add rstatus/rpid accessors.
        - updated libev (lower cost for clock monotonic).
        - support event priorities.
        - try to find SIG_SIZE on perls that don't have it (Slaven Rezic).
        - improved signal handling, fixed child watchers.
        - experimentally add kqueue backend, completely untested.
        - ported to cygwin and native win32.

0.1   Thu Nov  1 18:29:22 CET 2007
	- replaced libevent by libev (total rewrite).
        - many bugfixes w.r.t. libevent.
        - new watcher types: periodic, check, prepare, child, idle.
	- performance optimisations.
        - added interactive configuration.
        - added fork support.

0.03  Mon Oct 29 20:52:50 CET 2007
        - add timed_io convenience constructors.
        - improve documentation.
        - support signal names in addition to signal numbers.
        - support signal anyevent watchers.
        - vastly improved testsuite (its all relative :).
        - add EV::MakeMaker, beginning of C-level API.
        - force strings to byte form.

0.02  Sun Oct 28 07:40:21 CET 2007
	- call $EV::DIED in case a callback throws an exception.
        - add const char * to typemap for possible 5.6 compatibility.

0.01  Sat Oct 27 19:10:18 CEST 2007
	- initial release.

0.00  Fri Oct 26 11:12:57 CEST 2007
	- original version; cloned from JSON::XS

libev/Changes  view on Meta::CPAN

TODO: for next ABI/API change, consider moving EV__IOFDSSET into io->fd instead and provide a getter.
TODO: document EV_TSTAMP_T
TODO: https://paste.debian.net/1268417/, stdfun

4.34 (EV only)
	- libev did not compile on systems lacking clock_gettime.
	- due to a logic bug, timerfd availability did not always translate
          into fewer wakeups - libev is now more aggressive in using
          longer sleeps, even when timerfd is not in use.

4.33 Wed Mar 18 13:22:29 CET 2020
	- no changes w.r.t. 4.32.

4.32 (EV only)
	- the 4.31 timerfd code wrongly changed the priority of the signal
          fd watcher, which is usually harmless unless signal fds are
          also used (found via cpan tester service).
        - the documentation wrongly claimed that user may modify fd and events
          members in io watchers when the watcher was stopped
          (found by b_jonas).
        - new ev_io_modify mutator which changes only the events member,

libev/Changes  view on Meta::CPAN

        - do not wake up every minute when timerfd is used to detect timejumps.
        - do not wake up every minute when periodics are disabled and we have
          a monotonic clock.
        - support a lot more "uncommon" compile time configurations,
          such as ev_embed enabled but ev_timer disabled.
        - use a start/stop wrapper class to reduce code duplication in
          ev++.h and make it needlessly more c++-y.
        - the linux aio backend is no longer compiled in by default.
        - update to libecb version 0x00010008.

4.31 Fri Dec 20 21:58:29 CET 2019
	- handle backends with minimum wait time a bit better by not
          waiting in the presence of already-expired timers
          (behaviour reported by Felipe Gasper).
        - new feature: use timerfd to detect timejumps quickly,
          can be disabled with the new EVFLAG_NOTIMERFD loop flag.
        - document EV_USE_SIGNALFD feature macro.

4.30 (EV only)
	- change non-autoconf test for __kernel_rwf_t by testing
          LINUX_VERSION_CODE, the most direct test I could find.

libev/Changes  view on Meta::CPAN


4.26 (EV only)
	- update to libecb 0x00010006.
	- new experimental linux aio backend (linux 4.18+).
	- removed redundant 0-ptr check in ev_once.
        - updated/extended ev_set_allocator documentation.
        - replaced EMPTY2 macro by array_needsize_noinit.
        - minor code cleanups.
        - epoll backend now uses epoll_create1 also after fork.

4.25 Fri Dec 21 07:49:20 CET 2018
        - INCOMPATIBLE CHANGE: EV_THROW was renamed to EV_NOEXCEPT
          (EV_THROW still provided) and now uses noexcept on C++11 or newer.
	- move the darwin select workaround higher in ev.c, as newer versions of
          darwin managed to break their broken select even more.
	- ANDROID => __ANDROID__ (reported by enh@google.com).
        - disable epoll_create1 on android because it has broken header files
          and google is unwilling to fix them (reported by enh@google.com).
        - avoid a minor compilation warning on win32.
        - c++: remove deprecated dynamic throw() specifications.
        - c++: improve the (unsupported) bad_loop exception class.
        - backport perl ev_periodic example to C, untested.
        - update libecb, biggets change is to include a memory fence
          in ECB_MEMORY_FENCE_RELEASE on x86/amd64.
        - minor autoconf/automake modernisation.

4.24 Wed Dec 28 05:19:55 CET 2016
	- bump version to 4.24, as the release tarball inexplicably
          didn't have the right version in ev.h, even though the cvs-tagged
          version did have the right one (reported by Ales Teska).

4.23 Wed Nov 16 18:23:41 CET 2016
	- move some declarations at the beginning to help certain retarded
          microsoft compilers, even though their documentation claims
          otherwise (reported by Ruslan Osmanov).

4.22 Sun Dec 20 22:11:50 CET 2015
	- when epoll detects unremovable fds in the fd set, rebuild
          only the epoll descriptor, not the signal pipe, to avoid
          SIGPIPE in ev_async_send. This doesn't solve it on fork,
          so document what needs to be done in ev_loop_fork
          (analyzed by Benjamin Mahler).
	- remove superfluous sys/timeb.h include on win32
          (analyzed by Jason Madden).
        - updated libecb.

4.20 Sat Jun 20 13:01:43 CEST 2015

libev/Changes  view on Meta::CPAN

        - use a reasonable fallback for EV_NSIG instead of erroring out
          when we can't detect the signal set size.
        - in the absence of autoconf, do not use the clock syscall
          on glibc >= 2.17 (avoids the syscall AND -lrt on systems
          doing clock_gettime in userspace).
        - ensure extern "C" function pointers are used for externally-visible
          loop callbacks (not watcher callbacks yet).
        - (ecb) work around memory barriers and volatile apparently both being
          broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).

4.15 Fri Mar  1 12:04:50 CET 2013
        - destroying a non-default loop would stop the global waitpid
          watcher (Denis Bilenko).
	- queueing pending watchers of higher priority from a watcher now invokes
          them in a timely fashion (reported by Denis Bilenko).
	- add throw() to all libev functions that cannot throw exceptions, for
          further code size decrease when compiling for C++.
        - add throw () to callbacks that must not throw exceptions (allocator,
          syserr, loop acquire/release, periodic reschedule cbs).
	- fix event_base_loop return code, add event_get_callback, event_base_new,
          event_base_get_method calls to improve libevent 1.x emulation and add

libev/Changes  view on Meta::CPAN

          simplifies (and hopefully correctifies :) the race checking
          on fork, at the cost of one extra fd.
        - add fat, msdos, jffs2, ramfs, ntfs and btrfs to the list of
          inotify-supporting filesystems.
        - move orig_CFLAGS assignment to after AC_INIT, as newer autoconf
          versions ignore it before
          (https://bugzilla.redhat.com/show_bug.cgi?id=908096).
        - add some untested android support.
        - enum expressions must be of type int (reported by Juan Pablo L).

4.11 Sat Feb  4 19:52:39 CET 2012
	- INCOMPATIBLE CHANGE: ev_timer_again now clears the pending status, as
          was documented already, but not implemented in the repeating case.
        - new compiletime symbols: EV_NO_SMP and EV_NO_THREADS.
	- fix a race where the workaround against the epoll fork bugs
          caused signals to not be handled anymore.
	- correct backend_fudge for most backends, and implement a windows
          specific workaround to avoid looping because we call both
          select and Sleep, both with different time resolutions.
        - document range and guarantees of ev_sleep.
        - document reasonable ranges for periodics interval and offset.

libev/Changes  view on Meta::CPAN

        - add Symbols.ev and Symbols.event files, that were missing.
        - fix backend_mintime value for epoll (was 1/1024, is 1/1000 now).
        - fix #3 "be smart about timeouts" to not "deadlock" when
          timeout == now, also improve the section overall.
        - avoid "AVOIDING FINISHING BEFORE RETURNING" idiom.
        - support new EV_API_STATIC mode to make all libev symbols
          static.
        - supply default CFLAGS of -g -O3 with gcc when original CFLAGS
          were empty.

4.04 Wed Feb 16 09:01:51 CET 2011
	- fix two problems in the native win32 backend, where reuse of fd's
          with different underlying handles caused handles not to be removed
          or added to the select set (analyzed and tested by Bert Belder).
	- do no rely on ceil() in ev_e?poll.c.
        - backport libev to HP-UX versions before 11 v3.
        - configure did not detect nanosleep and clock_gettime properly when
          they are available in the libc (as opposed to -lrt).

4.03 Tue Jan 11 14:37:25 CET 2011
	- officially support polling files with all backends.
	- support files, /dev/zero etc. the same way as select in the epoll
          backend, by generating events on our own.
        - ports backend: work around solaris bug 6874410 and many related ones
          (EINTR, maybe more), with no performance loss (note that the solaris
          bug report is actually wrong, reality is far more bizarre and broken
          than that).
	- define EV_READ/EV_WRITE as macros in event.h, as some programs use
          #ifdef to test for them.
        - new (experimental) function: ev_feed_signal.
        - new (to become default) EVFLAG_NOSIGMASK flag.
        - new EVBACKEND_MASK symbol.
        - updated COMMON IDIOMS SECTION.

4.01 Fri Nov  5 21:51:29 CET 2010
        - automake fucked it up, apparently, --add-missing -f is not quite enough
          to make it update its files, so 4.00 didn't install ev++.h and
          event.h on make install. grrr.
        - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
        - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
        - use "(libev) " prefix for all libev error messages now.

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

libev/Changes  view on Meta::CPAN

        - work around an apparent gentoo compiler bug.
        - define _DARWIN_UNLIMITED_SELECT. just so.
        - use enum instead of #define for most constants.
        - 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.

3.9  Thu Dec 31 07:59:59 CET 2009
	- signalfd is no longer used by default and has to be requested
          explicitly - this means that easy to catch bugs become hard to
          catch race conditions, but the users have spoken.
        - point out the unspecified signal mask in the documentation, and
          that this is a race condition regardless of EV_SIGNALFD.
	- backport inotify code to C89.
        - inotify file descriptors could leak into child processes.
        - ev_stat watchers could keep an erroneous extra ref on the loop,
          preventing exit when unregistering all watchers (testcases
          provided by ry@tinyclouds.org).

libev/Changes  view on Meta::CPAN

	- correctly zero the idx values for arrays, so destroying and
          reinitialising the default loop actually works (patch by
          Malek Hadj-Ali).
        - implement ev_suspend and ev_resume.
        - new EV_CUSTOM revents flag for use by applications.
        - add documentation section about priorities.
        - add a glossary to the documentation.
        - extend the ev_fork description slightly.
        - optimize a jump out of call_pending.

3.53 Sun Feb 15 02:38:20 CET 2009
	- fix a bug in event pipe creation on win32 that would cause a
          failed assertion on event loop creation (patch by Malek Hadj-Ali).
	- probe for CLOCK_REALTIME support at runtime as well and fall
          back to gettimeofday if there is an error, to support older
          operating systems with newer header files/libraries.
        - prefer gettimeofday over clock_gettime with USE_CLOCK_SYSCALL
          (default most everywhere), otherwise not.

3.52 Wed Jan  7 21:43:02 CET 2009
	- fix compilation of select backend in fd_set mode when NFDBITS is
          missing (to get it to compile on QNX, reported by Rodrigo Campos).
        - better select-nfds handling when select backend is in fd_set mode.
        - diagnose fd_set overruns when select backend is in fd_set mode.
        - due to a thinko, instead of disabling everything but
          select on the borked OS X platform, everything but select was
          allowed (reported by Emanuele Giaquinta).
        - actually verify that local and remote port are matching in
          libev's socketpair emulation, which makes denial-of-service
          attacks harder (but not impossible - it's windows). Make sure
          it even works under vista, which thinks that getpeer/sockname
          should return fantasy port numbers.
        - include "libev" in all assertion messages for potentially
          clearer diagnostics.
        - event_get_version (libevent compatibility) returned
          a useless string instead of the expected version string
          (patch by W.C.A. Wijngaards).

3.51 Wed Dec 24 23:00:11 CET 2008
        - fix a bug where an inotify watcher was added twice, causing
          freezes on hash collisions (reported and analysed by Graham Leggett).
	- new config symbol, EV_USE_CLOCK_SYSCALL, to make libev use
          a direct syscall - slower, but no dependency on librt et al.
        - assume negative return values != -1 signals success of port_getn
          (http://cvs.epicsol.org/cgi/viewcvs.cgi/epic5/source/newio.c?rev=1.52)
          (no known failure reports, but it doesn't hurt).
        - fork detection in ev_embed now stops and restarts the watcher
          automatically.
        - EXPERIMENTAL: default the method to operator () in ev++.h,
          to make it nicer to use functors (requested by Benedek László).
        - fixed const object callbacks in ev++.h.
        - replaced loop_ref argument of watcher.set (loop) by a direct
          ev_loop * in ev++.h, to avoid clashes with functor patch.
        - do not try to watch the empty string via inotify.
        - inotify watchers could be leaked under certain circumstances.
        - OS X 10.5 is actually even more broken than earlier versions,
          so fall back to select on that piece of garbage.
        - fixed some weirdness in the ev_embed documentation.

3.49 Wed Nov 19 11:26:53 CET 2008
	- ev_stat watchers will now use inotify as a mere hint on
          kernels <2.6.25, or if the filesystem is not in the
          "known to be good" list.
        - better mingw32 compatibility (it's not as borked as native win32)
          (analysed by Roger Pack).
        - include stdio.h in the example program, as too many people are
          confused by the weird C language otherwise. I guess the next thing
          I get told is that the "..." ellipses in the examples don't compile
          with their C compiler.

3.48 Thu Oct 30 09:02:37 CET 2008
	- further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
          backend by assuming the kernel event mask hasn't changed if
          ADD fails with EEXIST.
        - work around spurious event notification bugs in epoll by using
          a 32-bit generation counter. recreate kernel state if we receive
          spurious notifications or unwanted events. this is very costly,
          but I didn't come up with this horrible design.
        - use memset to initialise most arrays now and do away with the
          init functions.
        - expand time-out strategies into a "Be smart about timeouts" section.

libev/Changes  view on Meta::CPAN

        - made integer constants type int in ev.h.

3.2  Wed Apr  2 17:11:19 CEST 2008
	- fix a 64 bit overflow issue in the select backend,
          by using fd_mask instead of int for the mask.
        - rename internal sighandler to avoid clash with very old perls.
        - entering ev_loop will not clear the ONESHOT or NONBLOCKING
          flags of any outer loops anymore.
        - add ev_async_pending.

3.1  Thu Mar 13 13:45:22 CET 2008
	- implement ev_async watchers.
        - only initialise signal pipe on demand.
	- make use of sig_atomic_t configurable.
        - improved documentation.

3.0  Mon Jan 28 13:14:47 CET 2008
	- API/ABI bump to version 3.0.
	- ev++.h includes "ev.h" by default now, not <ev.h>.
	- slightly improved documentation.
	- speed up signal detection after a fork.
        - only optionally return trace status changed in ev_child
          watchers.
        - experimental (and undocumented) loop wrappers for ev++.h.

2.01 Tue Dec 25 08:04:41 CET 2007
	- separate Changes file.
	- fix ev_path_set => ev_stat_set typo.
        - remove event_compat.h from the libev tarball.
        - change how include files are found.
        - doc updates.
        - update licenses, explicitly allow for GPL relicensing.

2.0  Sat Dec 22 17:47:03 CET 2007
        - new ev_sleep, ev_set_(io|timeout)_collect_interval.
        - removed epoll from embeddable fd set.
        - fix embed watchers.
	- renamed ev_embed.loop to other.
	- added exported Symbol tables.
        - undefine member wrapper macros at the end of ev.c.
        - respect EV_H in ev++.h.

1.86 Tue Dec 18 02:36:57 CET 2007
	- fix memleak on loop destroy (not relevant for perl).

1.85 Fri Dec 14 20:32:40 CET 2007
        - fix some aliasing issues w.r.t. timers and periodics
          (not relevant for perl).

(for historic versions refer to EV/Changes, found in the Perl interface)

0.1  Wed Oct 31 21:31:48 CET 2007
	- original version; hacked together in <24h.



( run in 0.794 second using v1.01-cache-2.11-cpan-49f99fa48dc )