one thing that i am kind of curious about is: why not use event-based (epoll/select/poll) libraries (libev, libevent etc) and create a message passing model on top of those ? the message passing could be done with either protocol-buf style messages or xdr-encoded ones (asn.1 totally sucks)
There is nothing preventing Iris from working with libev or libevent.
It's primary focus is how to handle work after your event loop. For example, you can saturate your network card on very little use of a single cpu. Iris focuses on how to efficiently use the rest of those cpus for processing.
I should also add that messages are ref-counted. The only time they will be serialized is when passing between processes or hosts (which I haven't written yet but is a goal).
http://github.com/chergert/iris/blob/00ba89e06cf457ec5b8f241...