ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/Changes
Revision: 1.335
Committed: Mon Jul 1 20:41:46 2019 UTC (4 years, 10 months ago) by root
Branch: MAIN
Changes since 1.334: +2 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.14 Revision history for libev, a high-performance and full-featured event loop.
2 root 1.1
3 root 1.334 TODO: revisit 59.x timer in the light of mdoenr powersaving
4 root 1.335 - linuxaio backend might have tried to cancel an iocb
5     multiple times (was unable to trigger this).
6 root 1.334 - io_cancel can return EINTR, deal with it. also, assume
7     io_asubmit also retursn EINTR.
8    
9 root 1.333 4.27 Thu Jun 27 22:43:44 CEST 2019
10 root 1.334 - linux aio backend almost completely rewritten to work around its
11 root 1.329 limitations.
12 root 1.334 - linux aio backend now requires linux 4.19+.
13 root 1.329 - epoll backend now mandatory for linux aio backend.
14 root 1.330 - fail assertions more aggressively on invalid fd's detected
15     in the event loop, do not just silently fd_kill in case of
16     user error.
17     - ev_io_start/ev_io_stop now verify the watcher fd using
18     a syscall when EV_VERIFY is 2 or higher.
19 root 1.329
20     4.26 (EV only)
21     - update to libecb 0x00010006.
22 root 1.326 - new experimental linux aio backend (linux 4.18+).
23 root 1.324 - removed redundant 0-ptr check in ev_once.
24 root 1.325 - updated/extended ev_set_allocator documentation.
25 root 1.326 - replaced EMPTY2 macro by array_needsize_noinit.
26     - minor code cleanups.
27 root 1.327 - epoll backend now uses epoll_create1 also after fork.
28 root 1.324
29 root 1.320 4.25 Fri Dec 21 07:49:20 CET 2018
30     - INCOMPATIBLE CHANGE: EV_THROW was renamed to EV_NOEXCEPT
31 root 1.323 (EV_THROW still provided) and now uses noexcept on C++11 or newer.
32 root 1.320 - move the darwin select workaround highe rin ev.c, as newer versions of
33 root 1.316 darwin managed to break their broken select even more.
34 root 1.314 - ANDROID => __ANDROID__ (reported by enh@google.com).
35 root 1.315 - disable epoll_create1 on android because it has broken header files
36     and google is unwilling to fix them (reported by enh@google.com).
37 root 1.317 - avoid a minor compilation warning on win32.
38 root 1.318 - c++: remove deprecated dynamic throw() specifications.
39     - c++: improve the (unsupported) bad_loop exception class.
40 root 1.319 - backport perl ev_periodic example to C, untested.
41 root 1.321 - update libecb, biggets change is to include a memory fence
42     in ECB_MEMORY_FENCE_RELEASE on x86/amd64.
43 root 1.322 - minor autoconf/automake modernisation.
44 root 1.314
45 root 1.313 4.24 Wed Dec 28 05:19:55 CET 2016
46     - bump version to 4.24, as the release tarball inexplicably
47     didn't have the right version in ev.h, even though the cvs-tagged
48     version did have the right one (reported by Ales Teska).
49    
50 root 1.312 4.23 Wed Nov 16 18:23:41 CET 2016
51 root 1.311 - move some declarations at the beginning to help certain retarded
52     microsoft compilers, even though their documentation claims
53     otherwise (reported by Ruslan Osmanov).
54    
55 root 1.310 4.22 Sun Dec 20 22:11:50 CET 2015
56 root 1.308 - when epoll detects unremovable fds in the fd set, rebuild
57     only the epoll descriptor, not the signal pipe, to avoid
58     SIGPIPE in ev_async_send. This doesn't solve it on fork,
59     so document what needs to be done in ev_loop_fork
60     (analyzed by Benjamin Mahler).
61     - remove superfluous sys/timeb.h include on win32
62     (analyzed by Jason Madden).
63 root 1.309 - updated libecb.
64 root 1.308
65 root 1.307 4.20 Sat Jun 20 13:01:43 CEST 2015
66 root 1.302 - prefer noexcept over throw () with C++ 11.
67 root 1.303 - update ecb.h due to incompatibilities with c11.
68 root 1.305 - fix a potential aliasing issue when reading and writing
69 root 1.304 watcher callbacks.
70 root 1.301
71 root 1.300 4.19 Thu Sep 25 08:18:25 CEST 2014
72 root 1.298 - ev.h wasn't valid C++ anymore, which tripped compilers other than
73 root 1.299 clang, msvc or gcc (analyzed by Raphael 'kena' Poss). Unfortunately,
74     C++ doesn't support typedefs for function pointers fully, so the affected
75     declarations have to spell out the types each time.
76 root 1.297 - when not using autoconf, tighten the check for clock_gettime and related
77     functionality.
78    
79 root 1.296 4.18 Fri Sep 5 17:55:26 CEST 2014
80 root 1.295 - events on files were not always generated properly with the
81     epoll backend (testcase by Assaf Inbal).
82 root 1.288 - mark event pipe fd as cloexec after a fork (analyzed by Sami Farin).
83 root 1.289 - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
84 root 1.291 - use a reasonable fallback for EV_NSIG instead of erroring out
85     when we can't detect the signal set size.
86 root 1.292 - in the absence of autoconf, do not use the clock syscall
87     on glibc >= 2.17 (avoids the syscall AND -lrt on systems
88     doing clock_gettime in userspace).
89 root 1.293 - ensure extern "C" function pointers are used for externally-visible
90     loop callbacks (not watcher callbacks yet).
91 root 1.294 - (ecb) work around memory barriers and volatile apparently both being
92     broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).
93 root 1.288
94 root 1.287 4.15 Fri Mar 1 12:04:50 CET 2013
95 root 1.271 - destroying a non-default loop would stop the global waitpid
96     watcher (Denis Bilenko).
97 root 1.266 - queueing pending watchers of higher priority from a watcher now invokes
98     them in a timely fashion (reported by Denis Bilenko).
99 root 1.261 - add throw() to all libev functions that cannot throw exceptions, for
100     further code size decrease when compiling for C++.
101     - add throw () to callbacks that must not throw exceptions (allocator,
102     syserr, loop acquire/release, periodic reschedule cbs).
103 root 1.256 - fix event_base_loop return code, add event_get_callback, event_base_new,
104     event_base_get_method calls to improve libevent 1.x emulation and add
105 root 1.273 some libevent 2.x functionality (based on a patch by Jeff Davey).
106 root 1.263 - add more memory fences to fix a bug reported by Jeff Davey. Better
107     be overfenced than underprotected.
108 root 1.256 - ev_run now returns a boolean status (true meaning watchers are
109     still active).
110 root 1.252 - ev_once: undef EV_ERROR in ev_kqueue.c, to avoid clashing with
111     libev's EV_ERROR (reported by 191919).
112 root 1.253 - (ecb) add memory fence support for xlC (Darin McBride).
113     - (ecb) add memory fence support for gcc-mips (Anton Kirilov).
114 root 1.259 - (ecb) add memory fence support for gcc-alpha (Christian Weisgerber).
115 root 1.254 - work around some kernels losing file descriptors by leaking
116     the kqueue descriptor in the child.
117 root 1.282 - work around linux inotify not reporting IN_ATTRIB changes for directories
118     in many cases.
119 root 1.262 - include sys/syscall.h instead of plain syscall.h.
120 root 1.268 - check for io watcher loops in ev_verify, check for the most
121     common reported usage bug in ev_io_start.
122 sf-exg 1.286 - choose socket vs. WSASocket at compiletime using EV_USE_WSASOCKET.
123 root 1.270 - always use WSASend/WSARecv directly on windows, hoping that this
124     works in all cases (unlike read/write/send/recv...).
125 root 1.274 - try to detect signals around a fork faster (test program by
126     Denis Bilenko).
127 root 1.275 - work around recent glibc versions that leak memory in realloc.
128 root 1.276 - rename ev::embed::set to ev::embed::set_embed to avoid clashing
129     the watcher base set (loop) method.
130 root 1.278 - rewrite the async/signal pipe logic to always keep a valid fd, which
131 sf-exg 1.286 simplifies (and hopefully correctifies :) the race checking
132 root 1.278 on fork, at the cost of one extra fd.
133 root 1.282 - add fat, msdos, jffs2, ramfs, ntfs and btrfs to the list of
134     inotify-supporting filesystems.
135 root 1.283 - move orig_CFLAGS assignment to after AC_INIT, as newer autoconf
136     versions ignore it before
137     (https://bugzilla.redhat.com/show_bug.cgi?id=908096).
138 root 1.284 - add some untested android support.
139 root 1.285 - enum expressions must be of type int (reported by Juan Pablo L).
140 root 1.253
141 root 1.250 4.11 Sat Feb 4 19:52:39 CET 2012
142 root 1.248 - INCOMPATIBLE CHANGE: ev_timer_again now clears the pending status, as
143     was documented already, but not implemented in the repeating case.
144 root 1.249 - new compiletime symbols: EV_NO_SMP and EV_NO_THREADS.
145 root 1.234 - fix a race where the workaround against the epoll fork bugs
146     caused signals to not be handled anymore.
147 root 1.229 - correct backend_fudge for most backends, and implement a windows
148     specific workaround to avoid looping because we call both
149     select and Sleep, both with different time resolutions.
150 root 1.230 - document range and guarantees of ev_sleep.
151 root 1.231 - document reasonable ranges for periodics interval and offset.
152     - rename backend_fudge to backend_mintime to avoid future confusion :)
153 root 1.225 - change the default periodic reschedule function to hopefully be more
154 root 1.226 exact and correct even in corner cases or in the far future.
155 root 1.225 - do not rely on -lm anymore: use it when available but use our
156 root 1.230 own floor () if it is missing. This should make it easier to embed,
157     as no external libraries are required.
158 root 1.232 - strategically import macros from libecb and mark rarely-used functions
159 sf-exg 1.239 as cache-cold (saving almost 2k code size on typical amd64 setups).
160 root 1.237 - add Symbols.ev and Symbols.event files, that were missing.
161 root 1.242 - fix backend_mintime value for epoll (was 1/1024, is 1/1000 now).
162 root 1.244 - fix #3 "be smart about timeouts" to not "deadlock" when
163     timeout == now, also improve the section overall.
164     - avoid "AVOIDING FINISHING BEFORE RETURNING" idiom.
165 root 1.245 - support new EV_API_STATIC mode to make all libev symbols
166     static.
167 root 1.251 - supply default CFLAGS of -g -O3 with gcc when original CFLAGS
168     were empty.
169 root 1.225
170 root 1.224 4.04 Wed Feb 16 09:01:51 CET 2011
171     - fix two problems in the native win32 backend, where reuse of fd's
172     with different underlying handles caused handles not to be removed
173     or added to the select set (analyzed and tested by Bert Belder).
174 root 1.221 - do no rely on ceil() in ev_e?poll.c.
175 root 1.222 - backport libev to HP-UX versions before 11 v3.
176 root 1.223 - configure did not detect nanosleep and clock_gettime properly when
177     they are available in the libc (as opposed to -lrt).
178 root 1.221
179 root 1.219 4.03 Tue Jan 11 14:37:25 CET 2011
180 root 1.217 - officially support polling files with all backends.
181 root 1.212 - support files, /dev/zero etc. the same way as select in the epoll
182     backend, by generating events on our own.
183 root 1.217 - ports backend: work around solaris bug 6874410 and many related ones
184     (EINTR, maybe more), with no performance loss (note that the solaris
185     bug report is actually wrong, reality is far more bizarre and broken
186     than that).
187 root 1.209 - define EV_READ/EV_WRITE as macros in event.h, as some programs use
188     #ifdef to test for them.
189 root 1.213 - new (experimental) function: ev_feed_signal.
190     - new (to become default) EVFLAG_NOSIGMASK flag.
191     - new EVBACKEND_MASK symbol.
192 root 1.220 - updated COMMON IDIOMS SECTION.
193 root 1.209
194 root 1.207 4.01 Fri Nov 5 21:51:29 CET 2010
195 root 1.205 - automake fucked it up, apparently, --add-missing -f is not quite enough
196 root 1.206 to make it update its files, so 4.00 didn't install ev++.h and
197     event.h on make install. grrr.
198     - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
199 root 1.203 - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
200 root 1.204 - use "(libev) " prefix for all libev error messages now.
201 root 1.203
202 root 1.202 4.00 Mon Oct 25 12:32:12 CEST 2010
203 root 1.171 - "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended reading.
204 root 1.161 - ev_embed_stop did not correctly stop the watcher (very good
205     testcase by Vladimir Timofeev).
206 sf-exg 1.191 - ev_run will now always update the current loop time - it erroneously
207 root 1.187 didn't when idle watchers were active, causing timers not to fire.
208 root 1.179 - fix a bug where a timeout of zero caused the timer not to fire
209     in the libevent emulation (testcase by Péter Szabó).
210 root 1.164 - applied win32 fixes by Michael Lenaghan (also James Mansion).
211 root 1.166 - replace EV_MINIMAL by EV_FEATURES.
212 root 1.178 - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as it
213     seems the former is *much* faster than the latter.
214 root 1.197 - linux kernel version detection (for inotify bug workarounds)
215     did not work properly.
216 root 1.185 - reduce the number of spurious wake-ups with the ports backend.
217 root 1.158 - remove dependency on sys/queue.h on freebsd (patch by Vanilla Hsu).
218 root 1.186 - do async init within ev_async_start, not ev_async_set, which avoids
219     an API quirk where the set function must be called in the C++ API
220     even when there is nothing to set.
221 root 1.174 - add (undocumented) EV_ENABLE when adding events with kqueue,
222 root 1.175 this might help with OS X, which seems to need it despite documenting
223     not to need it (helpfully pointed out by Tilghman Lesher).
224 root 1.176 - do not use poll by default on freebsd, it's broken (what isn't
225     on freebsd...).
226 root 1.195 - allow to embed epoll on kernels >= 2.6.32.
227 root 1.159 - configure now prepends -O3, not appends it, so one can still
228     override it.
229 root 1.190 - ev.pod: greatly expanded the portability section, added a porting
230     section, a description of watcher states and made lots of minor fixes.
231 root 1.160 - disable poll backend on AIX, the poll header spams the namespace
232     and it's not worth working around dead platforms (reported
233     and analyzed by Aivars Kalvans).
234 root 1.162 - improve header file compatibility of the standalone eventfd code
235     in an obscure case.
236 root 1.163 - implement EV_AVOID_STDIO option.
237     - do not use sscanf to parse linux version number (smaller, faster,
238     no sscanf dependency).
239 root 1.164 - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
240 sf-exg 1.172 - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
241 root 1.165 - add section on accept() problems to the manpage.
242 root 1.168 - rename EV_TIMEOUT to EV_TIMER.
243 root 1.190 - rename ev_loop_count/depth/verify/loop/unloop.
244 root 1.197 - remove ev_default_destroy and ev_default_fork.
245 root 1.168 - switch to two-digit minor version.
246 root 1.180 - work around an apparent gentoo compiler bug.
247 root 1.181 - define _DARWIN_UNLIMITED_SELECT. just so.
248 root 1.188 - use enum instead of #define for most constants.
249     - improve compatibility to older C++ compilers.
250 root 1.193 - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have now
251     default arguments when compiled as C++.
252 root 1.196 - enable automake dependency tracking.
253 root 1.197 - ev_loop_new no longer leaks memory when loop creation failed.
254 root 1.198 - new ev_cleanup watcher type.
255 root 1.157
256 root 1.156 3.9 Thu Dec 31 07:59:59 CET 2009
257 root 1.155 - signalfd is no longer used by default and has to be requested
258     explicitly - this means that easy to catch bugs become hard to
259     catch race conditions, but the users have spoken.
260     - point out the unspecified signal mask in the documentation, and
261     that this is a race condition regardless of EV_SIGNALFD.
262 root 1.142 - backport inotify code to C89.
263 root 1.148 - inotify file descriptors could leak into child processes.
264 sf-exg 1.241 - ev_stat watchers could keep an erroneous extra ref on the loop,
265 root 1.151 preventing exit when unregistering all watchers (testcases
266 root 1.150 provided by ry@tinyclouds.org).
267 root 1.143 - implement EV_WIN32_HANDLE_TO_FD and EV_WIN32_CLOSE_FD configuration
268 root 1.145 symbols to make it easier for apps to do their own fd management.
269 root 1.144 - support EV_IDLE_ENABLE being disabled in ev++.h
270     (patch by Didier Spezia).
271 root 1.147 - take advantage of inotify_init1, if available, to set cloexec/nonblock
272     on fd creation, to avoid races.
273 root 1.150 - the signal handling pipe wasn't always initialised under windows
274     (analysed by lekma).
275 root 1.146 - changed minimum glibc requirement from glibc 2.9 to 2.7, for
276     signalfd.
277 root 1.152 - add missing string.h include (Denis F. Latypoff).
278 root 1.153 - only replace ev_stat.prev when we detect an actual difference,
279     so prev is (almost) always different to attr. this might
280 sf-exg 1.191 have caused the problems with 04_stat.t.
281 root 1.154 - add ev::timer->remaining () method to C++ API.
282 root 1.142
283 root 1.141 3.8 Sun Aug 9 14:30:45 CEST 2009
284 root 1.133 - incompatible change: do not necessarily reset signal handler
285     to SIG_DFL when a sighandler is stopped.
286 root 1.135 - ev_default_destroy did not properly free or zero some members,
287 sf-exg 1.191 potentially causing crashes and memory corruption on repeated
288 root 1.134 ev_default_destroy/ev_default_loop calls.
289 root 1.133 - take advantage of signalfd on GNU/Linux systems.
290     - document that the signal mask might be in an unspecified
291     state when using libev's signal handling.
292 root 1.136 - take advantage of some GNU/Linux calls to set cloexec/nonblock
293     on fd creation, to avoid race conditions.
294 root 1.132
295 root 1.131 3.7 Fri Jul 17 16:36:32 CEST 2009
296 root 1.128 - ev_unloop and ev_loop wrongly used a global variable to exit loops,
297     instead of using a per-loop variable (bug caught by accident...).
298     - the ev_set_io_collect_interval interpretation has changed.
299     - add new functionality: ev_set_userdata, ev_userdata,
300 root 1.126 ev_set_invoke_pending_cb, ev_set_loop_release_cb,
301 root 1.132 ev_invoke_pending, ev_pending_count, together with a long example
302     about thread locking.
303 root 1.128 - add ev_timer_remaining (as requested by Denis F. Latypoff).
304     - add ev_loop_depth.
305 root 1.124 - calling ev_unloop in fork/prepare watchers will no longer poll
306     for new events.
307 root 1.115 - Denis F. Latypoff corrected many typos in example code snippets.
308     - honor autoconf detection of EV_USE_CLOCK_SYSCALL, also double-
309     check that the syscall number is available before trying to
310     use it (reported by ry@tinyclouds).
311 root 1.117 - use GetSystemTimeAsFileTime instead of _timeb on windows, for
312 root 1.116 slightly higher accuracy.
313 root 1.122 - properly declare ev_loop_verify and ev_now_update even when
314     !EV_MULTIPLICITY.
315 root 1.121 - do not compile in any priority code when EV_MAXPRI == EV_MINPRI.
316 root 1.123 - support EV_MINIMAL==2 for a reduced API.
317 root 1.125 - actually 0-initialise struct sigaction when installing signals.
318 root 1.127 - add section on hibernate and stopped processes to ev_timer docs.
319 root 1.115
320 root 1.113 3.6 Tue Apr 28 02:49:30 CEST 2009
321 root 1.107 - multiple timers becoming ready within an event loop iteration
322     will be invoked in the "correct" order now.
323 root 1.105 - do not leave the event loop early just because we have no active
324     watchers, fixing a problem when embedding a kqueue loop
325     that has active kernel events but no registered watchers
326     (reported by blacksand blacksand).
327 root 1.102 - correctly zero the idx values for arrays, so destroying and
328     reinitialising the default loop actually works (patch by
329     Malek Hadj-Ali).
330 root 1.108 - implement ev_suspend and ev_resume.
331 root 1.106 - new EV_CUSTOM revents flag for use by applications.
332 sf-exg 1.241 - add documentation section about priorities.
333 sf-exg 1.286 - add a glossary to the documentation.
334 root 1.111 - extend the ev_fork description slightly.
335 root 1.112 - optimize a jump out of call_pending.
336 root 1.102
337 root 1.101 3.53 Sun Feb 15 02:38:20 CET 2009
338     - fix a bug in event pipe creation on win32 that would cause a
339     failed assertion on event loop creation (patch by Malek Hadj-Ali).
340 root 1.100 - probe for CLOCK_REALTIME support at runtime as well and fall
341     back to gettimeofday if there is an error, to support older
342     operating systems with newer header files/libraries.
343     - prefer gettimeofday over clock_gettime with USE_CLOCK_SYSCALL
344     (default most everywhere), otherwise not.
345    
346 root 1.99 3.52 Wed Jan 7 21:43:02 CET 2009
347 root 1.97 - fix compilation of select backend in fd_set mode when NFDBITS is
348     missing (to get it to compile on QNX, reported by Rodrigo Campos).
349     - better select-nfds handling when select backend is in fd_set mode.
350     - diagnose fd_set overruns when select backend is in fd_set mode.
351     - due to a thinko, instead of disabling everything but
352     select on the borked OS X platform, everything but select was
353     allowed (reported by Emanuele Giaquinta).
354 root 1.95 - actually verify that local and remote port are matching in
355     libev's socketpair emulation, which makes denial-of-service
356     attacks harder (but not impossible - it's windows). Make sure
357 root 1.96 it even works under vista, which thinks that getpeer/sockname
358     should return fantasy port numbers.
359 root 1.100 - include "libev" in all assertion messages for potentially
360 root 1.97 clearer diagnostics.
361 root 1.98 - event_get_version (libevent compatibility) returned
362     a useless string instead of the expected version string
363     (patch by W.C.A. Wijngaards).
364 root 1.95
365 root 1.94 3.51 Wed Dec 24 23:00:11 CET 2008
366 root 1.91 - fix a bug where an inotify watcher was added twice, causing
367 root 1.92 freezes on hash collisions (reported and analysed by Graham Leggett).
368 root 1.87 - new config symbol, EV_USE_CLOCK_SYSCALL, to make libev use
369     a direct syscall - slower, but no dependency on librt et al.
370 root 1.88 - assume negative return values != -1 signals success of port_getn
371     (http://cvs.epicsol.org/cgi/viewcvs.cgi/epic5/source/newio.c?rev=1.52)
372     (no known failure reports, but it doesn't hurt).
373 root 1.93 - fork detection in ev_embed now stops and restarts the watcher
374     automatically.
375 root 1.89 - EXPERIMENTAL: default the method to operator () in ev++.h,
376     to make it nicer to use functors (requested by Benedek László).
377     - fixed const object callbacks in ev++.h.
378 root 1.90 - replaced loop_ref argument of watcher.set (loop) by a direct
379     ev_loop * in ev++.h, to avoid clashes with functor patch.
380 root 1.91 - do not try to watch the empty string via inotify.
381 root 1.92 - inotify watchers could be leaked under certain circumstances.
382     - OS X 10.5 is actually even more broken than earlier versions,
383     so fall back to select on that piece of garbage.
384 root 1.93 - fixed some weirdness in the ev_embed documentation.
385 root 1.87
386 root 1.86 3.49 Wed Nov 19 11:26:53 CET 2008
387 root 1.83 - ev_stat watchers will now use inotify as a mere hint on
388     kernels <2.6.25, or if the filesystem is not in the
389     "known to be good" list.
390 root 1.84 - better mingw32 compatibility (it's not as borked as native win32)
391     (analysed by Roger Pack).
392 root 1.85 - include stdio.h in the example program, as too many people are
393     confused by the weird C language otherwise. I guess the next thing
394     I get told is that the "..." ellipses in the examples don't compile
395     with their C compiler.
396 root 1.83
397 root 1.80 3.48 Thu Oct 30 09:02:37 CET 2008
398 root 1.71 - further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
399     backend by assuming the kernel event mask hasn't changed if
400     ADD fails with EEXIST.
401 root 1.75 - work around spurious event notification bugs in epoll by using
402 root 1.77 a 32-bit generation counter. recreate kernel state if we receive
403 root 1.78 spurious notifications or unwanted events. this is very costly,
404     but I didn't come up with this horrible design.
405 root 1.71 - use memset to initialise most arrays now and do away with the
406     init functions.
407 root 1.72 - expand time-out strategies into a "Be smart about timeouts" section.
408     - drop the "struct" from all ev_watcher declarations in the
409 root 1.73 documentation and did other clarifications (yeah, it was a mistake
410     to have a struct AND a function called ev_loop).
411 root 1.74 - fix a bug where ev_default would not initialise the default
412     loop again after it was destroyed with ev_default_destroy.
413 root 1.79 - rename syserr to ev_syserr to avoid name clashes when embedding,
414     do similar changes for event.c.
415 root 1.71
416 root 1.69 3.45 Tue Oct 21 21:59:26 CEST 2008
417 root 1.67 - disable inotify usage on linux <2.6.25, as it is broken
418     (reported by Yoann Vandoorselaere).
419 sf-exg 1.191 - ev_stat erroneously would try to add inotify watchers
420 root 1.68 even when inotify wasn't available (this should only
421 root 1.67 have a performance impact).
422 root 1.65 - ev_once now passes both timeout and io to the callback if both
423     occur concurrently, instead of giving timeouts precedence.
424 root 1.66 - disable EV_USE_INOTIFY when sys/inotify.h is too old.
425 root 1.65
426 root 1.62 3.44 Mon Sep 29 05:18:39 CEST 2008
427     - embed watchers now automatically invoke ev_loop_fork on the
428     embedded loop when the parent loop forks.
429 root 1.58 - new function: ev_now_update (loop).
430 root 1.57 - verify_watcher was not marked static.
431 root 1.59 - improve the "associating..." manpage section.
432 root 1.60 - documentation tweaks here and there.
433 root 1.57
434 root 1.56 3.43 Sun Jul 6 05:34:41 CEST 2008
435 root 1.54 - include more include files on windows to get struct _stati64
436 root 1.56 (reported by Chris Hulbert, but doesn't quite fix his issue).
437 root 1.53 - add missing #include <io.h> in ev.c on windows (reported by
438     Matt Tolton).
439    
440 root 1.52 3.42 Tue Jun 17 12:12:07 CEST 2008
441 root 1.50 - work around yet another windows bug: FD_SET actually adds fd's
442     multiple times to the fd_*SET*, despite official MSN docs claiming
443 root 1.51 otherwise. Reported and well-analysed by Matt Tolton.
444     - define NFDBITS to 0 when EV_SELECT_IS_WINSOCKET to make it compile
445 root 1.48 (reported any analysed by Chris Hulbert).
446 root 1.49 - fix a bug in ev_ebadf (this function is only used to catch
447     programming errors in the libev user). reported by Matt Tolton.
448     - fix a bug in fd_intern on win32 (could lead to compile errors
449     under some circumstances, but would work correctly if it compiles).
450     reported by Matt Tolton.
451 root 1.50 - (try to) work around missing lstat on windows.
452 root 1.45 - pass in the write fd set as except fd set under windows. windows
453 root 1.46 is so uncontrollably lame that it requires this. this means that
454     switching off oobinline is not supported (but tcp/ip doesn't
455     have oob, so that would be stupid anyways.
456 root 1.47 - use posix module symbol to auto-detect monotonic clock presence
457     and some other default values.
458 root 1.45
459 root 1.44 3.41 Fri May 23 18:42:54 CEST 2008
460 root 1.46 - work around an obscure bug in winsocket select: if you
461 root 1.40 provide only empty fd sets then select returns WSAEINVAL. how sucky.
462 root 1.41 - improve timer scheduling stability and reduce use of time_epsilon.
463 root 1.36 - use 1-based 2-heap for EV_MINIMAL, simplifies code, reduces
464     codesize and makes for better cache-efficiency.
465     - use 3-based 4-heap for !EV_MINIMAL. this makes better use
466     of cpu cache lines and gives better growth behaviour than
467     2-based heaps.
468 root 1.38 - cache timestamp within heap for !EV_MINIMAL, to avoid random
469     memory accesses.
470     - document/add EV_USE_4HEAP and EV_HEAP_CACHE_AT.
471 root 1.33 - fix a potential aliasing issue in ev_timer_again.
472 root 1.35 - add/document ev_periodic_at, retract direct access to ->at.
473     - improve ev_stat docs.
474     - add portability requirements section.
475 root 1.39 - fix manpage headers etc.
476 root 1.40 - normalise WSA error codes to lower range on windows.
477 root 1.43 - add consistency check code that can be called automatically
478     or on demand to check for internal structures (ev_loop_verify).
479 root 1.31
480 root 1.30 3.31 Wed Apr 16 20:45:04 CEST 2008
481     - added last minute fix for ev_poll.c by Brandon Black.
482 root 1.29
483 root 1.28 3.3 Wed Apr 16 19:04:10 CEST 2008
484 root 1.23 - event_base_loopexit should return 0 on success
485     (W.C.A. Wijngaards).
486 root 1.20 - added linux eventfd support.
487     - try to autodetect epoll and inotify support
488     by libc header version if not using autoconf.
489 root 1.21 - new symbols: EV_DEFAULT_UC and EV_DEFAULT_UC_.
490     - declare functions defined in ev.h as inline if
491     C99 or gcc are available.
492     - enable inlining with gcc versions 2 and 3.
493 root 1.25 - work around broken poll implementations potentially
494     not clearing revents field in ev_poll (Brandon Black)
495     (no such systems are known at this time).
496 root 1.23 - work around a bug in realloc on openbsd and darwin,
497 sf-exg 1.191 also makes the erroneous valgrind complaints
498 root 1.23 go away (noted by various people).
499 root 1.26 - fix ev_async_pending, add c++ wrapper for ev_async
500 sf-exg 1.191 (based on patch sent by Johannes Deisenhofer).
501 root 1.26 - add sensible set method to ev::embed.
502 root 1.27 - made integer constants type int in ev.h.
503 root 1.20
504 root 1.19 3.2 Wed Apr 2 17:11:19 CEST 2008
505 root 1.15 - fix a 64 bit overflow issue in the select backend,
506     by using fd_mask instead of int for the mask.
507 root 1.16 - rename internal sighandler to avoid clash with very old perls.
508 root 1.18 - entering ev_loop will not clear the ONESHOT or NONBLOCKING
509     flags of any outer loops anymore.
510 root 1.17 - add ev_async_pending.
511 root 1.15
512 root 1.14 3.1 Thu Mar 13 13:45:22 CET 2008
513 root 1.12 - implement ev_async watchers.
514 root 1.10 - only initialise signal pipe on demand.
515     - make use of sig_atomic_t configurable.
516 root 1.14 - improved documentation.
517 root 1.10
518 root 1.9 3.0 Mon Jan 28 13:14:47 CET 2008
519 root 1.6 - API/ABI bump to version 3.0.
520 root 1.4 - ev++.h includes "ev.h" by default now, not <ev.h>.
521     - slightly improved documentation.
522 root 1.5 - speed up signal detection after a fork.
523 root 1.6 - only optionally return trace status changed in ev_child
524     watchers.
525 root 1.8 - experimental (and undocumented) loop wrappers for ev++.h.
526 root 1.4
527 root 1.2 2.01 Tue Dec 25 08:04:41 CET 2007
528 root 1.3 - separate Changes file.
529 root 1.2 - fix ev_path_set => ev_stat_set typo.
530     - remove event_compat.h from the libev tarball.
531     - change how include files are found.
532     - doc updates.
533     - update licenses, explicitly allow for GPL relicensing.
534    
535     2.0 Sat Dec 22 17:47:03 CET 2007
536     - new ev_sleep, ev_set_(io|timeout)_collect_interval.
537     - removed epoll from embeddable fd set.
538     - fix embed watchers.
539     - renamed ev_embed.loop to other.
540     - added exported Symbol tables.
541     - undefine member wrapper macros at the end of ev.c.
542     - respect EV_H in ev++.h.
543    
544     1.86 Tue Dec 18 02:36:57 CET 2007
545     - fix memleak on loop destroy (not relevant for perl).
546    
547     1.85 Fri Dec 14 20:32:40 CET 2007
548     - fix some aliasing issues w.r.t. timers and periodics
549     (not relevant for perl).
550    
551     (for historic versions refer to EV/Changes, found in the Perl interface)
552    
553 root 1.1 0.1 Wed Oct 31 21:31:48 CET 2007
554     - original version; hacked together in <24h.
555