1. 8

I’m looking around for something to generalize an high performance event loop across different systems. I’m not doing anything serious, it’s more of learning. I’m wondering if there is a particular reason to use libev over libuv? The main benefit of libuv seems to be Windows support which may or may not matter to me. Looking at libuv removed its dependency on libev seems to be a few reasons but one of them is that libuv supports edge-triggered events instead of level-triggered events more since that works better in Linux. However, there are some pretty good reasons to avoid edge-triggered depending on who you ask, and the main platform I’m interested in is FreeBSD with kqueue which is level-triggered.

Does anyone have any argument one way or the other? Is libuv superior to libev in every meaningful way? Is the API being specialized for edge-triggering at the expense of level-triggering?

  1.  

  2. 2

    Well, for what it’s worth, libuv is used by Node, so theoretically it is getting some additional love.

    Additionally, libuv is on Github ( https://github.com/libuv/libuv ), whille libev seems to be on CVS somewhere.

    Also, supporting Windows is no small feat, and generally the more cross-platform a library is, the better.

    So, at least from a maintenance and longevity standpoint, libuv seems a winner. They also have good docs.

    1. 1

      generally the more cross-platform a library is, the better.

      See: OpenSSL.