epoll doesn't allow you to do async io to local storage, and io_uring doesn't target the network use case, so they are not quite comparable.
There are several io_uring opcodes intended specifically for the network use case, including: IORING_OP_ACCEPT, IORING_OP_CONNECT, IORING_OP_SENDMSG and IORING_OP_RECVMSG.
Did you mean something else by 'target'?
Don't know how it compares to epoll performance-wise.
In fact io_uring might have direct support for polling now.
io_uring: https://github.com/frevib/io_uring-echo-server
epoll: https://github.com/frevib/epoll-echo-server
kqueue: https://github.com/frevib/kqueue-echo-server
io_uring performs much better than epoll: https://twitter.com/hielkedv/status/1218891982636027905?s=21