There are a number of microkernel's written using some random custom languages, why is this?
This seems to me to stem from people thinking that they must implemented an OS with C because that's what they did for Unix (back in the 1970's).
So, these people then decide to create a safe C but leave in the same unsafe constructs, e.g. being able to assign an int to an enum and vice versa, they're supposed to be different types!
There are others who don't implement a Safe C but rather prefer some other weird language of their design, I've seen Lisp based languages that fall into this category.
I don't really understand this unless it's an urge to scratch a language design itch. Just start with a safe language, in my case this is Ada, a stripped down version of the language but still one which is safer than those above.