ToaruOS 2.0
github.com
github.com
For those that would (most understandably) not get the reference in those names, there is a novel saga called "To Aru Majutsu no Index"/"a certain magical index", which the name references (to aru == "a certain"), and Misaka/Kuroko are characters from it.
By the way, is Yutani a reference to something ?
SerenityOS is in modern C++, and benefits enormously.
> I wrote ToaruOS at a time when I was much more competent at C than C++. I still think that's true. At this point, the effort of rewriting datastructures to make use of C++ functionality would not be a good use of time - and writing userspace code in C++ in ToaruOS-NIH is not yet possible as I have yet to get a C++ standard library set up.
Plus, C++ requires extra setup at the kernel level given the init code. It also requires manually designing your vtables.
Also, verifying C (if you ever go that route) is many times easier than verifying C++.
Also C compiles faster in many cases, easing development.
Plus C doesn't bark at you about certain ASM-isms that are frequently found in kernel code.
Plus C is arguably easier to reason about.
Plus C++ standard library can't be used anyway and auto pointers aren't really that much of a concern at the kernel level
Plus you're doing a lot of init work that never returns thus automatic destructors aren't as useful.
Also C is just fun, and perfectly suited for the task.
https://github.com/microsoft/wil
"Ah, but that isn't used on the Windows kernel" would be the expected reply, well
https://community.osr.com/discussion/291326/the-new-wil-libr...
"Microsoft's toolchain does not ship a copy of the STL that works in kernel mode. Partly this is because the kernel's CRT doesn't support C++ exceptions. (And partly this is because I/O is wildly different in kernel, so you'd have to rewrite the implementation of all the I/O libraries.)
But for kernel developers, wil ships a subset of an STL implementation. To avoid conflicting with the real STL, it's available under the wistd namespace. The rule of thumb is that wistd::foo is a drop-in replacement for std::foo."
C doesn’t suffer from this for one. You have more time to focus on the task than on managing the myriad ways of doing the same thing.
About all proto-C++ had that was actually useful and usable, beyond C, was destructors. That changed by around 2003.
So it was much less mature than even Rust is today.
But Rust is more mature now than C++ was in 2007. Fully self-contained projects can move fast.
Just wait when the first set of monadic libraries full of macros start landing on Linux drivers.
I am quite sure Linus won't be amused, but hey at least it isn't C++. /s