Introduction
The goal of this post is to document the changes I’ve successfully made during the GSoC period, the current state of the project, future enhancement goals, and a few other topics. I also want to extend my thanks to the Haiku developers and community for the opportunity to work on this fantastic operating system.
Background
Haiku is a truly innovative operating system. One of its most interesting approaches to a filesystem lies in the fact that it makes metadata a primary characteristic of the filesystem. In fact, this was one of the core features that it carried over from its predecessor BeOS.
Gerrit Submission.
Check out my final Pull Request here: 8141
Overview
During this GSoC period, I focused on developing the virtio sound driver for Haiku,
aiming to enhance its performance as a guest OS in virtualized environments.
This journey began with some challenges, for example, initially, I missed a small
detail in the driver module path, which prevented the driver from loading.
One of the significant setbacks, I had, was understanding hmulti_audio.
With little to no documentation available, it felt like working with a black box.
I had to dive into existing audio drivers to piece together how things worked, but
even then, some aspects remained hidden to me.
Project overview
QEMU is a virtual machine which allows running an operating system inside of another. While there already is a Haiku port, it currently does not support any acceleration system through native virtualization (through Intel VT-x and AMD SVM.) This makes it too slow for many uses.
This project aimed to bring hardware virtualization to Haiku by porting NVMM, a hypervisor that already has QEMU support, into Haiku from DragonFlyBSD. The project goals (as included on the proposal) were:
The goal of this document is to be an overview of everything I did during GSoC. It should be readable even if you haven’t read any of the previous blog posts and don’t know much about Haiku or WebKit (I hope I succeeded!).
First, some background. Haiku’s native browser is WebPositive.

WebPositive’s code mostly deals with the user interface. It uses our fork of WebKit, HaikuWebKit, to actually render the web pages, run JavaScript, process input, and so on. WebKit (and, by extension, HaikuWebKit) provides two API versions: WebKitLegacy, and WebKit (aka WebKit2). Unfortunately, we are still stuck using WebKitLegacy even though WebKit2 has been out for more than a decade.
Project overview
A part of Google Summer of Code 2024, this project aimed to improve the userland debugging
experience for Haiku app developers, boosting the process of building and porting complex
applications.
The first objective was to have a working build of a modern version of GDB running on Haiku
x86_64
- the most popular architecture with stable Haiku. Using some ideas from the incomplete
recipe
for GDB 8.1, I have ported GDB 15.1 to Haiku from the ground up.
So I’ve implemented mouse support. It also turned out to be really easy to fix text rendering. So, what’s next? Well, some websites like https://discuss.haiku-os.org cause WebKit to crash. This crash also seems to affect other websites. Really, it seems to occur anytime WebKit decides to use multiple bitmaps (actually, in WebKit lingo, backing stores) to render a web page. Rendering a single bitmap is easy, just display it! But when you have multiple, you need to composite them together. It seems like WebKit currently requires EGL and maybe OpenGL to do this.
This report covers hrev57802 through hrev57900.
Project status overview
Completed tasks
The goal of this phase was to stabilize GDB, making it suitable for debugging complex and
multi-threaded applications (including most Be API applications).
After clearing the first round of bug reports, the first revision of the GDB package is now online
on HaikuPorts.
When attempting to use the published package to work on Debugger, I found a second round of bugs,
resulting in the pending second revision of
the port. This version of GDB is now stable enough to attach to and debug a copy of itself.
intro
Hello, once again!
vid?
We made it! I previously stated that we had achieved playback,
but I never got to show it. So here it is, a short video
showing you that playback actually works.
So you don’t have to go and compile it, just to see it on
action.

outro
Main functionality is here! So, I believe that it may be
time to maybe push into the main branch.
Success! Now MiniBrowser displays things once again. Here is MiniBrowser showing https://review.haiku-os.org/

So, yeah, there’s still plenty of work left to do. Text isn’t rendered properly, keyboard and mouse support is missing, the window can’t be resized without MiniBrowser crashing, and it crashes when exited. I’ll take it one step at a time. Let’s make the mouse work! Then I can actually click on stuff. I think implementing that will be straightforward.