I am pleased to announce libev 3.48.
Distribution: http://dist.schmorp.de/libev/libev-3.48.tar.gz
Documentation:
http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod?pathrev=rel-3_48
Changes: http://cvs.schmorp.de/libev/Changes?pathrev=rel-3_48
Changes include:
- libev now tries very hard to work around problems with fork and spurious
event notifications by using a 32 bit generation counter to a) verify
that an event is uptodate and b) to recreate the kernel state from scratch
when a spurious event is received.
- further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
backend by assuming the kernel event mask hasn't changed if
ADD fails with EEXIST.
- use memset to initialise most arrays now and do away with the
init functions.
- expand time-out strategies into a "Be smart about timeouts" section
in the dcoumentation.
- fix a bug where ev_default would not initialise the default
loop again after it was destroyed with ev_default_destroy.
Enjoy!
If anybody is interested in the gory details of why this was necessary
with epoll, I can expand the topic in more detail. What prompted the
change was the realisation that you cannot work around the breakage
from the child process after a fork, and spurious notifications can be
generated in cases where they are hard to work around for the application.
--
The choice of a Deliantra, the free code+content MORPG
-----==- _GNU_ http://www.deliantra.net
----==-- _ generation
---==---(_)__ __ ____ __ Marc Lehmann
--==---/ / _ \/ // /\ \/ / [EMAIL PROTECTED]
-=====/_/_//_/\_,_/ /_/\_\
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev