If I remember correctly, the node.js team needed a lot of help from experienced Windows developers (even from Microsoft itself??) to add IOCP support to libuv.
I think kqueue is the best (well I guess I'm a BSD fan :D) but in general: app developers generally don't care about this, they just use libuv or libevent or something like that.
Does Windows really have "good stuff" for developers? .NET is excellent, but the lower level APIs look horrible. (And the CP/M / DOS era files stuff – drive letters, file extensions that actually matter – makes me very unhappy.)
Yes, even Windows has good stuff under all that legacy crap, and IOCPs are one of those things. The actual low-level APIs - and I'm talking kernel-level stuff here - aren't that bad. The bad stuff is what's layered on top of that, such as the Win32 APIs, which are genuinely crap.
I also really like kqueue (and unsurprisingly FreeBSD is also my OS of choice) and it's better in general than epoll, but it has its limitations. For instance, directory and file change notifications are less than awesome as kqueue needs file handles. inotify on Linux works better for this stuff, IOCPs just work for this stuff.
My point was that dismissing everything in Windows like jadeddrag did is shortsighted and dumb. It's not as if Unix-like OSs don't have plenty of misfeatures: nobody in their right mind is going to say that sockets couldn't have been designed much better (see how Plan 9 implements them for a better designed API), or that audio on Linux isn't a godawful mess, or that X isn't a monstrosity.
You're right, all that stuff is great, but as they saying goes, "why worry about a speck in the other guy's eye when you've a log in your own?"
> .NET is excellent, but the lower level APIs look horrible.
It is, more or less, what it is. lower level APIs cannot change without breaking backwards compatiblity. Microsoft as an organization is all about backwards compatibility. So this is just not going away, like you say there is stuff in there from DOS that will just not ever go away.
I think kqueue is the best (well I guess I'm a BSD fan :D) but in general: app developers generally don't care about this, they just use libuv or libevent or something like that.
Does Windows really have "good stuff" for developers? .NET is excellent, but the lower level APIs look horrible. (And the CP/M / DOS era files stuff – drive letters, file extensions that actually matter – makes me very unhappy.)
Jails, ZFS, DTrace, FUSE, netmap, PAM, pf – that's good stuff!