logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git
commit: 8bda407deeef39adbe0cb491bf53977e25fcccdb
parent 276441b9cf1f3a2ff0841bd83ce60106e06facfa
Author: Drew DeVault <sir@cmpwn.com>
Date:   Mon, 18 Jul 2022 10:39:44 +0200

Status update

Diffstat:

Acontent/blog/Status-update-July-2022.md64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+), 0 deletions(-)

diff --git a/content/blog/Status-update-July-2022.md b/content/blog/Status-update-July-2022.md @@ -0,0 +1,64 @@ +--- +title: Status update, July 2022 +date: 2022-07-18 +--- + +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 &mdash; as is typical for the standard library &mdash; 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. + +[strings::template]: https://docs.harelang.org/strings/template +[pixbuf]: https://git.sr.ht/~sircmpwn/pixbuf + +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 &mdash; +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. + +[hare-png]: https://git.sr.ht/~sircmpwn/hare-png +[TinyVG]: https://tinyvg.tech +[hare-wayland]: https://git.sr.ht/~sircmpwn/hare-wayland + +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 a virtio 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 &mdash; 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. + +[format::tar]: https://docs.harelang.org/format/tar +[DOOM port]: https://drewdevault.com/2022/07/01/Porting-DOOM-to-Helios.html + +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 &mdash; the +ability to create and work with new cspaces and vspaces &mdash; 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!