Haiku monthly activity report - 04/2018

Welcome to the fourth monthly report for 2018!

This report covers hrev51873-hrev51921.

32/64 bit hybrid support

Let's start with the most exciting developments this month: Korli started work on a 32/64 bit hybrid. The idea is to run a 64bit system, but allow 32bit applications to run on it. While we are just at the very first steps, it is a good thing that this is being worked on, as it will allow us to move more smoothly towards 64bit support.

Filesystems

Korli fixed yet another SMAP violation in the FAT filesystem, making sure we have a clean separation between user and kernel space and no shortcuts taken.

Axeld reworked the code for file locking, so that it can be implemented directly by each filesystem if needed, rather than at the VFS level. This allows locking to work on NFS shares (and also lock other computers from accessing files, then). However this introduced a new panic which is triggered a little too easily currently. It seems that we are in some cases forgetting to unlock the files.

Standard libraries

krish_iyer reworked the BString unit tests to clean up various little problems: style fixes, proper use of cppunit, and other fixes.

Translators

Alexander Coers removed some old hacks in the PNG translator configuration view, to avoid layouting problems in various cases. The translator settings are a bit difficult to get right because they can be embedded in other application's windows, as a result they are one of the few places where we must get layouted and old-style non-layouted controls living side by side in a window.

The layout system is an Haiku extension to the interface kit, which allows to let the OS figure out by itself the appropriate size and position of views in a window. Before this, the application had to compute position and size of everything by itself, usually leading to truncated text and other similar issues when changing the font size or the system language.

Drivers

Korli added a blacklist to the usb_hid driver, so that wacom tablets are handled by their dedicated drivers, and also blacklisted a temperature sensor, which is not really an HID device (HID stands for Human Interface Device, and the temperature sensor doesn't involve an human)

He also synced some ethernet driver with FreeBSD 11.1 (still no wireless support for FreeBSD11 drivers at the moment).

Korli also worked on our virtio support, with many fixes to the core of it (the virtio bus), and then much improved support for virtio network. He then added support for the balloon memory virtio device, which allows to dynamically change the RAM size of a virtual machine as needed, and give back unused RAM to the host system.

miqlas added the PCI ID for his new wifi card to the list of supported ones, as it seems to be working just fine with the existing driver.

Kernel

Korli reworked various modules to reduce their stack usage, by using dynamic allocation instead. In some cases the issues were mostly harmless, but in others the code could be used to trigger a stack overflow and used as an attack vector.

He also made some cleanups to the PAE code, while investigating an issue with AMD bulldozer and other pre-Ryzen systems. Haiku is very unstable on these and the exact reason has not been identified yet.

Build system

Waddlesplash fixed the test for xattr support, which would not detect them properly if run during a clean build because it forgot to create a directory before using it.

He also tweaked once again the attribute emulation layer and the way we intercept C library calls to achieve it, so it should now be possible to build Haiku from Haiku again.

Code cleanups

tqh made various changes in many places to fix cppcheck warnings as well as some of the problems reported by PVS-Studio when they ran a scan of Haiku.

Philippe Houdoin fixed an oversight in the "shutdown" program, which would return an error even when everything went as expected.

Servers

axeld added a logging system to launch daemon, to allow debugging related problems.