Haiku monthly activity report - 11/2018

Welcome to the last activity report in 2018!

I notice that I have not written any report since july. Thanks to the other community members who took care of them during that period, as I was busy moving (again) to a new flat, and then visiting the USA for the GSoC mentor summit and germany for BeGeistert.

Anyway, this report covers hrev5263-hrev52615. We are past the beta release now, so unsurprisingly, the activity is mostly focused on bugfixes, but there are always some new things going on.

The report includes work done during BeGeistert, which partially explains the higher than usual commit count. But we also got some new contributors, which is great!

runtime_loader

Korli fixed detection of gcc version 7 in the runtime_loader (the program that loads and runs other programs). This needs to know the gcc version in order to load the correct libraries, and we forgot to adjust it when starting to use gcc7.

Localization

PulkoMandy adjusted BDate to use the Locale Kit for date parsing and formatting, rather than relying on strftime. This makes sure BDate use the locale settings, even when used in GUI apps where the locale environment variables are not set.

KapiX added the -a option to the locale command line tool. This tool must follow POSIX conventions, and is used in some buildsystems, for example to make sure an UTF-8 locale is available.

User interface

Axeld is running Haiku on his new computer with high resolution display. So his current work is on making the user interface scale properly according to the font size. This month he fixed the sound voume replicant, including a new "muted" icon designed by stippi, adjusting the size of icons in tracker list mode, allowing replicants in the deskbar to resize, and also adjusted the DeskBar leaf.

KapiX added support to BStringView for multiple line strings. He also made ProcessController handle up to 12 CPUs, now that its icon can be larger than 16x16.

Debugging tools

Waddlesplash fixed strace to not crash when attempting to display an invalid syscall number. Strace is a tool that runs an executable and traces all calls to the kernel. It allows a form of black box debugging, by just looking at the interface between the program and the system. It was found that OpenJDK would sometimes try to call non-existing syscalls (this should not happen...), and strace would then crash, which is a problem for debugging.

oco made some changes to the "Start team" window in debugger to make it easier to use (window size adjustments, remembering the last used file path, etc).

Build system

Waddlesplash started work on cleaning up our Jam rules. He started by changing them so that the compiler will be called with file paths relative to the repository root. This helps creating reproducible builds, because gcc stores the file path in the generated object files. He then cleaned up some rules related to building the kernel and bootloader. Eventually a lot of obsolete rules were removed, and some of the overrides in Haiku source have been upstreamed in our fork of Jam (unfortunately the real upstream Jam at perforce is not maintained anymore so we can't upstream there).

Kallisti5 started improving the bootstrap process (used to rebuild haiku entirely from sources, without relying on download of pre-built packages for dependencies). He started experimenting with a docker container to run the bootstrap in. The goal is to provide a more reliable setup for these builds, as they are currently very sensitive to the host configuration (CPU arch, Linux distro, etc).

KapiX made the makefile_engine process .cxx files as C++ as expected.

PulkoMandy introduced an haiku_extras package to the Haiku depot, including code from Haiku that we don't think needs to be in the default image. Currently this includes the partition handlers for Amiga RDB and Apple partitionning systems, which are rarely needed (but still possibly useful) on x86 systems.

Kallisti5 started an experiment to rewrite the configure script in Python, without usable results yet.

Waddlesplash also resumed the work on building Haiku with clang, fixing some extra warnings found along the way.

General code cleanups

Waddlesplash cleaned up BeOS legacy code in various places, and some where tests for PowerPC architectures were not written properly and the PowerPC code ended up being used also for x86_64 and ARM.

Murai Takashi started reviewing all issues in the PVS scan from a few years back. He started fixing some of them, but there is a lot more work to do to get everything triaged. PVS is focused on detecting typical mistakes such as suspicious operator precedence, missing pointer dereferences, etc.

extrowerk fixed some missing prototypes in math.h to ease his work porting more software to Haiku, and fixed the signature of the screenmode command so it can reliably be used as a shortcut handler.

Drivers

kallisti5 made some cleanup work on the ARM port to make it at least buildable. This includes work on the "mailbox" driver for the Raspberry Pi videocore communications.

Peter Kosyh fixed a logic error in the PS/2 mouse driver, which could lead to problems when resetting the mouse. He also fixed a crash in the net_server.

tqh improved the Elantech touchpad driver, but not enough yet to enable it in the standard builds.

PulkoMandy added a command line tool to change the display brightness (when the driver supports it, currently only intel_extreme on laptops). It can be bound to keyboard shortcuts for easily changing the brightness. He also removed the "Not Implemented" mention in the Devices preferences, which would mislead people into thinking there was no driver for there hardware.

waddlesplash continues his work on freebsd 11 network drivers, implementing mtx_trylock, curcpu, and enabling a faster TX path for the ipro1000 driver. He also continues the work on setting the proper flags on areas for SMAP and SMEP to work as intended. There were also some drive-by patches for Bluetooth, NetFS, and a few other things.

mmlr fixed issues in the virtio and virtio_net drivers which would lead to frames being sent with a lot of padding bytes at the end. It still worked, but limited performance and used a lot of memory for no reason.

waddlesplash also fixed the hda driver to work in vmware and virtualbox.

Nathan Sashihara fixed a copypaste error in IPv6 handling macros.

Applications

Peter Kosyh did a lot of work on the IMAP and SMTP handling, initially started on a small patch by Kuroneko but he ended up reworking a lot of the code and fixing many problems all over the place. Mail should now work a lot more reliably.

François finished his "Shelf" screen saver, which can show replicants when the computer is idle, providing a nice informative dashboard/lock screen.

Andrew Lindesay fixed a crash in HaikuDepot when a repository is missing identity URLs.

kerwizzy rewrote the core of the Mandelbrot app to not crash when the window is resized.

Media

PulkoMandy did some work updating the ffmpeg add-on to current ffmpeg APIs, mostly using a new producer/consumer API and reworking management of timestamps. However, this still does not solve ongoing problems with the ffmpeg add-on. Still, some crashes were fixed.

Barrett is reworking the encoding/decoding side of the media kit. He introduced a new "codec kit" to share more easily the functions needed on that size. The plan is to completely rework format negociation and storage access APIs, to make the whole thing better suited to non-file media (streams, podcasts, but also later on Blueray or DVDs). The new API already exposes the file metadata (ID3 tags, etc), which were not exposed before.

File systems

It is now possible to disable CDDB lookups for the CDDA filesystem. The option was already documented, but not working.

Documentation

Following a complaint on hackernews, the Haiku Interface Guidelines were reworked to become gender-neutral. They were already for the most part, but not everywhere.