xref: /libev/Changes (revision 93823e6c)
1e3a38431SPaul BohmRevision history for libev, a high-performance and full-featured event loop.
2e3a38431SPaul Bohm
3*93823e6cSPaul BohmTODO: ev_loop_wakeup
4*93823e6cSPaul BohmTODO: EV_STANDALONE == NO_HASSEL (do not use clock_gettime in ev_standalone)
5*93823e6cSPaul BohmTODO: faq, process a thing in each iteration
6*93823e6cSPaul BohmTODO: dbeugging tips, ev_verify, ev_init twice
7*93823e6cSPaul BohmTODO: ev_break for immediate exit (EVBREAK_NOW?)
8*93823e6cSPaul BohmTODO: ev_feed_child_event
9*93823e6cSPaul BohmTODO: document the special problem of signals around fork.
10*93823e6cSPaul BohmTODO: store pid for each signal
11*93823e6cSPaul BohmTODO: document file descriptor usage per loop
12*93823e6cSPaul BohmTODO: store loop pid_t and compare isndie signal handler,store 1 for same, 2 for differign pid, clean up in loop_fork
13*93823e6cSPaul BohmTODO: embed watchers need updating when fd changes
14*93823e6cSPaul BohmTODO: document portability requirements for atomic pointer access
15*93823e6cSPaul BohmTODO: document requirements for function pointers and calling conventions.
16*93823e6cSPaul Bohm
17*93823e6cSPaul Bohm4.22 Sun Dec 20 22:11:50 CET 2015
18*93823e6cSPaul Bohm	- when epoll detects unremovable fds in the fd set, rebuild
19*93823e6cSPaul Bohm          only the epoll descriptor, not the signal pipe, to avoid
20*93823e6cSPaul Bohm          SIGPIPE in ev_async_send. This doesn't solve it on fork,
21*93823e6cSPaul Bohm          so document what needs to be done in ev_loop_fork
22*93823e6cSPaul Bohm          (analyzed by Benjamin Mahler).
23*93823e6cSPaul Bohm	- remove superfluous sys/timeb.h include on win32
24*93823e6cSPaul Bohm          (analyzed by Jason Madden).
25*93823e6cSPaul Bohm        - updated libecb.
26*93823e6cSPaul Bohm
27*93823e6cSPaul Bohm4.20 Sat Jun 20 13:01:43 CEST 2015
28*93823e6cSPaul Bohm	- prefer noexcept over throw () with C++ 11.
29*93823e6cSPaul Bohm        - update ecb.h due to incompatibilities with c11.
30*93823e6cSPaul Bohm        - fix a potential aliasing issue when reading and writing
31*93823e6cSPaul Bohm          watcher callbacks.
32*93823e6cSPaul Bohm
33*93823e6cSPaul Bohm4.19 Thu Sep 25 08:18:25 CEST 2014
34*93823e6cSPaul Bohm	- ev.h wasn't valid C++ anymore, which tripped compilers other than
35*93823e6cSPaul Bohm          clang, msvc or gcc (analyzed by Raphael 'kena' Poss). Unfortunately,
36*93823e6cSPaul Bohm          C++ doesn't support typedefs for function pointers fully, so the affected
37*93823e6cSPaul Bohm          declarations have to spell out the types each time.
38*93823e6cSPaul Bohm	- when not using autoconf, tighten the check for clock_gettime and related
39*93823e6cSPaul Bohm          functionality.
40*93823e6cSPaul Bohm
41*93823e6cSPaul Bohm4.18 Fri Sep  5 17:55:26 CEST 2014
42*93823e6cSPaul Bohm	- events on files were not always generated properly with the
43*93823e6cSPaul Bohm          epoll backend (testcase by Assaf Inbal).
44*93823e6cSPaul Bohm	- mark event pipe fd as cloexec after a fork (analyzed by Sami Farin).
45*93823e6cSPaul Bohm        - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
46*93823e6cSPaul Bohm        - use a reasonable fallback for EV_NSIG instead of erroring out
47*93823e6cSPaul Bohm          when we can't detect the signal set size.
48*93823e6cSPaul Bohm        - in the absence of autoconf, do not use the clock syscall
49*93823e6cSPaul Bohm          on glibc >= 2.17 (avoids the syscall AND -lrt on systems
50*93823e6cSPaul Bohm          doing clock_gettime in userspace).
51*93823e6cSPaul Bohm        - ensure extern "C" function pointers are used for externally-visible
52*93823e6cSPaul Bohm          loop callbacks (not watcher callbacks yet).
53*93823e6cSPaul Bohm        - (ecb) work around memory barriers and volatile apparently both being
54*93823e6cSPaul Bohm          broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).
55*93823e6cSPaul Bohm
56*93823e6cSPaul Bohm4.15 Fri Mar  1 12:04:50 CET 2013
57*93823e6cSPaul Bohm        - destroying a non-default loop would stop the global waitpid
58*93823e6cSPaul Bohm          watcher (Denis Bilenko).
59*93823e6cSPaul Bohm	- queueing pending watchers of higher priority from a watcher now invokes
60*93823e6cSPaul Bohm          them in a timely fashion (reported by Denis Bilenko).
61*93823e6cSPaul Bohm	- add throw() to all libev functions that cannot throw exceptions, for
62*93823e6cSPaul Bohm          further code size decrease when compiling for C++.
63*93823e6cSPaul Bohm        - add throw () to callbacks that must not throw exceptions (allocator,
64*93823e6cSPaul Bohm          syserr, loop acquire/release, periodic reschedule cbs).
65*93823e6cSPaul Bohm	- fix event_base_loop return code, add event_get_callback, event_base_new,
66*93823e6cSPaul Bohm          event_base_get_method calls to improve libevent 1.x emulation and add
67*93823e6cSPaul Bohm          some libevent 2.x functionality (based on a patch by Jeff Davey).
68*93823e6cSPaul Bohm        - add more memory fences to fix a bug reported by Jeff Davey. Better
69*93823e6cSPaul Bohm          be overfenced than underprotected.
70*93823e6cSPaul Bohm	- ev_run now returns a boolean status (true meaning watchers are
71*93823e6cSPaul Bohm          still active).
72*93823e6cSPaul Bohm	- ev_once: undef EV_ERROR in ev_kqueue.c, to avoid clashing with
73*93823e6cSPaul Bohm          libev's EV_ERROR (reported by 191919).
74*93823e6cSPaul Bohm	- (ecb) add memory fence support for xlC (Darin McBride).
75*93823e6cSPaul Bohm	- (ecb) add memory fence support for gcc-mips (Anton Kirilov).
76*93823e6cSPaul Bohm	- (ecb) add memory fence support for gcc-alpha (Christian Weisgerber).
77*93823e6cSPaul Bohm        - work around some kernels losing file descriptors by leaking
78*93823e6cSPaul Bohm          the kqueue descriptor in the child.
79*93823e6cSPaul Bohm        - work around linux inotify not reporting IN_ATTRIB changes for directories
80*93823e6cSPaul Bohm          in many cases.
81*93823e6cSPaul Bohm        - include sys/syscall.h instead of plain syscall.h.
82*93823e6cSPaul Bohm        - check for io watcher loops in ev_verify, check for the most
83*93823e6cSPaul Bohm          common reported usage bug in ev_io_start.
84*93823e6cSPaul Bohm        - choose socket vs. WSASocket at compiletime using EV_USE_WSASOCKET.
85*93823e6cSPaul Bohm        - always use WSASend/WSARecv directly on windows, hoping that this
86*93823e6cSPaul Bohm          works in all cases (unlike read/write/send/recv...).
87*93823e6cSPaul Bohm        - try to detect signals around a fork faster (test program by
88*93823e6cSPaul Bohm          Denis Bilenko).
89*93823e6cSPaul Bohm        - work around recent glibc versions that leak memory in realloc.
90*93823e6cSPaul Bohm        - rename ev::embed::set to ev::embed::set_embed to avoid clashing
91*93823e6cSPaul Bohm          the watcher base set (loop) method.
92*93823e6cSPaul Bohm        - rewrite the async/signal pipe logic to always keep a valid fd, which
93*93823e6cSPaul Bohm          simplifies (and hopefully correctifies :) the race checking
94*93823e6cSPaul Bohm          on fork, at the cost of one extra fd.
95*93823e6cSPaul Bohm        - add fat, msdos, jffs2, ramfs, ntfs and btrfs to the list of
96*93823e6cSPaul Bohm          inotify-supporting filesystems.
97*93823e6cSPaul Bohm        - move orig_CFLAGS assignment to after AC_INIT, as newer autoconf
98*93823e6cSPaul Bohm          versions ignore it before
99*93823e6cSPaul Bohm          (https://bugzilla.redhat.com/show_bug.cgi?id=908096).
100*93823e6cSPaul Bohm        - add some untested android support.
101*93823e6cSPaul Bohm        - enum expressions must be of type int (reported by Juan Pablo L).
102*93823e6cSPaul Bohm
103*93823e6cSPaul Bohm4.11 Sat Feb  4 19:52:39 CET 2012
104*93823e6cSPaul Bohm	- INCOMPATIBLE CHANGE: ev_timer_again now clears the pending status, as
105*93823e6cSPaul Bohm          was documented already, but not implemented in the repeating case.
106*93823e6cSPaul Bohm        - new compiletime symbols: EV_NO_SMP and EV_NO_THREADS.
107*93823e6cSPaul Bohm	- fix a race where the workaround against the epoll fork bugs
108*93823e6cSPaul Bohm          caused signals to not be handled anymore.
109*93823e6cSPaul Bohm	- correct backend_fudge for most backends, and implement a windows
110*93823e6cSPaul Bohm          specific workaround to avoid looping because we call both
111*93823e6cSPaul Bohm          select and Sleep, both with different time resolutions.
112*93823e6cSPaul Bohm        - document range and guarantees of ev_sleep.
113*93823e6cSPaul Bohm        - document reasonable ranges for periodics interval and offset.
114*93823e6cSPaul Bohm        - rename backend_fudge to backend_mintime to avoid future confusion :)
115*93823e6cSPaul Bohm	- change the default periodic reschedule function to hopefully be more
116*93823e6cSPaul Bohm          exact and correct even in corner cases or in the far future.
117*93823e6cSPaul Bohm        - do not rely on -lm anymore: use it when available but use our
118*93823e6cSPaul Bohm          own floor () if it is missing. This should make it easier to embed,
119*93823e6cSPaul Bohm          as no external libraries are required.
120*93823e6cSPaul Bohm        - strategically import macros from libecb and mark rarely-used functions
121*93823e6cSPaul Bohm          as cache-cold (saving almost 2k code size on typical amd64 setups).
122*93823e6cSPaul Bohm        - add Symbols.ev and Symbols.event files, that were missing.
123*93823e6cSPaul Bohm        - fix backend_mintime value for epoll (was 1/1024, is 1/1000 now).
124*93823e6cSPaul Bohm        - fix #3 "be smart about timeouts" to not "deadlock" when
125*93823e6cSPaul Bohm          timeout == now, also improve the section overall.
126*93823e6cSPaul Bohm        - avoid "AVOIDING FINISHING BEFORE RETURNING" idiom.
127*93823e6cSPaul Bohm        - support new EV_API_STATIC mode to make all libev symbols
128*93823e6cSPaul Bohm          static.
129*93823e6cSPaul Bohm        - supply default CFLAGS of -g -O3 with gcc when original CFLAGS
130*93823e6cSPaul Bohm          were empty.
131*93823e6cSPaul Bohm
132e3a38431SPaul Bohm4.04 Wed Feb 16 09:01:51 CET 2011
133e3a38431SPaul Bohm	- fix two problems in the native win32 backend, where reuse of fd's
134e3a38431SPaul Bohm          with different underlying handles caused handles not to be removed
135e3a38431SPaul Bohm          or added to the select set (analyzed and tested by Bert Belder).
136e3a38431SPaul Bohm	- do no rely on ceil() in ev_e?poll.c.
137e3a38431SPaul Bohm        - backport libev to HP-UX versions before 11 v3.
138e3a38431SPaul Bohm        - configure did not detect nanosleep and clock_gettime properly when
139e3a38431SPaul Bohm          they are available in the libc (as opposed to -lrt).
140e3a38431SPaul Bohm
141e3a38431SPaul Bohm4.03 Tue Jan 11 14:37:25 CET 2011
142e3a38431SPaul Bohm	- officially support polling files with all backends.
143e3a38431SPaul Bohm	- support files, /dev/zero etc. the same way as select in the epoll
144e3a38431SPaul Bohm          backend, by generating events on our own.
145e3a38431SPaul Bohm        - ports backend: work around solaris bug 6874410 and many related ones
146e3a38431SPaul Bohm          (EINTR, maybe more), with no performance loss (note that the solaris
147e3a38431SPaul Bohm          bug report is actually wrong, reality is far more bizarre and broken
148e3a38431SPaul Bohm          than that).
149e3a38431SPaul Bohm	- define EV_READ/EV_WRITE as macros in event.h, as some programs use
150e3a38431SPaul Bohm          #ifdef to test for them.
151e3a38431SPaul Bohm        - new (experimental) function: ev_feed_signal.
152e3a38431SPaul Bohm        - new (to become default) EVFLAG_NOSIGMASK flag.
153e3a38431SPaul Bohm        - new EVBACKEND_MASK symbol.
154e3a38431SPaul Bohm        - updated COMMON IDIOMS SECTION.
155e3a38431SPaul Bohm
156e3a38431SPaul Bohm4.01 Fri Nov  5 21:51:29 CET 2010
157e3a38431SPaul Bohm        - automake fucked it up, apparently, --add-missing -f is not quite enough
158e3a38431SPaul Bohm          to make it update its files, so 4.00 didn't install ev++.h and
159e3a38431SPaul Bohm          event.h on make install. grrr.
160e3a38431SPaul Bohm        - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
161e3a38431SPaul Bohm        - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
162e3a38431SPaul Bohm        - use "(libev) " prefix for all libev error messages now.
163e3a38431SPaul Bohm
164e3a38431SPaul Bohm4.00 Mon Oct 25 12:32:12 CEST 2010
165e3a38431SPaul Bohm	- "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended reading.
166e3a38431SPaul Bohm	- ev_embed_stop did not correctly stop the watcher (very good
167e3a38431SPaul Bohm          testcase by Vladimir Timofeev).
168e3a38431SPaul Bohm        - ev_run will now always update the current loop time - it erroneously
169e3a38431SPaul Bohm          didn't when idle watchers were active, causing timers not to fire.
170e3a38431SPaul Bohm        - fix a bug where a timeout of zero caused the timer not to fire
171e3a38431SPaul Bohm          in the libevent emulation (testcase by Péter Szabó).
172e3a38431SPaul Bohm	- applied win32 fixes by Michael Lenaghan (also James Mansion).
173e3a38431SPaul Bohm	- replace EV_MINIMAL by EV_FEATURES.
174e3a38431SPaul Bohm        - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as it
175e3a38431SPaul Bohm          seems the former is *much* faster than the latter.
176e3a38431SPaul Bohm        - linux kernel version detection (for inotify bug workarounds)
177e3a38431SPaul Bohm          did not work properly.
178e3a38431SPaul Bohm        - reduce the number of spurious wake-ups with the ports backend.
179e3a38431SPaul Bohm        - remove dependency on sys/queue.h on freebsd (patch by Vanilla Hsu).
180e3a38431SPaul Bohm        - do async init within ev_async_start, not ev_async_set, which avoids
181e3a38431SPaul Bohm          an API quirk where the set function must be called in the C++ API
182e3a38431SPaul Bohm          even when there is nothing to set.
183e3a38431SPaul Bohm        - add (undocumented) EV_ENABLE when adding events with kqueue,
184e3a38431SPaul Bohm          this might help with OS X, which seems to need it despite documenting
185e3a38431SPaul Bohm          not to need it (helpfully pointed out by Tilghman Lesher).
186e3a38431SPaul Bohm        - do not use poll by default on freebsd, it's broken (what isn't
187e3a38431SPaul Bohm          on freebsd...).
188e3a38431SPaul Bohm        - allow to embed epoll on kernels >= 2.6.32.
189e3a38431SPaul Bohm        - configure now prepends -O3, not appends it, so one can still
190e3a38431SPaul Bohm          override it.
191e3a38431SPaul Bohm        - ev.pod: greatly expanded the portability section, added a porting
192e3a38431SPaul Bohm          section, a description of watcher states and made lots of minor fixes.
193e3a38431SPaul Bohm        - disable poll backend on AIX, the poll header spams the namespace
194e3a38431SPaul Bohm          and it's not worth working around dead platforms (reported
195e3a38431SPaul Bohm          and analyzed by Aivars Kalvans).
196e3a38431SPaul Bohm        - improve header file compatibility of the standalone eventfd code
197e3a38431SPaul Bohm          in an obscure case.
198e3a38431SPaul Bohm        - implement EV_AVOID_STDIO option.
199e3a38431SPaul Bohm        - do not use sscanf to parse linux version number (smaller, faster,
200e3a38431SPaul Bohm          no sscanf dependency).
201e3a38431SPaul Bohm        - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
202e3a38431SPaul Bohm        - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
203e3a38431SPaul Bohm        - add section on accept() problems to the manpage.
204e3a38431SPaul Bohm        - rename EV_TIMEOUT to EV_TIMER.
205e3a38431SPaul Bohm        - rename ev_loop_count/depth/verify/loop/unloop.
206e3a38431SPaul Bohm        - remove ev_default_destroy and ev_default_fork.
207e3a38431SPaul Bohm        - switch to two-digit minor version.
208e3a38431SPaul Bohm        - work around an apparent gentoo compiler bug.
209e3a38431SPaul Bohm        - define _DARWIN_UNLIMITED_SELECT. just so.
210e3a38431SPaul Bohm        - use enum instead of #define for most constants.
211e3a38431SPaul Bohm        - improve compatibility to older C++ compilers.
212e3a38431SPaul Bohm        - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have now
213e3a38431SPaul Bohm          default arguments when compiled as C++.
214e3a38431SPaul Bohm        - enable automake dependency tracking.
215e3a38431SPaul Bohm        - ev_loop_new no longer leaks memory when loop creation failed.
216e3a38431SPaul Bohm        - new ev_cleanup watcher type.
217e3a38431SPaul Bohm
218e3a38431SPaul Bohm3.9  Thu Dec 31 07:59:59 CET 2009
219e3a38431SPaul Bohm	- signalfd is no longer used by default and has to be requested
220e3a38431SPaul Bohm          explicitly - this means that easy to catch bugs become hard to
221e3a38431SPaul Bohm          catch race conditions, but the users have spoken.
222e3a38431SPaul Bohm        - point out the unspecified signal mask in the documentation, and
223e3a38431SPaul Bohm          that this is a race condition regardless of EV_SIGNALFD.
224e3a38431SPaul Bohm	- backport inotify code to C89.
225e3a38431SPaul Bohm        - inotify file descriptors could leak into child processes.
226*93823e6cSPaul Bohm        - ev_stat watchers could keep an erroneous extra ref on the loop,
227e3a38431SPaul Bohm          preventing exit when unregistering all watchers (testcases
228e3a38431SPaul Bohm          provided by [email protected]).
229e3a38431SPaul Bohm        - implement EV_WIN32_HANDLE_TO_FD and EV_WIN32_CLOSE_FD configuration
230e3a38431SPaul Bohm          symbols to make it easier for apps to do their own fd management.
231e3a38431SPaul Bohm        - support EV_IDLE_ENABLE being disabled in ev++.h
232e3a38431SPaul Bohm          (patch by Didier Spezia).
233e3a38431SPaul Bohm        - take advantage of inotify_init1, if available, to set cloexec/nonblock
234e3a38431SPaul Bohm          on fd creation, to avoid races.
235e3a38431SPaul Bohm        - the signal handling pipe wasn't always initialised under windows
236e3a38431SPaul Bohm          (analysed by lekma).
237e3a38431SPaul Bohm        - changed minimum glibc requirement from glibc 2.9 to 2.7, for
238e3a38431SPaul Bohm          signalfd.
239e3a38431SPaul Bohm        - add missing string.h include (Denis F. Latypoff).
240e3a38431SPaul Bohm        - only replace ev_stat.prev when we detect an actual difference,
241e3a38431SPaul Bohm          so prev is (almost) always different to attr. this might
242e3a38431SPaul Bohm          have caused the problems with 04_stat.t.
243e3a38431SPaul Bohm        - add ev::timer->remaining () method to C++ API.
244e3a38431SPaul Bohm
245e3a38431SPaul Bohm3.8  Sun Aug  9 14:30:45 CEST 2009
246e3a38431SPaul Bohm	- incompatible change: do not necessarily reset signal handler
247e3a38431SPaul Bohm          to SIG_DFL when a sighandler is stopped.
248e3a38431SPaul Bohm        - ev_default_destroy did not properly free or zero some members,
249e3a38431SPaul Bohm          potentially causing crashes and memory corruption on repeated
250e3a38431SPaul Bohm          ev_default_destroy/ev_default_loop calls.
251e3a38431SPaul Bohm	- take advantage of signalfd on GNU/Linux systems.
252e3a38431SPaul Bohm	- document that the signal mask might be in an unspecified
253e3a38431SPaul Bohm          state when using libev's signal handling.
254e3a38431SPaul Bohm        - take advantage of some GNU/Linux calls to set cloexec/nonblock
255e3a38431SPaul Bohm          on fd creation, to avoid race conditions.
256e3a38431SPaul Bohm
257e3a38431SPaul Bohm3.7  Fri Jul 17 16:36:32 CEST 2009
258e3a38431SPaul Bohm	- ev_unloop and ev_loop wrongly used a global variable to exit loops,
259e3a38431SPaul Bohm          instead of using a per-loop variable (bug caught by accident...).
260e3a38431SPaul Bohm	- the ev_set_io_collect_interval interpretation has changed.
261e3a38431SPaul Bohm        - add new functionality: ev_set_userdata, ev_userdata,
262e3a38431SPaul Bohm          ev_set_invoke_pending_cb, ev_set_loop_release_cb,
263e3a38431SPaul Bohm          ev_invoke_pending, ev_pending_count, together with a long example
264e3a38431SPaul Bohm          about thread locking.
265e3a38431SPaul Bohm        - add ev_timer_remaining (as requested by Denis F. Latypoff).
266e3a38431SPaul Bohm        - add ev_loop_depth.
267e3a38431SPaul Bohm        - calling ev_unloop in fork/prepare watchers will no longer poll
268e3a38431SPaul Bohm          for new events.
269e3a38431SPaul Bohm	- Denis F. Latypoff corrected many typos in example code snippets.
270e3a38431SPaul Bohm        - honor autoconf detection of EV_USE_CLOCK_SYSCALL, also double-
271e3a38431SPaul Bohm          check that the syscall number is available before trying to
272e3a38431SPaul Bohm          use it (reported by ry@tinyclouds).
273e3a38431SPaul Bohm        - use GetSystemTimeAsFileTime instead of _timeb on windows, for
274e3a38431SPaul Bohm          slightly higher accuracy.
275e3a38431SPaul Bohm        - properly declare ev_loop_verify and ev_now_update even when
276e3a38431SPaul Bohm          !EV_MULTIPLICITY.
277e3a38431SPaul Bohm        - do not compile in any priority code when EV_MAXPRI == EV_MINPRI.
278e3a38431SPaul Bohm        - support EV_MINIMAL==2 for a reduced API.
279e3a38431SPaul Bohm        - actually 0-initialise struct sigaction when installing signals.
280e3a38431SPaul Bohm        - add section on hibernate and stopped processes to ev_timer docs.
281e3a38431SPaul Bohm
282e3a38431SPaul Bohm3.6  Tue Apr 28 02:49:30 CEST 2009
283e3a38431SPaul Bohm	- multiple timers becoming ready within an event loop iteration
284e3a38431SPaul Bohm          will be invoked in the "correct" order now.
285e3a38431SPaul Bohm	- do not leave the event loop early just because we have no active
286e3a38431SPaul Bohm          watchers, fixing a problem when embedding a kqueue loop
287e3a38431SPaul Bohm          that has active kernel events but no registered watchers
288e3a38431SPaul Bohm          (reported by blacksand blacksand).
289e3a38431SPaul Bohm	- correctly zero the idx values for arrays, so destroying and
290e3a38431SPaul Bohm          reinitialising the default loop actually works (patch by
291e3a38431SPaul Bohm          Malek Hadj-Ali).
292e3a38431SPaul Bohm        - implement ev_suspend and ev_resume.
293e3a38431SPaul Bohm        - new EV_CUSTOM revents flag for use by applications.
294*93823e6cSPaul Bohm        - add documentation section about priorities.
295*93823e6cSPaul Bohm        - add a glossary to the documentation.
296e3a38431SPaul Bohm        - extend the ev_fork description slightly.
297e3a38431SPaul Bohm        - optimize a jump out of call_pending.
298e3a38431SPaul Bohm
299e3a38431SPaul Bohm3.53 Sun Feb 15 02:38:20 CET 2009
300e3a38431SPaul Bohm	- fix a bug in event pipe creation on win32 that would cause a
301e3a38431SPaul Bohm          failed assertion on event loop creation (patch by Malek Hadj-Ali).
302e3a38431SPaul Bohm	- probe for CLOCK_REALTIME support at runtime as well and fall
303e3a38431SPaul Bohm          back to gettimeofday if there is an error, to support older
304e3a38431SPaul Bohm          operating systems with newer header files/libraries.
305e3a38431SPaul Bohm        - prefer gettimeofday over clock_gettime with USE_CLOCK_SYSCALL
306e3a38431SPaul Bohm          (default most everywhere), otherwise not.
307e3a38431SPaul Bohm
308e3a38431SPaul Bohm3.52 Wed Jan  7 21:43:02 CET 2009
309e3a38431SPaul Bohm	- fix compilation of select backend in fd_set mode when NFDBITS is
310e3a38431SPaul Bohm          missing (to get it to compile on QNX, reported by Rodrigo Campos).
311e3a38431SPaul Bohm        - better select-nfds handling when select backend is in fd_set mode.
312e3a38431SPaul Bohm        - diagnose fd_set overruns when select backend is in fd_set mode.
313e3a38431SPaul Bohm        - due to a thinko, instead of disabling everything but
314e3a38431SPaul Bohm          select on the borked OS X platform, everything but select was
315e3a38431SPaul Bohm          allowed (reported by Emanuele Giaquinta).
316e3a38431SPaul Bohm        - actually verify that local and remote port are matching in
317e3a38431SPaul Bohm          libev's socketpair emulation, which makes denial-of-service
318e3a38431SPaul Bohm          attacks harder (but not impossible - it's windows). Make sure
319e3a38431SPaul Bohm          it even works under vista, which thinks that getpeer/sockname
320e3a38431SPaul Bohm          should return fantasy port numbers.
321e3a38431SPaul Bohm        - include "libev" in all assertion messages for potentially
322e3a38431SPaul Bohm          clearer diagnostics.
323e3a38431SPaul Bohm        - event_get_version (libevent compatibility) returned
324e3a38431SPaul Bohm          a useless string instead of the expected version string
325e3a38431SPaul Bohm          (patch by W.C.A. Wijngaards).
326e3a38431SPaul Bohm
327e3a38431SPaul Bohm3.51 Wed Dec 24 23:00:11 CET 2008
328e3a38431SPaul Bohm        - fix a bug where an inotify watcher was added twice, causing
329e3a38431SPaul Bohm          freezes on hash collisions (reported and analysed by Graham Leggett).
330e3a38431SPaul Bohm	- new config symbol, EV_USE_CLOCK_SYSCALL, to make libev use
331e3a38431SPaul Bohm          a direct syscall - slower, but no dependency on librt et al.
332e3a38431SPaul Bohm        - assume negative return values != -1 signals success of port_getn
333e3a38431SPaul Bohm          (http://cvs.epicsol.org/cgi/viewcvs.cgi/epic5/source/newio.c?rev=1.52)
334e3a38431SPaul Bohm          (no known failure reports, but it doesn't hurt).
335e3a38431SPaul Bohm        - fork detection in ev_embed now stops and restarts the watcher
336e3a38431SPaul Bohm          automatically.
337e3a38431SPaul Bohm        - EXPERIMENTAL: default the method to operator () in ev++.h,
338e3a38431SPaul Bohm          to make it nicer to use functors (requested by Benedek László).
339e3a38431SPaul Bohm        - fixed const object callbacks in ev++.h.
340e3a38431SPaul Bohm        - replaced loop_ref argument of watcher.set (loop) by a direct
341e3a38431SPaul Bohm          ev_loop * in ev++.h, to avoid clashes with functor patch.
342e3a38431SPaul Bohm        - do not try to watch the empty string via inotify.
343e3a38431SPaul Bohm        - inotify watchers could be leaked under certain circumstances.
344e3a38431SPaul Bohm        - OS X 10.5 is actually even more broken than earlier versions,
345e3a38431SPaul Bohm          so fall back to select on that piece of garbage.
346e3a38431SPaul Bohm        - fixed some weirdness in the ev_embed documentation.
347e3a38431SPaul Bohm
348e3a38431SPaul Bohm3.49 Wed Nov 19 11:26:53 CET 2008
349e3a38431SPaul Bohm	- ev_stat watchers will now use inotify as a mere hint on
350e3a38431SPaul Bohm          kernels <2.6.25, or if the filesystem is not in the
351e3a38431SPaul Bohm          "known to be good" list.
352e3a38431SPaul Bohm        - better mingw32 compatibility (it's not as borked as native win32)
353e3a38431SPaul Bohm          (analysed by Roger Pack).
354e3a38431SPaul Bohm        - include stdio.h in the example program, as too many people are
355e3a38431SPaul Bohm          confused by the weird C language otherwise. I guess the next thing
356e3a38431SPaul Bohm          I get told is that the "..." ellipses in the examples don't compile
357e3a38431SPaul Bohm          with their C compiler.
358e3a38431SPaul Bohm
359e3a38431SPaul Bohm3.48 Thu Oct 30 09:02:37 CET 2008
360e3a38431SPaul Bohm	- further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
361e3a38431SPaul Bohm          backend by assuming the kernel event mask hasn't changed if
362e3a38431SPaul Bohm          ADD fails with EEXIST.
363e3a38431SPaul Bohm        - work around spurious event notification bugs in epoll by using
364e3a38431SPaul Bohm          a 32-bit generation counter. recreate kernel state if we receive
365e3a38431SPaul Bohm          spurious notifications or unwanted events. this is very costly,
366e3a38431SPaul Bohm          but I didn't come up with this horrible design.
367e3a38431SPaul Bohm        - use memset to initialise most arrays now and do away with the
368e3a38431SPaul Bohm          init functions.
369e3a38431SPaul Bohm        - expand time-out strategies into a "Be smart about timeouts" section.
370e3a38431SPaul Bohm        - drop the "struct" from all ev_watcher declarations in the
371e3a38431SPaul Bohm          documentation and did other clarifications (yeah, it was a mistake
372e3a38431SPaul Bohm          to have a struct AND a function called ev_loop).
373e3a38431SPaul Bohm	- fix a bug where ev_default would not initialise the default
374e3a38431SPaul Bohm          loop again after it was destroyed with ev_default_destroy.
375e3a38431SPaul Bohm        - rename syserr to ev_syserr to avoid name clashes when embedding,
376e3a38431SPaul Bohm          do similar changes for event.c.
377e3a38431SPaul Bohm
378e3a38431SPaul Bohm3.45 Tue Oct 21 21:59:26 CEST 2008
379e3a38431SPaul Bohm	- disable inotify usage on linux <2.6.25, as it is broken
380e3a38431SPaul Bohm          (reported by Yoann Vandoorselaere).
381e3a38431SPaul Bohm        - ev_stat erroneously would try to add inotify watchers
382e3a38431SPaul Bohm          even when inotify wasn't available (this should only
383e3a38431SPaul Bohm          have a performance impact).
384e3a38431SPaul Bohm	- ev_once now passes both timeout and io to the callback if both
385e3a38431SPaul Bohm          occur concurrently, instead of giving timeouts precedence.
386e3a38431SPaul Bohm	- disable EV_USE_INOTIFY when sys/inotify.h is too old.
387e3a38431SPaul Bohm
388e3a38431SPaul Bohm3.44 Mon Sep 29 05:18:39 CEST 2008
389e3a38431SPaul Bohm	- embed watchers now automatically invoke ev_loop_fork on the
390e3a38431SPaul Bohm          embedded loop when the parent loop forks.
391e3a38431SPaul Bohm	- new function: ev_now_update (loop).
392e3a38431SPaul Bohm	- verify_watcher was not marked static.
393e3a38431SPaul Bohm        - improve the "associating..." manpage section.
394e3a38431SPaul Bohm        - documentation tweaks here and there.
395e3a38431SPaul Bohm
396e3a38431SPaul Bohm3.43 Sun Jul  6 05:34:41 CEST 2008
397e3a38431SPaul Bohm	- include more include files on windows to get struct _stati64
398e3a38431SPaul Bohm          (reported by Chris Hulbert, but doesn't quite fix his issue).
399e3a38431SPaul Bohm	- add missing #include <io.h> in ev.c on windows (reported by
400e3a38431SPaul Bohm          Matt Tolton).
401e3a38431SPaul Bohm
402e3a38431SPaul Bohm3.42 Tue Jun 17 12:12:07 CEST 2008
403e3a38431SPaul Bohm	- work around yet another windows bug: FD_SET actually adds fd's
404e3a38431SPaul Bohm          multiple times to the fd_*SET*, despite official MSN docs claiming
405e3a38431SPaul Bohm          otherwise. Reported and well-analysed by Matt Tolton.
406e3a38431SPaul Bohm	- define NFDBITS to 0 when EV_SELECT_IS_WINSOCKET to make it compile
407e3a38431SPaul Bohm          (reported any analysed by Chris Hulbert).
408e3a38431SPaul Bohm        - fix a bug in ev_ebadf (this function is only used to catch
409e3a38431SPaul Bohm          programming errors in the libev user). reported by Matt Tolton.
410e3a38431SPaul Bohm        - fix a bug in fd_intern on win32 (could lead to compile errors
411e3a38431SPaul Bohm          under some circumstances, but would work correctly if it compiles).
412e3a38431SPaul Bohm          reported by Matt Tolton.
413e3a38431SPaul Bohm        - (try to) work around missing lstat on windows.
414e3a38431SPaul Bohm	- pass in the write fd set as except fd set under windows. windows
415e3a38431SPaul Bohm          is so uncontrollably lame that it requires this. this means that
416e3a38431SPaul Bohm          switching off oobinline is not supported (but tcp/ip doesn't
417e3a38431SPaul Bohm          have oob, so that would be stupid anyways.
418e3a38431SPaul Bohm        - use posix module symbol to auto-detect monotonic clock presence
419e3a38431SPaul Bohm          and some other default values.
420e3a38431SPaul Bohm
421e3a38431SPaul Bohm3.41 Fri May 23 18:42:54 CEST 2008
422e3a38431SPaul Bohm	- work around an obscure bug in winsocket select: if you
423e3a38431SPaul Bohm          provide only empty fd sets then select returns WSAEINVAL. how sucky.
424e3a38431SPaul Bohm        - improve timer scheduling stability and reduce use of time_epsilon.
425e3a38431SPaul Bohm        - use 1-based 2-heap for EV_MINIMAL, simplifies code, reduces
426e3a38431SPaul Bohm          codesize and makes for better cache-efficiency.
427e3a38431SPaul Bohm        - use 3-based 4-heap for !EV_MINIMAL. this makes better use
428e3a38431SPaul Bohm          of cpu cache lines and gives better growth behaviour than
429e3a38431SPaul Bohm          2-based heaps.
430e3a38431SPaul Bohm        - cache timestamp within heap for !EV_MINIMAL, to avoid random
431e3a38431SPaul Bohm          memory accesses.
432e3a38431SPaul Bohm        - document/add EV_USE_4HEAP and EV_HEAP_CACHE_AT.
433e3a38431SPaul Bohm        - fix a potential aliasing issue in ev_timer_again.
434e3a38431SPaul Bohm        - add/document ev_periodic_at, retract direct access to ->at.
435e3a38431SPaul Bohm        - improve ev_stat docs.
436e3a38431SPaul Bohm        - add portability requirements section.
437e3a38431SPaul Bohm	- fix manpage headers etc.
438e3a38431SPaul Bohm        - normalise WSA error codes to lower range on windows.
439e3a38431SPaul Bohm        - add consistency check code that can be called automatically
440e3a38431SPaul Bohm          or on demand to check for internal structures (ev_loop_verify).
441e3a38431SPaul Bohm
442e3a38431SPaul Bohm3.31 Wed Apr 16 20:45:04 CEST 2008
443e3a38431SPaul Bohm	- added last minute fix for ev_poll.c by Brandon Black.
444e3a38431SPaul Bohm
445e3a38431SPaul Bohm3.3  Wed Apr 16 19:04:10 CEST 2008
446e3a38431SPaul Bohm        - event_base_loopexit should return 0 on success
447e3a38431SPaul Bohm          (W.C.A. Wijngaards).
448e3a38431SPaul Bohm	- added linux eventfd support.
449e3a38431SPaul Bohm        - try to autodetect epoll and inotify support
450e3a38431SPaul Bohm          by libc header version if not using autoconf.
451e3a38431SPaul Bohm        - new symbols: EV_DEFAULT_UC and EV_DEFAULT_UC_.
452e3a38431SPaul Bohm        - declare functions defined in ev.h as inline if
453e3a38431SPaul Bohm          C99 or gcc are available.
454e3a38431SPaul Bohm        - enable inlining with gcc versions 2 and 3.
455e3a38431SPaul Bohm        - work around broken poll implementations potentially
456e3a38431SPaul Bohm          not clearing revents field in ev_poll (Brandon Black)
457e3a38431SPaul Bohm          (no such systems are known at this time).
458e3a38431SPaul Bohm        - work around a bug in realloc on openbsd and darwin,
459e3a38431SPaul Bohm          also makes the erroneous valgrind complaints
460e3a38431SPaul Bohm          go away (noted by various people).
461e3a38431SPaul Bohm        - fix ev_async_pending, add c++ wrapper for ev_async
462e3a38431SPaul Bohm          (based on patch sent by Johannes Deisenhofer).
463e3a38431SPaul Bohm        - add sensible set method to ev::embed.
464e3a38431SPaul Bohm        - made integer constants type int in ev.h.
465e3a38431SPaul Bohm
466e3a38431SPaul Bohm3.2  Wed Apr  2 17:11:19 CEST 2008
467e3a38431SPaul Bohm	- fix a 64 bit overflow issue in the select backend,
468e3a38431SPaul Bohm          by using fd_mask instead of int for the mask.
469e3a38431SPaul Bohm        - rename internal sighandler to avoid clash with very old perls.
470e3a38431SPaul Bohm        - entering ev_loop will not clear the ONESHOT or NONBLOCKING
471e3a38431SPaul Bohm          flags of any outer loops anymore.
472e3a38431SPaul Bohm        - add ev_async_pending.
473e3a38431SPaul Bohm
474e3a38431SPaul Bohm3.1  Thu Mar 13 13:45:22 CET 2008
475e3a38431SPaul Bohm	- implement ev_async watchers.
476e3a38431SPaul Bohm        - only initialise signal pipe on demand.
477e3a38431SPaul Bohm	- make use of sig_atomic_t configurable.
478e3a38431SPaul Bohm        - improved documentation.
479e3a38431SPaul Bohm
480e3a38431SPaul Bohm3.0  Mon Jan 28 13:14:47 CET 2008
481e3a38431SPaul Bohm	- API/ABI bump to version 3.0.
482e3a38431SPaul Bohm	- ev++.h includes "ev.h" by default now, not <ev.h>.
483e3a38431SPaul Bohm	- slightly improved documentation.
484e3a38431SPaul Bohm	- speed up signal detection after a fork.
485e3a38431SPaul Bohm        - only optionally return trace status changed in ev_child
486e3a38431SPaul Bohm          watchers.
487e3a38431SPaul Bohm        - experimental (and undocumented) loop wrappers for ev++.h.
488e3a38431SPaul Bohm
489e3a38431SPaul Bohm2.01 Tue Dec 25 08:04:41 CET 2007
490e3a38431SPaul Bohm	- separate Changes file.
491e3a38431SPaul Bohm	- fix ev_path_set => ev_stat_set typo.
492e3a38431SPaul Bohm        - remove event_compat.h from the libev tarball.
493e3a38431SPaul Bohm        - change how include files are found.
494e3a38431SPaul Bohm        - doc updates.
495e3a38431SPaul Bohm        - update licenses, explicitly allow for GPL relicensing.
496e3a38431SPaul Bohm
497e3a38431SPaul Bohm2.0  Sat Dec 22 17:47:03 CET 2007
498e3a38431SPaul Bohm        - new ev_sleep, ev_set_(io|timeout)_collect_interval.
499e3a38431SPaul Bohm        - removed epoll from embeddable fd set.
500e3a38431SPaul Bohm        - fix embed watchers.
501e3a38431SPaul Bohm	- renamed ev_embed.loop to other.
502e3a38431SPaul Bohm	- added exported Symbol tables.
503e3a38431SPaul Bohm        - undefine member wrapper macros at the end of ev.c.
504e3a38431SPaul Bohm        - respect EV_H in ev++.h.
505e3a38431SPaul Bohm
506e3a38431SPaul Bohm1.86 Tue Dec 18 02:36:57 CET 2007
507e3a38431SPaul Bohm	- fix memleak on loop destroy (not relevant for perl).
508e3a38431SPaul Bohm
509e3a38431SPaul Bohm1.85 Fri Dec 14 20:32:40 CET 2007
510e3a38431SPaul Bohm        - fix some aliasing issues w.r.t. timers and periodics
511e3a38431SPaul Bohm          (not relevant for perl).
512e3a38431SPaul Bohm
513e3a38431SPaul Bohm(for historic versions refer to EV/Changes, found in the Perl interface)
514e3a38431SPaul Bohm
515e3a38431SPaul Bohm0.1  Wed Oct 31 21:31:48 CET 2007
516e3a38431SPaul Bohm	- original version; hacked together in <24h.
517e3a38431SPaul Bohm
518