-
Notifications
You must be signed in to change notification settings - Fork 7
FAQs
Rust did not exist when the project started in January 2011. Rust's first release was in 2012, by which time ToaruOS already had the first version of its GUI.
Go is not well suited for kernel development, and like Rust did not exist until after ToaruOS had reached a level of maturity.
While D was mature and available at the start of the ToaruOS project, its compilers were not open source until 2014.
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.
Real operating systems aren't written in pure assembly. While doing so is a laudable achievement, it was not even on my radar as a goal. ToaruOS may not be portable to other architectures at the moment, but I hope it one day will be, and that would be utterly impossible if it had been written in assembly.
ToaruOS was meant as a learning experience. C was, at the time (late 2010, early 2011), the language used for operating system kernels and device drivers. On top of that, I was also looking to get better with C - a language I had learned while developing plugins for Compiz. ToaruOS rapidly reached a point where the prospect of rewriting it another language would be infeasible, and I have little interest in starting a new project. At this point, I want to continue with C as I think it's a language I have a reasonable chance of being able to write my own compile for, closing the loop and making ToaruOS a complete product.
ToaruOS implements many Unix-like features. It does this for several reasons, but at the top of the list is that, as a university student at the time of its inception, learning how Unix-like systems worked at a low level was a major goal of the project. There were several times during ToaruOS's development where it implemented non-Unix functionality - usually because the Unix approach was found to be too difficult or time-consuming. Today, ToaruOS has a fork-based process model, file descriptors, a traditional Linux-inspired (and thus Unix-inspired) filesystem tree, uses the same binary formats and basic filesystem as Linux (much like early Linux used the Minix filesystem and object files), implements TTYs and a virtual terminal, but it also includes several subsystems which are not based on Unix such as its approach to shared memory and its packet-based IPC mechanisms. Additionally, more of ToaruOS is focused on userspace, where the compositing window system is completely unlike X11 (though it does take some inspiration from early Wayland).
When I was still in school, my university offered a course in operating systems that several of my elder classmates had taken. That course was in a different department - electrical and computer engineering, rather than computer science - and a CS course I had already taken conflicted with the credit given for the operating systems course (despite not being an operating systems course itself). I wanted to take it, but the CS department denied me. ToaruOS was started somewhat out of spite - if they weren't going to let me take that course, I was going to write my own OS, and it would be way better than anything anyone would make in that course. I would say I succeed in that goal, both in within the timeframe of the course and beyond it.
I once gave a talk on ToaruOS, describing how it worked and a bit on how I had ported Python. After that talk, someone (who will remain anonymous) came up to me and had some choice words about my use of third-party libraries. In their mind, it was cheating. And they weren't alone in expressing that opinion - similar things have been said to me on forums. I wasn't really a fan of the C library ToaruOS was using (newlib), and combined with this backlash I felt compelled to go a different direction and write my own, and this became the ToaruOS-NIH project.