Haiku Activity Update #4: 9 September 2007-5 February 2008
Major Changes
Kernel
Axel updated the file cache/file_map code - it's now cleaner, faster and simpler. What's not to like? :)
A major scheduler bug where lower priority threads were never run when higher priority threads were ready was fixed.
Lots of fixes in the VM from both Axel and Ingo.
Axel fixed a couple of major bugs in BFS, meaning extracting all >95000 files from a Haiku source tarball worked for the first time. Ingo optimised the syscall mechanism. It's now 7.5x faster than before, and quicker than R5 and Zeta.
Ingo also did some work on the kernel portion of partitioning support. Michael Lotz implemented rescanning of drivers and devices to allow hotplugging support (and mounting newly inserted CDs, for example). Michael made a change to drastically speed up the checking that happens on freeing heap memory - the slow paranoid check was responsible for Haiku slowing down after opening/closing lots of programs (discovered recently by Jonas Sundström).
Kernel Debug Land (KDL) Improvements
Ingo added an expression parser to Kernel Debug Land, and support for variables.
He also made KDL command help text easier to view (just press tab after typing the command name and a space), and updated the help for many commands.
Along with Axel (mainly in the pre-BeGeistert coding event), Ingo implemented a new tracing mechanism in the kernel with a KDL command to display traced events (syscalls, signals, and BMessages) and filter them.
Networking
Axel fixed some bugs with TCP in the network stack and a deadlock that prevented all network timers from working. This fixed many networking problems.
The FreeBSD network driver compatibility layer was updated to the FreeBSD 7 interface.
USB
Michael Lotz completely redesigned the USB explore method, preventing a driver being rescanned multiple times and solving some locking problems. Michael also added support for low/full speed interupt transfers over EHCI - in other words, USB mice and keyboards should work now on USB 2 hubs. Salvatore Benedetto did some work on OCHI USB controllers, the one type of controller that Haiku does not yet support.
Multiprocessor Support
Michael Lotz also spent some time working on the problems Haiku suffered with SMP systems - he worked on ACPI tables to detect SMP configurations, and made some locking fixes to the scheduler and interrupt vector processing.
These changes allowed a quad-core system to boot Haiku successfully - take a look at Phillipe's screenshot attached to this post! There are still some bugs that only show up on SMP setups, but the situation is definitely improving.
Drivers
Marcus did lots of work on the AHCI SATA driver, and worked on the IDE, ATA and SATA bus managers.
Jérôme Leveque contributed a driver for certain M-Audio sound chipsets. Oliver Ruiz Dorantes moved his work on a bluetooth stack into the Haiku tree.
The 3Com, Via Rhine, nForce, and Broadcom BCM570x network drivers from FreeBSD 7 were compiled for Haiku, using the updated compatibility layer mentioned above.
Axel updated his Intel Extreme graphics driver to work with the i965. Ithamar continued work on his Intel HDA audio driver, improving laptop support.
Axel rewrote the AGP bus manager to act as a generic GART manager, and used it to manage memory in the intel_extreme driver.
Posix
Ryan Leavengood (with some help from Ingo) improved the pthreads implementation in Haiku in order to help his WebKit port.
Vasilis Kaoutsis contributed lots of patches throughout the period, many to do with style issues and test cases for the posix code.
Applications
Łukasz Zemczak's Summer of Code project "Package Installer" was added to the tree.
Axel found Gobe Productive wasn't working due to an unimplemented private function. This was fixed so now Gobe Productive runs in Haiku, yay! Stephan has been working on the DriveSetup app - the user interface to the partitioning support infrastructure Ingo has been working on. In the last week Stephan got the app to the point where he could successfully use it to initialise a BFS partition.
François worked on an application to modify UI colours, backgrounds and other appearance-related settings.
The WebKit port led by Ryan Leavengood is not being done in the main Haiku tree but he still kept the community posted on progress. He is now working with a couple of others on the port, and they released a screenshot of the first decent WebKit rendering to demonstrate the progress they'd made.
Smaller Stuff
A couple of commits from people we haven't seen for a while who I think deserve a mention. Graphics driver maestro Rudolf, and Hugo who is responsible for quite a bit of the code in the network stack, both popped up with some contributions. Here's hoping they both find the time (and internet connections!) to continue working on Haiku.
Stephan implemented support for BViews to draw over their children as in R5 using the B_DRAW_ON_CHILDREN flag.
Anthony Lee is a Chinese developer (I think) who contributed various patches to improve Input Method Editor support and bitmap font rendering. Great to see Haiku getting more usable for those who aren't native English speakers.
Stefano puts lots of work into small Interface kit issues with very little credit - so here it is! He is often to be found improving the behaviour of Haiku controls, especially BMenus and BTextViews.
Michael and Ingo fixed a few bugs together at the coding event - MIME database support was moved into the registrar to fix a deadlock, and they fixed the media_server crash at shutdown.
François Revol has been working away on an m68k port - the processor used in the Amiga and Atari to name just two. Not especially useful for most of us, but it is pretty l33t!
The biggest problems with mouse input in Firefox/Mozilla have been fixed. Just a few drawing bugs left now!
Other News
Janne Johansson donated the use of a server and bandwidth which has been put to use as a way to very quickly do a full-text search on the entire Haiku tree. See it here. Thanks a lot, Janne, I'm sure that is going to be really useful.
If you missed Stephan's report on the recent Coding Session and BeGeistert, I recommend you read it. Along with all the great Haiku progress, the developers actually got locked in a basement! Maybe the hostel staff are secret Haiku fans :)
Wrapping Up
A slightly strange update this one after so long away from Haiku. The sheer number of commits made it impossible to mention everything that happened in this period, so apologies to everyone who I've missed out. Your work is still very much appreciated - I promise to mention you in the next update if you do something in the next fortnight!
Although I enjoy following Haiku on a daily (/hourly/minutely!) basis to see the step-by-step progress, it was also nice to take a few months away from the project. Coming back and catching up on all the changes in one go really emphasises how those little steps add up to huge leaps forward. Haiku now is so much better than it was just 4 months ago - far more stable (people have reported days of uptime with recent builds), quicker, more complete, and with better hardware support.
Who knows where we'll be 4 months from now? It should be fun finding out - I hope you'll join me for the ride!