xref: /libev/Changes (revision e3a38431)
1*e3a38431SPaul BohmRevision history for libev, a high-performance and full-featured event loop.
2*e3a38431SPaul Bohm
3*e3a38431SPaul Bohm4.04 Wed Feb 16 09:01:51 CET 2011
4*e3a38431SPaul Bohm	- fix two problems in the native win32 backend, where reuse of fd's
5*e3a38431SPaul Bohm          with different underlying handles caused handles not to be removed
6*e3a38431SPaul Bohm          or added to the select set (analyzed and tested by Bert Belder).
7*e3a38431SPaul Bohm	- do no rely on ceil() in ev_e?poll.c.
8*e3a38431SPaul Bohm        - backport libev to HP-UX versions before 11 v3.
9*e3a38431SPaul Bohm        - configure did not detect nanosleep and clock_gettime properly when
10*e3a38431SPaul Bohm          they are available in the libc (as opposed to -lrt).
11*e3a38431SPaul Bohm
12*e3a38431SPaul Bohm4.03 Tue Jan 11 14:37:25 CET 2011
13*e3a38431SPaul Bohm	- officially support polling files with all backends.
14*e3a38431SPaul Bohm	- support files, /dev/zero etc. the same way as select in the epoll
15*e3a38431SPaul Bohm          backend, by generating events on our own.
16*e3a38431SPaul Bohm        - ports backend: work around solaris bug 6874410 and many related ones
17*e3a38431SPaul Bohm          (EINTR, maybe more), with no performance loss (note that the solaris
18*e3a38431SPaul Bohm          bug report is actually wrong, reality is far more bizarre and broken
19*e3a38431SPaul Bohm          than that).
20*e3a38431SPaul Bohm	- define EV_READ/EV_WRITE as macros in event.h, as some programs use
21*e3a38431SPaul Bohm          #ifdef to test for them.
22*e3a38431SPaul Bohm        - new (experimental) function: ev_feed_signal.
23*e3a38431SPaul Bohm        - new (to become default) EVFLAG_NOSIGMASK flag.
24*e3a38431SPaul Bohm        - new EVBACKEND_MASK symbol.
25*e3a38431SPaul Bohm        - updated COMMON IDIOMS SECTION.
26*e3a38431SPaul Bohm
27*e3a38431SPaul Bohm4.01 Fri Nov  5 21:51:29 CET 2010
28*e3a38431SPaul Bohm        - automake fucked it up, apparently, --add-missing -f is not quite enough
29*e3a38431SPaul Bohm          to make it update its files, so 4.00 didn't install ev++.h and
30*e3a38431SPaul Bohm          event.h on make install. grrr.
31*e3a38431SPaul Bohm        - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
32*e3a38431SPaul Bohm        - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
33*e3a38431SPaul Bohm        - use "(libev) " prefix for all libev error messages now.
34*e3a38431SPaul Bohm
35*e3a38431SPaul Bohm4.00 Mon Oct 25 12:32:12 CEST 2010
36*e3a38431SPaul Bohm	- "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended reading.
37*e3a38431SPaul Bohm	- ev_embed_stop did not correctly stop the watcher (very good
38*e3a38431SPaul Bohm          testcase by Vladimir Timofeev).
39*e3a38431SPaul Bohm        - ev_run will now always update the current loop time - it erroneously
40*e3a38431SPaul Bohm          didn't when idle watchers were active, causing timers not to fire.
41*e3a38431SPaul Bohm        - fix a bug where a timeout of zero caused the timer not to fire
42*e3a38431SPaul Bohm          in the libevent emulation (testcase by Péter Szabó).
43*e3a38431SPaul Bohm	- applied win32 fixes by Michael Lenaghan (also James Mansion).
44*e3a38431SPaul Bohm	- replace EV_MINIMAL by EV_FEATURES.
45*e3a38431SPaul Bohm        - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as it
46*e3a38431SPaul Bohm          seems the former is *much* faster than the latter.
47*e3a38431SPaul Bohm        - linux kernel version detection (for inotify bug workarounds)
48*e3a38431SPaul Bohm          did not work properly.
49*e3a38431SPaul Bohm        - reduce the number of spurious wake-ups with the ports backend.
50*e3a38431SPaul Bohm        - remove dependency on sys/queue.h on freebsd (patch by Vanilla Hsu).
51*e3a38431SPaul Bohm        - do async init within ev_async_start, not ev_async_set, which avoids
52*e3a38431SPaul Bohm          an API quirk where the set function must be called in the C++ API
53*e3a38431SPaul Bohm          even when there is nothing to set.
54*e3a38431SPaul Bohm        - add (undocumented) EV_ENABLE when adding events with kqueue,
55*e3a38431SPaul Bohm          this might help with OS X, which seems to need it despite documenting
56*e3a38431SPaul Bohm          not to need it (helpfully pointed out by Tilghman Lesher).
57*e3a38431SPaul Bohm        - do not use poll by default on freebsd, it's broken (what isn't
58*e3a38431SPaul Bohm          on freebsd...).
59*e3a38431SPaul Bohm        - allow to embed epoll on kernels >= 2.6.32.
60*e3a38431SPaul Bohm        - configure now prepends -O3, not appends it, so one can still
61*e3a38431SPaul Bohm          override it.
62*e3a38431SPaul Bohm        - ev.pod: greatly expanded the portability section, added a porting
63*e3a38431SPaul Bohm          section, a description of watcher states and made lots of minor fixes.
64*e3a38431SPaul Bohm        - disable poll backend on AIX, the poll header spams the namespace
65*e3a38431SPaul Bohm          and it's not worth working around dead platforms (reported
66*e3a38431SPaul Bohm          and analyzed by Aivars Kalvans).
67*e3a38431SPaul Bohm        - improve header file compatibility of the standalone eventfd code
68*e3a38431SPaul Bohm          in an obscure case.
69*e3a38431SPaul Bohm        - implement EV_AVOID_STDIO option.
70*e3a38431SPaul Bohm        - do not use sscanf to parse linux version number (smaller, faster,
71*e3a38431SPaul Bohm          no sscanf dependency).
72*e3a38431SPaul Bohm        - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
73*e3a38431SPaul Bohm        - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
74*e3a38431SPaul Bohm        - add section on accept() problems to the manpage.
75*e3a38431SPaul Bohm        - rename EV_TIMEOUT to EV_TIMER.
76*e3a38431SPaul Bohm        - rename ev_loop_count/depth/verify/loop/unloop.
77*e3a38431SPaul Bohm        - remove ev_default_destroy and ev_default_fork.
78*e3a38431SPaul Bohm        - switch to two-digit minor version.
79*e3a38431SPaul Bohm        - work around an apparent gentoo compiler bug.
80*e3a38431SPaul Bohm        - define _DARWIN_UNLIMITED_SELECT. just so.
81*e3a38431SPaul Bohm        - use enum instead of #define for most constants.
82*e3a38431SPaul Bohm        - improve compatibility to older C++ compilers.
83*e3a38431SPaul Bohm        - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have now
84*e3a38431SPaul Bohm          default arguments when compiled as C++.
85*e3a38431SPaul Bohm        - enable automake dependency tracking.
86*e3a38431SPaul Bohm        - ev_loop_new no longer leaks memory when loop creation failed.
87*e3a38431SPaul Bohm        - new ev_cleanup watcher type.
88*e3a38431SPaul Bohm
89*e3a38431SPaul Bohm3.9  Thu Dec 31 07:59:59 CET 2009
90*e3a38431SPaul Bohm	- signalfd is no longer used by default and has to be requested
91*e3a38431SPaul Bohm          explicitly - this means that easy to catch bugs become hard to
92*e3a38431SPaul Bohm          catch race conditions, but the users have spoken.
93*e3a38431SPaul Bohm        - point out the unspecified signal mask in the documentation, and
94*e3a38431SPaul Bohm          that this is a race condition regardless of EV_SIGNALFD.
95*e3a38431SPaul Bohm	- backport inotify code to C89.
96*e3a38431SPaul Bohm        - inotify file descriptors could leak into child processes.
97*e3a38431SPaul Bohm        - ev_stat watchers could keep an errornous extra ref on the loop,
98*e3a38431SPaul Bohm          preventing exit when unregistering all watchers (testcases
99*e3a38431SPaul Bohm          provided by [email protected]).
100*e3a38431SPaul Bohm        - implement EV_WIN32_HANDLE_TO_FD and EV_WIN32_CLOSE_FD configuration
101*e3a38431SPaul Bohm          symbols to make it easier for apps to do their own fd management.
102*e3a38431SPaul Bohm        - support EV_IDLE_ENABLE being disabled in ev++.h
103*e3a38431SPaul Bohm          (patch by Didier Spezia).
104*e3a38431SPaul Bohm        - take advantage of inotify_init1, if available, to set cloexec/nonblock
105*e3a38431SPaul Bohm          on fd creation, to avoid races.
106*e3a38431SPaul Bohm        - the signal handling pipe wasn't always initialised under windows
107*e3a38431SPaul Bohm          (analysed by lekma).
108*e3a38431SPaul Bohm        - changed minimum glibc requirement from glibc 2.9 to 2.7, for
109*e3a38431SPaul Bohm          signalfd.
110*e3a38431SPaul Bohm        - add missing string.h include (Denis F. Latypoff).
111*e3a38431SPaul Bohm        - only replace ev_stat.prev when we detect an actual difference,
112*e3a38431SPaul Bohm          so prev is (almost) always different to attr. this might
113*e3a38431SPaul Bohm          have caused the problems with 04_stat.t.
114*e3a38431SPaul Bohm        - add ev::timer->remaining () method to C++ API.
115*e3a38431SPaul Bohm
116*e3a38431SPaul Bohm3.8  Sun Aug  9 14:30:45 CEST 2009
117*e3a38431SPaul Bohm	- incompatible change: do not necessarily reset signal handler
118*e3a38431SPaul Bohm          to SIG_DFL when a sighandler is stopped.
119*e3a38431SPaul Bohm        - ev_default_destroy did not properly free or zero some members,
120*e3a38431SPaul Bohm          potentially causing crashes and memory corruption on repeated
121*e3a38431SPaul Bohm          ev_default_destroy/ev_default_loop calls.
122*e3a38431SPaul Bohm	- take advantage of signalfd on GNU/Linux systems.
123*e3a38431SPaul Bohm	- document that the signal mask might be in an unspecified
124*e3a38431SPaul Bohm          state when using libev's signal handling.
125*e3a38431SPaul Bohm        - take advantage of some GNU/Linux calls to set cloexec/nonblock
126*e3a38431SPaul Bohm          on fd creation, to avoid race conditions.
127*e3a38431SPaul Bohm
128*e3a38431SPaul Bohm3.7  Fri Jul 17 16:36:32 CEST 2009
129*e3a38431SPaul Bohm	- ev_unloop and ev_loop wrongly used a global variable to exit loops,
130*e3a38431SPaul Bohm          instead of using a per-loop variable (bug caught by accident...).
131*e3a38431SPaul Bohm	- the ev_set_io_collect_interval interpretation has changed.
132*e3a38431SPaul Bohm        - add new functionality: ev_set_userdata, ev_userdata,
133*e3a38431SPaul Bohm          ev_set_invoke_pending_cb, ev_set_loop_release_cb,
134*e3a38431SPaul Bohm          ev_invoke_pending, ev_pending_count, together with a long example
135*e3a38431SPaul Bohm          about thread locking.
136*e3a38431SPaul Bohm        - add ev_timer_remaining (as requested by Denis F. Latypoff).
137*e3a38431SPaul Bohm        - add ev_loop_depth.
138*e3a38431SPaul Bohm        - calling ev_unloop in fork/prepare watchers will no longer poll
139*e3a38431SPaul Bohm          for new events.
140*e3a38431SPaul Bohm	- Denis F. Latypoff corrected many typos in example code snippets.
141*e3a38431SPaul Bohm        - honor autoconf detection of EV_USE_CLOCK_SYSCALL, also double-
142*e3a38431SPaul Bohm          check that the syscall number is available before trying to
143*e3a38431SPaul Bohm          use it (reported by ry@tinyclouds).
144*e3a38431SPaul Bohm        - use GetSystemTimeAsFileTime instead of _timeb on windows, for
145*e3a38431SPaul Bohm          slightly higher accuracy.
146*e3a38431SPaul Bohm        - properly declare ev_loop_verify and ev_now_update even when
147*e3a38431SPaul Bohm          !EV_MULTIPLICITY.
148*e3a38431SPaul Bohm        - do not compile in any priority code when EV_MAXPRI == EV_MINPRI.
149*e3a38431SPaul Bohm        - support EV_MINIMAL==2 for a reduced API.
150*e3a38431SPaul Bohm        - actually 0-initialise struct sigaction when installing signals.
151*e3a38431SPaul Bohm        - add section on hibernate and stopped processes to ev_timer docs.
152*e3a38431SPaul Bohm
153*e3a38431SPaul Bohm3.6  Tue Apr 28 02:49:30 CEST 2009
154*e3a38431SPaul Bohm	- multiple timers becoming ready within an event loop iteration
155*e3a38431SPaul Bohm          will be invoked in the "correct" order now.
156*e3a38431SPaul Bohm	- do not leave the event loop early just because we have no active
157*e3a38431SPaul Bohm          watchers, fixing a problem when embedding a kqueue loop
158*e3a38431SPaul Bohm          that has active kernel events but no registered watchers
159*e3a38431SPaul Bohm          (reported by blacksand blacksand).
160*e3a38431SPaul Bohm	- correctly zero the idx values for arrays, so destroying and
161*e3a38431SPaul Bohm          reinitialising the default loop actually works (patch by
162*e3a38431SPaul Bohm          Malek Hadj-Ali).
163*e3a38431SPaul Bohm        - implement ev_suspend and ev_resume.
164*e3a38431SPaul Bohm        - new EV_CUSTOM revents flag for use by applications.
165*e3a38431SPaul Bohm        - add documentation section about priorites.
166*e3a38431SPaul Bohm        - add a glossary to the dcoumentation.
167*e3a38431SPaul Bohm        - extend the ev_fork description slightly.
168*e3a38431SPaul Bohm        - optimize a jump out of call_pending.
169*e3a38431SPaul Bohm
170*e3a38431SPaul Bohm3.53 Sun Feb 15 02:38:20 CET 2009
171*e3a38431SPaul Bohm	- fix a bug in event pipe creation on win32 that would cause a
172*e3a38431SPaul Bohm          failed assertion on event loop creation (patch by Malek Hadj-Ali).
173*e3a38431SPaul Bohm	- probe for CLOCK_REALTIME support at runtime as well and fall
174*e3a38431SPaul Bohm          back to gettimeofday if there is an error, to support older
175*e3a38431SPaul Bohm          operating systems with newer header files/libraries.
176*e3a38431SPaul Bohm        - prefer gettimeofday over clock_gettime with USE_CLOCK_SYSCALL
177*e3a38431SPaul Bohm          (default most everywhere), otherwise not.
178*e3a38431SPaul Bohm
179*e3a38431SPaul Bohm3.52 Wed Jan  7 21:43:02 CET 2009
180*e3a38431SPaul Bohm	- fix compilation of select backend in fd_set mode when NFDBITS is
181*e3a38431SPaul Bohm          missing (to get it to compile on QNX, reported by Rodrigo Campos).
182*e3a38431SPaul Bohm        - better select-nfds handling when select backend is in fd_set mode.
183*e3a38431SPaul Bohm        - diagnose fd_set overruns when select backend is in fd_set mode.
184*e3a38431SPaul Bohm        - due to a thinko, instead of disabling everything but
185*e3a38431SPaul Bohm          select on the borked OS X platform, everything but select was
186*e3a38431SPaul Bohm          allowed (reported by Emanuele Giaquinta).
187*e3a38431SPaul Bohm        - actually verify that local and remote port are matching in
188*e3a38431SPaul Bohm          libev's socketpair emulation, which makes denial-of-service
189*e3a38431SPaul Bohm          attacks harder (but not impossible - it's windows). Make sure
190*e3a38431SPaul Bohm          it even works under vista, which thinks that getpeer/sockname
191*e3a38431SPaul Bohm          should return fantasy port numbers.
192*e3a38431SPaul Bohm        - include "libev" in all assertion messages for potentially
193*e3a38431SPaul Bohm          clearer diagnostics.
194*e3a38431SPaul Bohm        - event_get_version (libevent compatibility) returned
195*e3a38431SPaul Bohm          a useless string instead of the expected version string
196*e3a38431SPaul Bohm          (patch by W.C.A. Wijngaards).
197*e3a38431SPaul Bohm
198*e3a38431SPaul Bohm3.51 Wed Dec 24 23:00:11 CET 2008
199*e3a38431SPaul Bohm        - fix a bug where an inotify watcher was added twice, causing
200*e3a38431SPaul Bohm          freezes on hash collisions (reported and analysed by Graham Leggett).
201*e3a38431SPaul Bohm	- new config symbol, EV_USE_CLOCK_SYSCALL, to make libev use
202*e3a38431SPaul Bohm          a direct syscall - slower, but no dependency on librt et al.
203*e3a38431SPaul Bohm        - assume negative return values != -1 signals success of port_getn
204*e3a38431SPaul Bohm          (http://cvs.epicsol.org/cgi/viewcvs.cgi/epic5/source/newio.c?rev=1.52)
205*e3a38431SPaul Bohm          (no known failure reports, but it doesn't hurt).
206*e3a38431SPaul Bohm        - fork detection in ev_embed now stops and restarts the watcher
207*e3a38431SPaul Bohm          automatically.
208*e3a38431SPaul Bohm        - EXPERIMENTAL: default the method to operator () in ev++.h,
209*e3a38431SPaul Bohm          to make it nicer to use functors (requested by Benedek László).
210*e3a38431SPaul Bohm        - fixed const object callbacks in ev++.h.
211*e3a38431SPaul Bohm        - replaced loop_ref argument of watcher.set (loop) by a direct
212*e3a38431SPaul Bohm          ev_loop * in ev++.h, to avoid clashes with functor patch.
213*e3a38431SPaul Bohm        - do not try to watch the empty string via inotify.
214*e3a38431SPaul Bohm        - inotify watchers could be leaked under certain circumstances.
215*e3a38431SPaul Bohm        - OS X 10.5 is actually even more broken than earlier versions,
216*e3a38431SPaul Bohm          so fall back to select on that piece of garbage.
217*e3a38431SPaul Bohm        - fixed some weirdness in the ev_embed documentation.
218*e3a38431SPaul Bohm
219*e3a38431SPaul Bohm3.49 Wed Nov 19 11:26:53 CET 2008
220*e3a38431SPaul Bohm	- ev_stat watchers will now use inotify as a mere hint on
221*e3a38431SPaul Bohm          kernels <2.6.25, or if the filesystem is not in the
222*e3a38431SPaul Bohm          "known to be good" list.
223*e3a38431SPaul Bohm        - better mingw32 compatibility (it's not as borked as native win32)
224*e3a38431SPaul Bohm          (analysed by Roger Pack).
225*e3a38431SPaul Bohm        - include stdio.h in the example program, as too many people are
226*e3a38431SPaul Bohm          confused by the weird C language otherwise. I guess the next thing
227*e3a38431SPaul Bohm          I get told is that the "..." ellipses in the examples don't compile
228*e3a38431SPaul Bohm          with their C compiler.
229*e3a38431SPaul Bohm
230*e3a38431SPaul Bohm3.48 Thu Oct 30 09:02:37 CET 2008
231*e3a38431SPaul Bohm	- further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
232*e3a38431SPaul Bohm          backend by assuming the kernel event mask hasn't changed if
233*e3a38431SPaul Bohm          ADD fails with EEXIST.
234*e3a38431SPaul Bohm        - work around spurious event notification bugs in epoll by using
235*e3a38431SPaul Bohm          a 32-bit generation counter. recreate kernel state if we receive
236*e3a38431SPaul Bohm          spurious notifications or unwanted events. this is very costly,
237*e3a38431SPaul Bohm          but I didn't come up with this horrible design.
238*e3a38431SPaul Bohm        - use memset to initialise most arrays now and do away with the
239*e3a38431SPaul Bohm          init functions.
240*e3a38431SPaul Bohm        - expand time-out strategies into a "Be smart about timeouts" section.
241*e3a38431SPaul Bohm        - drop the "struct" from all ev_watcher declarations in the
242*e3a38431SPaul Bohm          documentation and did other clarifications (yeah, it was a mistake
243*e3a38431SPaul Bohm          to have a struct AND a function called ev_loop).
244*e3a38431SPaul Bohm	- fix a bug where ev_default would not initialise the default
245*e3a38431SPaul Bohm          loop again after it was destroyed with ev_default_destroy.
246*e3a38431SPaul Bohm        - rename syserr to ev_syserr to avoid name clashes when embedding,
247*e3a38431SPaul Bohm          do similar changes for event.c.
248*e3a38431SPaul Bohm
249*e3a38431SPaul Bohm3.45 Tue Oct 21 21:59:26 CEST 2008
250*e3a38431SPaul Bohm	- disable inotify usage on linux <2.6.25, as it is broken
251*e3a38431SPaul Bohm          (reported by Yoann Vandoorselaere).
252*e3a38431SPaul Bohm        - ev_stat erroneously would try to add inotify watchers
253*e3a38431SPaul Bohm          even when inotify wasn't available (this should only
254*e3a38431SPaul Bohm          have a performance impact).
255*e3a38431SPaul Bohm	- ev_once now passes both timeout and io to the callback if both
256*e3a38431SPaul Bohm          occur concurrently, instead of giving timeouts precedence.
257*e3a38431SPaul Bohm	- disable EV_USE_INOTIFY when sys/inotify.h is too old.
258*e3a38431SPaul Bohm
259*e3a38431SPaul Bohm3.44 Mon Sep 29 05:18:39 CEST 2008
260*e3a38431SPaul Bohm	- embed watchers now automatically invoke ev_loop_fork on the
261*e3a38431SPaul Bohm          embedded loop when the parent loop forks.
262*e3a38431SPaul Bohm	- new function: ev_now_update (loop).
263*e3a38431SPaul Bohm	- verify_watcher was not marked static.
264*e3a38431SPaul Bohm        - improve the "associating..." manpage section.
265*e3a38431SPaul Bohm        - documentation tweaks here and there.
266*e3a38431SPaul Bohm
267*e3a38431SPaul Bohm3.43 Sun Jul  6 05:34:41 CEST 2008
268*e3a38431SPaul Bohm	- include more include files on windows to get struct _stati64
269*e3a38431SPaul Bohm          (reported by Chris Hulbert, but doesn't quite fix his issue).
270*e3a38431SPaul Bohm	- add missing #include <io.h> in ev.c on windows (reported by
271*e3a38431SPaul Bohm          Matt Tolton).
272*e3a38431SPaul Bohm
273*e3a38431SPaul Bohm3.42 Tue Jun 17 12:12:07 CEST 2008
274*e3a38431SPaul Bohm	- work around yet another windows bug: FD_SET actually adds fd's
275*e3a38431SPaul Bohm          multiple times to the fd_*SET*, despite official MSN docs claiming
276*e3a38431SPaul Bohm          otherwise. Reported and well-analysed by Matt Tolton.
277*e3a38431SPaul Bohm	- define NFDBITS to 0 when EV_SELECT_IS_WINSOCKET to make it compile
278*e3a38431SPaul Bohm          (reported any analysed by Chris Hulbert).
279*e3a38431SPaul Bohm        - fix a bug in ev_ebadf (this function is only used to catch
280*e3a38431SPaul Bohm          programming errors in the libev user). reported by Matt Tolton.
281*e3a38431SPaul Bohm        - fix a bug in fd_intern on win32 (could lead to compile errors
282*e3a38431SPaul Bohm          under some circumstances, but would work correctly if it compiles).
283*e3a38431SPaul Bohm          reported by Matt Tolton.
284*e3a38431SPaul Bohm        - (try to) work around missing lstat on windows.
285*e3a38431SPaul Bohm	- pass in the write fd set as except fd set under windows. windows
286*e3a38431SPaul Bohm          is so uncontrollably lame that it requires this. this means that
287*e3a38431SPaul Bohm          switching off oobinline is not supported (but tcp/ip doesn't
288*e3a38431SPaul Bohm          have oob, so that would be stupid anyways.
289*e3a38431SPaul Bohm        - use posix module symbol to auto-detect monotonic clock presence
290*e3a38431SPaul Bohm          and some other default values.
291*e3a38431SPaul Bohm
292*e3a38431SPaul Bohm3.41 Fri May 23 18:42:54 CEST 2008
293*e3a38431SPaul Bohm	- work around an obscure bug in winsocket select: if you
294*e3a38431SPaul Bohm          provide only empty fd sets then select returns WSAEINVAL. how sucky.
295*e3a38431SPaul Bohm        - improve timer scheduling stability and reduce use of time_epsilon.
296*e3a38431SPaul Bohm        - use 1-based 2-heap for EV_MINIMAL, simplifies code, reduces
297*e3a38431SPaul Bohm          codesize and makes for better cache-efficiency.
298*e3a38431SPaul Bohm        - use 3-based 4-heap for !EV_MINIMAL. this makes better use
299*e3a38431SPaul Bohm          of cpu cache lines and gives better growth behaviour than
300*e3a38431SPaul Bohm          2-based heaps.
301*e3a38431SPaul Bohm        - cache timestamp within heap for !EV_MINIMAL, to avoid random
302*e3a38431SPaul Bohm          memory accesses.
303*e3a38431SPaul Bohm        - document/add EV_USE_4HEAP and EV_HEAP_CACHE_AT.
304*e3a38431SPaul Bohm        - fix a potential aliasing issue in ev_timer_again.
305*e3a38431SPaul Bohm        - add/document ev_periodic_at, retract direct access to ->at.
306*e3a38431SPaul Bohm        - improve ev_stat docs.
307*e3a38431SPaul Bohm        - add portability requirements section.
308*e3a38431SPaul Bohm	- fix manpage headers etc.
309*e3a38431SPaul Bohm        - normalise WSA error codes to lower range on windows.
310*e3a38431SPaul Bohm        - add consistency check code that can be called automatically
311*e3a38431SPaul Bohm          or on demand to check for internal structures (ev_loop_verify).
312*e3a38431SPaul Bohm
313*e3a38431SPaul Bohm3.31 Wed Apr 16 20:45:04 CEST 2008
314*e3a38431SPaul Bohm	- added last minute fix for ev_poll.c by Brandon Black.
315*e3a38431SPaul Bohm
316*e3a38431SPaul Bohm3.3  Wed Apr 16 19:04:10 CEST 2008
317*e3a38431SPaul Bohm        - event_base_loopexit should return 0 on success
318*e3a38431SPaul Bohm          (W.C.A. Wijngaards).
319*e3a38431SPaul Bohm	- added linux eventfd support.
320*e3a38431SPaul Bohm        - try to autodetect epoll and inotify support
321*e3a38431SPaul Bohm          by libc header version if not using autoconf.
322*e3a38431SPaul Bohm        - new symbols: EV_DEFAULT_UC and EV_DEFAULT_UC_.
323*e3a38431SPaul Bohm        - declare functions defined in ev.h as inline if
324*e3a38431SPaul Bohm          C99 or gcc are available.
325*e3a38431SPaul Bohm        - enable inlining with gcc versions 2 and 3.
326*e3a38431SPaul Bohm        - work around broken poll implementations potentially
327*e3a38431SPaul Bohm          not clearing revents field in ev_poll (Brandon Black)
328*e3a38431SPaul Bohm          (no such systems are known at this time).
329*e3a38431SPaul Bohm        - work around a bug in realloc on openbsd and darwin,
330*e3a38431SPaul Bohm          also makes the erroneous valgrind complaints
331*e3a38431SPaul Bohm          go away (noted by various people).
332*e3a38431SPaul Bohm        - fix ev_async_pending, add c++ wrapper for ev_async
333*e3a38431SPaul Bohm          (based on patch sent by Johannes Deisenhofer).
334*e3a38431SPaul Bohm        - add sensible set method to ev::embed.
335*e3a38431SPaul Bohm        - made integer constants type int in ev.h.
336*e3a38431SPaul Bohm
337*e3a38431SPaul Bohm3.2  Wed Apr  2 17:11:19 CEST 2008
338*e3a38431SPaul Bohm	- fix a 64 bit overflow issue in the select backend,
339*e3a38431SPaul Bohm          by using fd_mask instead of int for the mask.
340*e3a38431SPaul Bohm        - rename internal sighandler to avoid clash with very old perls.
341*e3a38431SPaul Bohm        - entering ev_loop will not clear the ONESHOT or NONBLOCKING
342*e3a38431SPaul Bohm          flags of any outer loops anymore.
343*e3a38431SPaul Bohm        - add ev_async_pending.
344*e3a38431SPaul Bohm
345*e3a38431SPaul Bohm3.1  Thu Mar 13 13:45:22 CET 2008
346*e3a38431SPaul Bohm	- implement ev_async watchers.
347*e3a38431SPaul Bohm        - only initialise signal pipe on demand.
348*e3a38431SPaul Bohm	- make use of sig_atomic_t configurable.
349*e3a38431SPaul Bohm        - improved documentation.
350*e3a38431SPaul Bohm
351*e3a38431SPaul Bohm3.0  Mon Jan 28 13:14:47 CET 2008
352*e3a38431SPaul Bohm	- API/ABI bump to version 3.0.
353*e3a38431SPaul Bohm	- ev++.h includes "ev.h" by default now, not <ev.h>.
354*e3a38431SPaul Bohm	- slightly improved documentation.
355*e3a38431SPaul Bohm	- speed up signal detection after a fork.
356*e3a38431SPaul Bohm        - only optionally return trace status changed in ev_child
357*e3a38431SPaul Bohm          watchers.
358*e3a38431SPaul Bohm        - experimental (and undocumented) loop wrappers for ev++.h.
359*e3a38431SPaul Bohm
360*e3a38431SPaul Bohm2.01 Tue Dec 25 08:04:41 CET 2007
361*e3a38431SPaul Bohm	- separate Changes file.
362*e3a38431SPaul Bohm	- fix ev_path_set => ev_stat_set typo.
363*e3a38431SPaul Bohm        - remove event_compat.h from the libev tarball.
364*e3a38431SPaul Bohm        - change how include files are found.
365*e3a38431SPaul Bohm        - doc updates.
366*e3a38431SPaul Bohm        - update licenses, explicitly allow for GPL relicensing.
367*e3a38431SPaul Bohm
368*e3a38431SPaul Bohm2.0  Sat Dec 22 17:47:03 CET 2007
369*e3a38431SPaul Bohm        - new ev_sleep, ev_set_(io|timeout)_collect_interval.
370*e3a38431SPaul Bohm        - removed epoll from embeddable fd set.
371*e3a38431SPaul Bohm        - fix embed watchers.
372*e3a38431SPaul Bohm	- renamed ev_embed.loop to other.
373*e3a38431SPaul Bohm	- added exported Symbol tables.
374*e3a38431SPaul Bohm        - undefine member wrapper macros at the end of ev.c.
375*e3a38431SPaul Bohm        - respect EV_H in ev++.h.
376*e3a38431SPaul Bohm
377*e3a38431SPaul Bohm1.86 Tue Dec 18 02:36:57 CET 2007
378*e3a38431SPaul Bohm	- fix memleak on loop destroy (not relevant for perl).
379*e3a38431SPaul Bohm
380*e3a38431SPaul Bohm1.85 Fri Dec 14 20:32:40 CET 2007
381*e3a38431SPaul Bohm        - fix some aliasing issues w.r.t. timers and periodics
382*e3a38431SPaul Bohm          (not relevant for perl).
383*e3a38431SPaul Bohm
384*e3a38431SPaul Bohm(for historic versions refer to EV/Changes, found in the Perl interface)
385*e3a38431SPaul Bohm
386*e3a38431SPaul Bohm0.1  Wed Oct 31 21:31:48 CET 2007
387*e3a38431SPaul Bohm	- original version; hacked together in <24h.
388*e3a38431SPaul Bohm
389