[GSoC 2024] Improving the Userland Debugging Experience - Progress Report #2

Blog post by trungnt2910 on Sun, 2024-07-28 00:00

Project status overview

Completed tasks

The GDB port is feature-complete. A recipe has been submitted to HaikuPorts.

This took a bit longer than expected due to complexities in building the full GDB compared to gdbserver - all of which will be covered in the technical details section below. Subtle bugs revealed by invoking the debugger in different use cases delayed the project even more.

Despite being off schedule, I believe delivering a fully-functional GDB along with comprehensive documentation around it would benefit the community much more in the long run.

[GSoC 2024] Virtio Sound: Recording Achieved and more

Blog post by diegoroux on Sat, 2024-07-27 00:41

intro

Hello, once again! It’s been weeks since the last update, so here we go.

Good news, there is active development of the virtio sound driver for Haiku. Key progress includes recording on the device and improvements.

buffer exchange redesign

As per the last blog post:

We still specify 2 playback buffers, but incremented to 16,384 frames per buffer, to handle audio streams.

struct multi_buffer_info {
    // [...]

    bigtime_t       played_real_time;
    bigtime_t       played_frames_count; 
    
    // [...]

    int32           playback_buffer_cycle;

    bigtime_t       recorded_real_time;
    bigtime_t       recorded_frames_count;
    
    // [...]

    int32           record_buffer_cycle;

    // [...]
};

I messed up a lot during these last two weeks. A certain bug appeared, and it was a tricky one, not even appearing all the time. As far as I’m concerned, it looks like I should not have gone playback-first and recording-last.

[GSoC 2024] Hardware Virtualization: Progress Report #2

Blog post by dalme on Thu, 2024-07-25 19:59

Another month has gone by and we’re entering now the last month of GSoC! So, what did I get done this month?

What works now that didn’t work before?

  • The driver supports now the 16 IOCTL calls defined by the driver, which means that both the frontend and the VMX backend are complete.
  • EPT tables support: Much of my previous post content was about EPT tables and all the problems I was having to get them working. Now support for them is complete and it works! The EPT page fault handler only consists of one call to Haiku’s page fault handler, since it’s everything integrated into Haiku’s virtual memory subsystem.
  • libnvmm’s test suite is ported and all tests pass.
  • QEMU (latest version from Haikuports) is capable, after applying a patch, of detecting NVMM support and compile. It doesn’t work, sadly, something breaks after executing a few chunks of any given VM.

However, I didn’t make any progress on the SVM backend (which is still at a very early state). I’m beginning to realise that this is one thing I won’t be able to finish during the coding period. I probably have all the pieces needed to port it but I have to look at the differences between SVM and VMX (there are a few) and that will probably take some time I might not have in the end. Also, it’s worth to mention that despite getting more and more stuff working the list of TODO things keeps getting longer and longer. Things on that list are improvements on performance and behavior (NVMM’s kidnaps the CPU which is probably not the best behavior if we want the system to be responsive, 
). None of them is very long or difficult but there are a lot of those little things to do so they will end up requiring a considerable amount of time.

XMPP Coding Sprint Berlin

Blog post by Nephele on Sun, 2024-07-21 12:09

Nephele’s report:

This weekend in Berlin PulkoMandy and I attended an Coding sprint in Berlin to work on Renga, the XMPP client for Haiku.

On the first day we got settled first, had a nice introductory round and worked a bit on Renga. Everyone else seemed to want to work on end to end encryption, and then you have us: PulkoMandy improving the multi user chat experience, and me␚ deleting the settings menu. After all, quite a productive start!

[GSoC 2024] Drawing to the Screen!

Blog post by Zardshard on Wed, 2024-07-17 09:03

WebKit wasn’t trying to draw anything to the screen. Turns out, it wasn’t aware that it was visible. No use drawing a web page when you’re invisible, right? Well, I told it that it is visible, and now it’s trying to draw to the screen. Of course, it crashes while trying to do so. It hasn’t tried to draw to the screen in ages. Everything is bit rotted!

So far, it looks like this will mostly be a collection of minor tasks. Nothing worthwhile to write about here yet, at least. If I’m lucky, it will stay that way and we can have a nice web page displayed by WebKit pretty soon.

Haiku Activity & Contract Report, June 2024

Blog post by waddlesplash on Mon, 2024-07-15 23:45

This report covers hrev57754 through hrev57801.

[GSoC 2024] Virtio Sound: Playback achieved.

Blog post by diegoroux on Wed, 2024-07-10 16:02

intro

Hello, once again! It’s been three weeks since the last update, so here we go.

Good news, there is active development of the virtio sound driver for Haiku. Key progress includes achieving playback on the device.

Getting the buffers ready.

We need to tell hmulti_audio where it should expect to write and read the audio frames, to do that we need to fill out a structure called multi_buffer_list:

struct multi_buffer_list {
    // [...]

	int32			return_playback_buffers;
	int32			return_playback_channels;
	uint32			return_playback_buffer_size;

    // Contains the pointer to the start of a given buffer,
    // as well as the stride it should take.
	buffer_desc **	playback_buffers;

    // [...]

	int32			return_record_buffers;
	int32			return_record_channels;
	uint32			return_record_buffer_size;

	buffer_desc **	record_buffers;

    // [...]
};

We currently specify 2 playback buffers, 1024 frames per buffer, to handle audio streams. The number of channels is specified in the chmap_query or defaulting to stereo if no channel maps are given by the device.

[GSoC 2024] Fixing IPC in WebKit

Blog post by Zardshard on Fri, 2024-06-28 13:34

WebKit is split into several processes. One of these processes is the browser itself. In my case, this is MiniBrowser, but, hopefully, in the future, it is WebPositive. Since browsers can have any name, WebKit refers to this process as the UIProcess. And, indeed, that process is mainly responsible for the UI. Our port will also be using two other processes: NetworkProcess and WebProcess. Unsurprisingly, NetworkProcess does the networking. WebProcess does all of the work associated with a single web page. For example, it is responsible for running JavaScript and does most of the work for rendering the web page. There is one WebProcess for each web page.

[GSoC 2024] Hardware virtualization: Progress Report #1

Blog post by dalme on Thu, 2024-06-27 02:47

When the coding period began I was expecting to publish a progress report every week. However, we’ve reached the end of the first month of the coding period and this is my first update: This probably tells that there hasn’t been as much progress as I expected, although progress have been made.

What works

  • The library was one of the first things I got done, because it consists of very portable code, which made it very easy to port, while allowing me to test the (still reduced) driver capabilities much easier as I could use already existing code examples for NVMM instead of trying to talk directly to the driver.

Usability Enhancements for the Find Panel [GSoC 2024]

Blog post by Calisto-Mathias on Tue, 2024-06-25 16:13

Enhancing the Find Panel: A Comprehensive Update

Introduction

Hi there everyone. Since I made my first contribution to the project, I thought making a blog post about it would be helpful. I’m excited to know your thoughts on the changes that have been made to the Find Panel. Most of the current changes are made with ease of use kept in mind.

These updates include the addition of a Menu Bar and the migration of the more-options section into this Menu Bar. This blog post details all the changes and how they are intended to be used.