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
libev@lists.schmorp.de
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to