logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Status-update-July-2022.md (3590B)


  1. ---
  2. title: Status update, July 2022
  3. date: 2022-07-18
  4. ---
  5. Hello there! It's been a hot July week in Amsterdam, and I expect hotter days
  6. are still to come. I wish air conditioning was more popular in Europe, but alas.
  7. This month of FOSS development enjoyed a lot of small improvements in a lot of
  8. different projects.
  9. For Hare, I have introduced a number of improvements. I wrote a new standard
  10. library module for string templates, [strings::template], and a new third-party
  11. library for working with pixel buffers, [pixbuf]. The templating is pretty
  12. simple — as is typical for the standard library — but allows a
  13. fairly wide range of formatting options. We'll be extending this a little bit
  14. more in the future, but it will not be a complete solution like you see in
  15. things like Jinja2. Nevertheless, it makes some use-cases, like code generation,
  16. a lot cleaner, without introducing a weighty or complex dependency.
  17. [strings::template]: https://docs.harelang.org/strings/template
  18. [pixbuf]: https://git.sr.ht/~sircmpwn/pixbuf
  19. pixbuf is pretty neat, and is the first in a line of work I have planned for
  20. graphics on Hare. It's similar to pixman, but with a much smaller scope —
  21. it only deals with pixel buffers, handling pixel format conversions and doing
  22. small operations like fill and copy. In the future I will add simple buffer
  23. compositing as well, and extending modules like [hare-png] to support loading
  24. data into these buffers. Later, I plan on writing a simple vector graphics
  25. library, capable at least of rendering [TinyVG] images and perhaps later TinySVG
  26. as well. I'm also working on [hare-wayland] again, to provide a place to display
  27. these buffers.
  28. [hare-png]: https://git.sr.ht/~sircmpwn/hare-png
  29. [TinyVG]: https://tinyvg.tech
  30. [hare-wayland]: https://git.sr.ht/~sircmpwn/hare-wayland
  31. I also introduced [format::tar], which will serve as the basis of
  32. initramfs-alike functionality for Helios. On the subject of Helios, much work
  33. has been completed. I have implemented a PCI driver and a small proof-of-concept
  34. AHCI driver (for reading from SATA disks). Alexey Yerin has also been hard at
  35. work on the RISC-V port, and has successfully implemented an e1000 ethernet
  36. driver which can send and receive ICMP (ping) packets. I also completed IRQ
  37. control for userspace, so that userspace device drivers can process interrupts,
  38. and used it to write a keyboard driver for a functional [DOOM port]. The full
  39. DOOM port required a fair bit of work — check out that blog post for the
  40. complete details. The idle thread was also added, so that all processes can be
  41. blocked waiting on interrupts, signals, endpoints, etc. Non-blocking send,
  42. receive, and wait syscalls were also added this month.
  43. [format::tar]: https://docs.harelang.org/format/tar
  44. [DOOM port]: https://drewdevault.com/2022/07/01/Porting-DOOM-to-Helios.html
  45. I'm working on splitting memory capabilities into separate device- and
  46. general-purpose capabilities, then adding support for destroying capabilities
  47. when they're no longer required. I also implemented pre-emptive multi-tasking
  48. early this month, and the vulcan test suite now has several multi-threaded tests
  49. to verify IPC functionality. However, a couple of pieces are missing — the
  50. ability to create and work with new cspaces and vspaces — in order to
  51. spawn new processes. I'll be focusing on these tasks in the coming weeks. With
  52. these pieces in place, we can start working on Mercury and Vulcan: the driver
  53. system.
  54. I'll save the SourceHut news for the "what's cooking" post later today, so
  55. that's all for now. Until next time!