Release 0.6.1-dev (Ruby)
Almost two years has passed since the first release of Vali. In this time a lot of new features and improvements has been made, both to the userspace and the kernel.
Highlights
Kernel
One of the big changes to the kernel project was that we finally switched completely to using CMake for our build system! We've also switched IPC system to implement libgracht. All services and drivers has been rewritten to use libgracht.
- [x86-64] Fixed the hardware layer for 64 bit. We were implementing and using both the IDT and GDT wrong.
- [x86-64] Fixed the cloning and cleanup of memory spaces.
- [library] Added new datastructures as list, queue, stack and hashtable. Started the outphasing of collection.
- [library] Implemented support for socket interface in libc
- [library] Implemented support for event descriptors in libc
- [library] Implemented support for io-set descriptors in libc
- [services] Implemented the netmanager service that provide sockets and networking
- [services] Rewrote the filemanager in newer code style, cleaned up the code and added more defensive coding.
- [drivers] PS2/Keyboard was improved and optimized handling of key codes. I don't think its perfect yet.
- [kernel] Rewrote several subsystems, including mutexes, memory, interrupt handling, IPC and threading.
- [kernel] Restructured several areas of the kernel code-files
Libgracht
Libgracht is a new protocol library I've implemented during the past year which handles all communication between processes, drivers and services. It supports asynchronous and synchronous messaging, and it supports batch messaging. Protocols are written in XML and both client and server code is then generated.
Libgracht is still in early stages so there are some bugs to iron out, and the protocol format could use a cleanup. Features include
- Protocol defined types and structures
- Asynchronous and synchronous function calls
- Events
- Broadcasting
Userspace
So some of the most exciting changes has been made here! We've completely rewritten the userspace and given the entire operating system a new look and feel. Pictures will be coming in a near future!
- Completely rewritten vioarr to use libgracht for its windowing protocol. Vioarr is rewritten in C code and has many new features, including input proxying.
- Rewritten large parts of Alumni (Terminal) to allow for many more features, including better key handling and visual layout!
- Ported doom
- Updated mesa3d to newest release at time of writing
- Implemented a new framework for writing applications, called Asgaard. This quickly enables us to create new window applications that handle most of needs from input to drawing!
Downloads
Both prebuilt disk images for virtual machines and the SDK is available at the website