Most FOSS devs never care to learn such APIs and stay with the lowest common denominator that happens to exist in GNU/Linux and *BSD.
They're definitely not. AIX copied the IOCP interface almost verbatim, but missed one critical piece: associating an IOCP with a desired concurrency level. Solaris added event ports, but again, they missed the concurrency link too.
The root of the problem on UNIX is the readiness I/O model.
See https://speakerdeck.com/trent/pyparallel-how-we-removed-the-... for more info.
It is all about .NET, C++ and additionally the JVM when going outside Windows.
Even though I used UNIX a lot on my career, I have always been with foots on both lands and enjoyed Win32 more than POSIX, claimed as portable, but full of nuaces per UNIX clone.
"an OOP ABI (COM)" you really think this sort of thing is super great and there's nothing like it on "UNIX clones"?
I have heard interesting things about windows async i/o syscalls, but as you'll see in another sub-thread, IIS still has a major component in the kernel, because the overall syscall overhead of windows is apparently somewhat high.
This wouldn't be the first time I've heard of super-fancy windows subsystem designs which in practice were sabotaged by just generally over-complicated implementations. I recall a blog post by Mark Russinovich around the time Vista came out about the new, quite advanced file copying algorithms: http://blogs.technet.com/b/markrussinovich/archive/2008/02/0... - but that file copying performance was often significantly reduced when playing an mp3 file due to the "multimedia class scheduler" - http://superuser.com/questions/18600/107mb-s-network-file-co... - either because i/o and execution priorities didn't actually work, or the engineer assigned to do this didn't know what he was doing and neither did anyone he worked with. Who knows?
This sort of thing is all over microsoft's stuff. Theoretically super advanced, in practice just over-complicated. It's closed source and hugely complicated, so we'll never really know why it doesn't work as well as it should.
If one codes as "C with C++ compiler" then no.
If one makes use of the features that fix C unsafety, then yes.
> "an OOP ABI (COM)" you really think this sort of thing is super great and there's nothing like it on "UNIX clones"?
Which UNIX clone provides a standard OO ABI, as well as, a shell close to the Xerox PARC user experience?
Taligent failed.
I must ask, what exactly makes the current NT kernel a 'hybrid' kernel ?
Also since Windows Vista many drivers are now implemented in user space, with minimal kernel primitives.
Is this what is described as LPC ? Could you elaborate on how it separates the modules (as opposed to unix subsystems) ?
>Thus still offering a micro-kernel cleanness in a monolithic space.
What does this 'cleanness' provide, and how ? It's all in kernel space so if one module crashes the whole kernel crashes ?
What Windows does, is that there aren't any direct calls between modules, only kernel level RPC calls.
All parameters are packed into the RPC message, it is dispatched, unpacked, validated as much as possible on the receiving end, then processed.
Messages and its validation introduce an indirection layer that improves safety.
It is based on the original micro-kernel design Windows NT had, before they moved graphics back into the kernel.
So the micro-kernel message passing is still there, but simplified since now everything runs on the same space. But as of Windows Vista, UDF was introduced for user space drivers.
The "Inside Windows" book series go into great detail how everything works.
There are lots of MS only shops out there and I don't see any of the changing in the near future.