Haiku Activity & Contract Report, February 2023
As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.
This report covers hrev56748 through hrev56803.
Applications & Command Line Tools
PulkoMandy fixed DeskCalc to update button colors “live” from system colors.
Jim906 made the webpage icons in WebPositive draggable into file manager windows (and other applications) as bookmarks.
nephele fixed Mail to respect the system text and link colors.
fstrim pretty-print the trimmed size instead of only showing a raw byte count.
korli implemented some more common features in
setvolume: automatically unmute when increasing volume, mute at the minimum volume, and don’t decrease volume when muted.
waddlesplash made Deskbar’s main window (which of course has no titlebar)’s name never be translated, even when “Translate application names” is enabled in Locale preferences. This works around a long-standing bug where, if the feature was enabled, various Deskbar replicants would fail to load, or display as a non-functioning “?” icon. The real solution will require changing
BDeskbar’s API, which is under discussion on the bug tracker.
n0toose cleaned up setting of status messages in Installer.
OscarL fixed the build of the
acpi_lid driver and fixed a potential memory leak. (which is currently not included in builds and is unused). He also fixed the status updating logic of the
waddlesplash fixed the reporting of the trimmed data size in the
nvme_disk driver. Previously it trimmed data correctly, but reported a much smaller size than was actually trimmed.
waddlesplash fixed the
B_GET_BIOS_GEOMETRY ioctls of the
remote_disk driver following an earlier refactor.
waddlesplash made Package Kit’s decompression code use an
object_cache for allocations in kernel mode. This makes a pretty significant difference in time spent in this function during startup; in testing it seemed to be a >5x speedup, reducing time spent from over half a second to about 1/10th instead. (This path is hit every time packages are accessed, not just during boot.)
waddlesplash synchronized the
iaxwifi200 drivers with upstream OpenBSD.
dcieslak reworked locking for application-level font managers in
app_server and fixed some logic errors.
madmax also fixed the build of
test_app_server, the harness to run
app_server in a window for testing purposes, for working on the previous changes. He also fixed the lifecycle handling of
FontStyle objects within
FontManagers, fixed FreeType error handling, and over the course of the month, performed many other clean-ups and refactors to this code. As a result, the app_server crashes triggered by the most recent version of WebPositive on nightly builds should be completely fixed.
kallisti5 fixed some pointer logic in
mount_server to actually remember whether a partition was mounted read-only or not.
waddlesplash made the “application crash” dialog of
debug_server appear above all other windows, so it cannot be accidentally “lost”.
PulkoMandy reworked the old “googlefs” to be just “websearchfs”. (This special filesystem runs internet searches for “Queries”.) It still is not included in default builds, however.
PulkoMandy refactored XFS on-disk-data handling to fix a lot of warnings and potential problems, and then enabled
-Werror for the whole driver.
waddlesplash fixed a corner case in BFS' trim logic, which previously could have missed trimming the final “range” of a partition.
waddlesplash removed some old logic and files to run certain filesystem drivers on BeOS (which was long since useless, as the drivers had been adapted to Haiku’s own filesystems API.)
PulkoMandy fixed handling of big-endian bitmaps for control icons in
BControl. He also removed deprecated constructors from
BMenuField, and added a missing constructor variant for layout mode.
libroot & kernel
crypt_r to libroot, which is needed by some ports. He also replaced the legacy
crypt_des implementation with that of musl’s. He also removed an unnecessary abstraction to clean the code up further.
waddlesplash renamed some legacy driver hooks for clarity’s sake. He also removed an old sizing hack from the VFS layer, reworked the
libroot_build I/O around
writev, and implemented the BSD extensions
pwritev (just a wrapper around our own extension functions,
vaibhavg20comp (a new contributor, welcome!) implemented
cfsetspeed, a BSD extension to
netdb.h to have much fewer non-standard functions, dropped unused/unimplemented definitions, and other cleanup. (The functions which are still implemented were not removed from the ABI, preserving compatibility with older Haiku and, in some cases, BeOS' BONE.)
waddlesplash replaced the
services files, needed for implementing some functions in
libnetwork, with the OpenBSD versions instead of the NetBSD ones we were using. These files are much smaller, they don’t have the “kitchen sink” of all network services and ports but merely what is actually needed by the applications which use these APIs.
waddlesplash changed the kernel’s virtual memory manager to prohibit memory-mapping with negative offsets. (Previously this behaved erratically or caused kernel panics.) He also added some simple tests for this and other
mmap-related behavior to the testsuite.
jessicah added the
zstd_devel package to the
Development set, as it is now needed for building Haiku.
kallisti5 dropped the old device-tree files from the tree, as these are now unneeded as modern u-boot/EFI will pass the device-tree to the booting operating system directly in most cases.
PulkoMandy dropped some Jam rules for mathematical computations which were mostly unused and just cluttered up the Jam ruleset (and probably made compilation slower as they had to be parsed every run.)
PulkoMandy wrote up some internals documentation about the standard C library portions of
libroot, and the behavior of
waddlesplash updated the Doxygen used for generation of the Haiku Book to 1.9.6, and enabled the internal search engine.
nephele implemented “dark mode” for the Haiku Book, and added new CSS for styling the search results pane.
TeX Live, TeXStudio, and LilyPond are now available in the repositories.
That’s all, folks!
Thanks again to all who contribute to Haiku, and especially those donors who make my contract possible!
As for what’s next: I intend to continue looking at various minor/moderate issues around the system which have stacked up or otherwise seem to be a nuisance; there are some reports of whole-system hangs I hope to investigate this month, for instance. After that, we shall see, but I have a few ideas in mind…
- Haiku Activity & Contract Report, April 2023
- Haiku's (Kernel) Condition Variables API: Design & Implementation
- Haiku Activity & Contract Report, March 2023
- Haiku Activity & Contract Report, February 2023
- Haiku Activity & Contract Report, January 2023
- Haiku Activity & Contract Report, December 2022
- Haiku Activity & Contract Report, November 2022
- Haiku Activity & Contract Report, October 2022
- Haiku Activity & Contract Report, September 2022
- Haiku Activity & Contract Report, August 2022