Milestone 4 The Year of the Brutal Desktop
Graphical User Interface Library
In the last milestone post, we said that milestone four would focus on the network and storage stack. Well, we got a bit sidetracked and instead got a GUI rolling.
We are introducing brutal-GUI, a cross-platform user interface library for BRUTAL, Linux, macOS, and probably any other platform where SDL is supported. It supports flexbox-inspired layout, right-to-left, left-to-right layout, and simple widgets like icons, images, buttons, and labels.
We built brutal-GUI on top of brutal-GFX, a vector-based graphic library implementing affine transforms, SVG paths, vector fonts, and gradients. This library was a joint effort of me (sleepy_monax), Supercyp, which helped improve performance, and Feliwir, who worked on vector fonts support.
You might have noticed, but we have a new website! It's built on state-of-the-art web technologies like Next, React, TailwindCSS, and MDX. This might look overkill for a simple blog, and you might be correct, but we have big plans for the future ;)
Our compiler got a lot of love during this release cycle, and one of the highlights is the error reporting inspired by the rust compiler:
This is still a work in progress and at a PR state.
While disks and file systems were finally not the focus of this milestone, BRUTAL gained rudimentary support for AHCI and EXT2 thanks to Supercyp. And this effort will continue onto milestone five.
We started working on RISC-V support, it's still early, but we have VMM, interrupts and device tree, and UART working.
Our IPC subsystem got a substantial overhaul. Now the system is split into components that communicate using capabilities. Each one has a manifest that describes which system capabilities are needed to start and the list of rights it possesses. Components and capabilities are wired together by the system server using the manifest. This architecture is mainly inspired by the Fuchsia operating system built by Google.
On top of everything stated above, the system received countless bug fixes and minor refinements, a documentations effort was started, and our build system got many improvements.
Acknowledgements And Contributing
I (sleepy_monax) want to thank everyone who continued to help Brutal grow. Like every milestone before, I'd like to thank Supercyp for all his work around the system, Feliwir, who just joined the project and worked on Compression, Vector fonts, and the IO stack. And everyone else who contributed to this milestone!
Thanks for reading, and happy hacking :^)