Just a little update of what's happening lately. Basically everything is being rewritten. I wasn't entirely happy with some of the namespace and process handling in 0.6.2, which lead to a rewrite of the kernel. I think you'll like kernel 0.4:
Memory management is greatly improved, with all data now stored in memData objects, which keeps track of the data's load state (thereby reducing the chance of executing something that doesn't exist yet.
Process control has likewise had major work done on it; as in it actually exists now. When a process is executed the kernel now assigns it a process id, then passes it to proc. From here it is assigned it's own namespace, and the runstate is monitored:
- loading - waited for data to be loaded from server
- linking - loading libraries, more details below
- running
- exited - and able to display error status too
Amongst other things this means it is now possible to background, kill, and list processes... once kill and ps have been written.
While on the subject of processes, there's been a change in the way programs are written too. The main function that is called is now main() just like in C or C++, rather than using the program's name as before. Also it is now possible to include libraries with #include <library> at the top of a programs source, the library will be linked in when the program is executed.
Back to the kernel, and the browser modules have been refined some, the main difference being that the XMLHttpRequest is now asynchronous thanks to the new memory management; this should speed things up some as formerly the whole system could freeze while waiting for something to load.
There's also new modules in development, the kernel now checks for available sound devices to try to load alsa: Or to put it another way, there's a check to see if flash or java is available, so that an object can be created. The flash or java object can then interact with the kernel via the alsa-swf or alsa-java module depending which was loaded.
Also in the works is a graphics module, this will be able to control output to the terminals better than the present consoleWrite() function. It should also help with the browser window being resized, which at present causes problems. There will also be the possibility of 2D graphics rendering, don't get you're hopes up on 3D though.
The filesystem has also had a rewrite, and now stores it's permissions numerically (755 instead of rwxr-xr-x), this makes it a little easier to work with when programming. Filesystem access has now also been moved away from the shell (which seemed like a good idea at the time, but now seems rather silly), to the kernel -yes another module- this makes the system a little lighter (1 filesystem object instead of 7), and also means programs can have filesystem acces by including libfs.
All in all there's a lot of work going on to actually make a Linux system, rather than something that just looks like a Linux system. It all takes time, but we'll get there eventually...