| > I don't understand your opposition to writing a kernel in some form of Oberon, but accepting pretty much any other language/paradigm When people talk about developing a kernel in a language other than C, the question that springs to mind is So what does this choice of language bring to the table? Rust and especially SPARK bring significant assurances of correctness, as they both improve greatly on the unsafety (supposing that's a word) of the C language. The same is true of a middle-of-the-road language like Java, but Java isn't ideally suited to kernel development. (If OS researchers prove me wrong on this point, then that's great, of course.) Assembly isn't a very compelling choice of language in terms of safety/correctness assurances, but I can see the appeal for a hobbyist OS, or for a carefully tuned high-performance codebase. From what I know of Oberon, using it for kernel development isn't in itself very interesting. Does it offer the guaranteed absence of broad categories of runtime errors? I guess it's still probably a rather safer language than C, and I presume its performance is ok, but this isn't anything new. (Of course, I've only talked about language. There are plenty of other ways an OS can be interesting besides the language it's implemented in, but that's the topic at hand.) |
Microsoft had an experimental OS called Singularity [1]
--- start quote ---
The lowest-level x86 interrupt dispatch code is written in assembly language and C. Once this code has done its job, it invokes the kernel, which runtime system and garbage collector are written in Sing# (an extended version of Spec#, itself an extension of C#) and runs in unprotected mode.
--- end quote ---
And don't forget that SIM cards in your phone run a Java... -ish [2,3]
[1] https://en.wikipedia.org/wiki/Singularity_(operating_system)
[2] https://www.defcon.org/images/defcon-21/dc-21-presentations/...
[3] https://en.wikipedia.org/wiki/Java_Card