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