libev-3.48 has just been released

Marc Lehmann schmorp at
Thu Oct 30 13:10:24 CET 2008

I am pleased to announce libev 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.


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_    
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      pcg at
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list