Fiasco Microkernel Version 1.0 Released
'lonzo writes "Version 1.0 Fiasco, a GPL re-implementation of the L4 microkernel has recently been released. This microkernel is designed to be a flexible hardware abstraction layer rather than YetAnotherCloneOfUnix. Its 'mechanism not policy' design allows far more opportunities for *ghasp* innovation than any of the Unix clones. It also provides people with an alternative to the macrokernel design of Linux. Get your copy here. Linux has already been ported to this OS, get it here, and another port."
Fiasco Microkernel Version 1.0 Released
So, Hurd is finally out? WOW!!!
Hey, maybe if L4 was ported to L4, apps would run in user-user-user-...-space.
Having a metacircular operating system (one that can run as a user process within another instance of itself) is actually useful, as it allows for virtualizing a machine. This can make server configuration and isolation easier (which is why it's common on mainframes), and it makes kernel debugging a lot easier. Look at User Mode Linux and the new Plex86 for more info.
Will I retire or break 10K?
Its 'mechanism not policy' design allows far more opportunities for *ghasp* innovation than any of the Unix clones.
I agree, but where is it? The L4 crowd, like Mach before them, spent so much time building the microkernel that they haven't built anything interesting on top of it.
A sensible person would stop reading here, but I'm not sensible. The most suitable language for writing a given OS depends highly on internal (e.g. features) and external (e.g. linkability) constraints. We used to have operating systems written in assembler, PL/I and Oberon. Nowadays we have boot PROMs written in Forth. All of these decisions were certainly justifiable at the time.
Incidentally, I used to say pretty much the same things that you do about C++, until I wrote my first nontrivial application in C++. Nowadays I'm not a C++ zealot, but I'd far rather hack in C++ than in C any day.
Pull up your Linux source and have a look at fs/pipe.c. Scroll down to do_pipe. Stare at the code for a moment. All those gotos didn't write themselves.
Now scroll up to the file_operations structs. What you're looking at is a bunch of virtual function tables.
This type of code may not be much shorter in the equivalent C++, but it's going to be a lot more than 1% different, and the difference is almost all going to be in maintainability, which is far more precious than number of lines of code.
I don't know where you've been. There are lot more job placements for Unix C++ programmers than Unix C programmers.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});