Compared to the midnight bamboo forest my company built. A challenging codebase, not by its merits but because you need to be clever just to find your way through.
Anyone know if Google is hiring webforms developers?
Why do you want to implement something small with
something that is large?
Consider the size and amount of equipment involved in making watches. Or microchips, for that matter.Because if there was anything proven from years and years of using C, it's that it is woefully insecure and should not be trusted to write a kernel with.
You can still fuck up with C++, sure, but std::shared_ptr offers more guarantees than *.
EDIT: HN stop eating my stars
seL4, a third-generation microkernel is 8,700 lines of C code and 600 lines of assembler.
http://web1.cs.columbia.edu/~junfeng/09fa-e6998/papers/sel4....
So we also empirically know that you can formally verify a microkernel written in C. Now if the Fuchsia folks had gone ahead and formally verified their microkernel, this issue would be moot. But they haven't. So we are instead left with std::shared_ptr offers more guarantees than *. While this isn't nothing, it isn't much either.
Good coding practices take no time to implement, you learn it once and you write that way. It is not bullet proof, neither are capabilities. Still, at least they're practical.
It's true that seL4 is not a magic safety or security bullet; in particular, their FAQ says that they haven't completed extending their proofs to DMA safety via VT-d or SystemMMU on ARM, so DMA-accessing services would have to be separately verified. And its particular feature set may not be appropriate for all situations. But if its API does work for you, it would be foolish not to at least consider using it.
It is really unreasonable to dismiss seL4 simply because it took them a lot of effort to create it. That effort is now done and can be re-used and magnified by further effort.
http://www.ldra.com/en/software-quality-test-tools/group/by-...
Embedded, real-time Java could also be on the list since Java ecosystem has a verification tool for about everything. CompSci loves Java for some reason (probably mandated classes). Yet, verifiable C and SPARK are closer to the metal than embedded Java plus no Oracle risk. So, left off Java as well.
On the Java side you can probably check what Aonix used to do, they are now part of PTC.
http://www.ptc.com/developer-tools/perc
Also there are the guys from MicroEJ.
http://www.microej.com/products/device-software-development/...
There is no Oracle risk with Java, when companies play by the rules.
PTC, Aicas, IBM, MicroEJ, Excelcior JET, HP, Cisco, Ricoh, Azul, Red Hat and so many other companies are selling JDKs with their own set of features, without having had any issue with Sun or Oracle.
Only Google has an issue with Oracle, because they decided they were the cool kid better than anyone else whose rules don't apply to.
Capabilities. Like fine grain locks, these are very powerful and very hard to get right. That's the lesson from Hydra, the 432, .... No, it's not a hard mechanism for the microkernel to get right; it's a hard policy for the application programmer to get right. However, that's probably more of an opportunity rather than meant as a criticism. Our tools are massively more evolved than they were in the 70s. It'll be interesting to see what happens with capabilities.
C++. Oh lord. Why are you writing a microkernel in C++? If there was anything they learned from L4 (Xen, Linux, ...) it is that C is sufficient. Why do you want to implement something small with something that is large? This one is a real head scratcher.
Provably secure. They did this with the SEL4 microkernel so this is a doable thing. If they're going to hang their hat on security (capabilities, microkernel, ...) there's no excuse for not having done this already and delivered a provably secure microkernel out of the box.