Status update, July 2022 July 18, 2022 on Drew DeVault's blog

Hello there! It’s been a hot July week in Amsterdam, and I expect hotter days are still to come. I wish air conditioning was more popular in Europe, but alas. This month of FOSS development enjoyed a lot of small improvements in a lot of different projects.

For Hare, I have introduced a number of improvements. I wrote a new standard library module for string templates, strings::template, and a new third-party library for working with pixel buffers, pixbuf. The templating is pretty simple — as is typical for the standard library — but allows a fairly wide range of formatting options. We’ll be extending this a little bit more in the future, but it will not be a complete solution like you see in things like Jinja2. Nevertheless, it makes some use-cases, like code generation, a lot cleaner, without introducing a weighty or complex dependency.

pixbuf is pretty neat, and is the first in a line of work I have planned for graphics on Hare. It’s similar to pixman, but with a much smaller scope — it only deals with pixel buffers, handling pixel format conversions and doing small operations like fill and copy. In the future I will add simple buffer compositing as well, and extending modules like hare-png to support loading data into these buffers. Later, I plan on writing a simple vector graphics library, capable at least of rendering TinyVG images and perhaps later TinySVG as well. I’m also working on hare-wayland again, to provide a place to display these buffers.

I also introduced format::tar, which will serve as the basis of initramfs-alike functionality for Helios. On the subject of Helios, much work has been completed. I have implemented a PCI driver and a small proof-of-concept AHCI driver (for reading from SATA disks). Alexey Yerin has also been hard at work on the RISC-V port, and has successfully implemented an e1000 ethernet driver which can send and receive ICMP (ping) packets. I also completed IRQ control for userspace, so that userspace device drivers can process interrupts, and used it to write a keyboard driver for a functional DOOM port. The full DOOM port required a fair bit of work — check out that blog post for the complete details. The idle thread was also added, so that all processes can be blocked waiting on interrupts, signals, endpoints, etc. Non-blocking send, receive, and wait syscalls were also added this month.

I’m working on splitting memory capabilities into separate device- and general-purpose capabilities, then adding support for destroying capabilities when they’re no longer required. I also implemented pre-emptive multi-tasking early this month, and the vulcan test suite now has several multi-threaded tests to verify IPC functionality. However, a couple of pieces are missing — the ability to create and work with new cspaces and vspaces — in order to spawn new processes. I’ll be focusing on these tasks in the coming weeks. With these pieces in place, we can start working on Mercury and Vulcan: the driver system.

I’ll save the SourceHut news for the “what’s cooking” post later today, so that’s all for now. Until next time!

Articles from blogs I read Generated by openring

A rant about resolutions

Once again someone is wrong on the internet, so I have to write about it... Luckily it's about being pedantic about something that nobody cares more than 10 seconds about. When I started with computers resolutions were simple, you had 640x480, 800x600 …

via BrixIT Blog March 15, 2026

Enzyme Detergents are Magic

This is one of those things I probably should have learned a long time ago, but enzyme detergents are magic. I had a pair of white sneakers that acquired some persistent yellow stains in the poly mesh upper—I think someone spilled a drink on them at the b…

via Aphyr: Posts March 11, 2026

npmx: A Lesson in Open Source's Collaboration Feedback Loops

npmx launched today, and witnessing its incredible development journey has taught me a lot about what I’m calling the collaboration feedback loops of successful Open Source projects — patterns where every contribution to a project makes future contributions…

via Vlad's Website March 3, 2026