After off-list discussion with Alexandre I've pushed a new revision, with:
* fds are demoted from being full objects and instead simply stored as fds, therefore no longer use the client side fd cache, * server fds are now created unconditionally at object creation time, * event, semaphore, and mutex objects use a union for fds and server-side state.