Haiku Neuigkeiten: Mai 2021

Mo, 14. Juni 2021, Niklas

Haiku, der quelloffene Nachfolger von BeOS, bereitet sich fleissig auf die dritte Beta-Version vor und veröffentlicht im "Haiku activity report - May 2021" vom 3. Juni wieder alle wichtigen Neuigkeiten rund um das Projekt. Wir haben Haiku im April ausführlich vorgestellt.

Besonders die Nutzer von Laptops dürften sich über die Nachricht freuen, dass in Zukunft die WLAN-Treiber von FreeBSD Version 13 eingesetzt werden sollen. Die Arbeiten daran wurden nun begonnen. Bislang werden die Treiber von FreeBSD Version 12 verwendet. Mit der Aktualisierung kommt Unterstützung für neue WLAN-Chips dazu.

Auch die Implementierung von TCP selective ACK wurde vervollständigt. Diese wurde im Rahmen eines vergangenen GSoC Projekts begonnen. Hierdurch wird die Performance von TCP Verbindungen bei verlustreichen Verbindungen (insbesondere WLAN) verbessert. Der wavelanwifi Treiber und die FireWire Unterstützung wurden deaktiviert, da diese auf moderner Hardware keine Rolle mehr spielen und nie korrekt funktioniert haben. Weiter wurden mehr Details zu den ifconfig Ausgaben bei 10 Gbps Verbindungen hinzugefügt.

An den HID Input Treibern wurde ebenfalls gearbeitet. Zunächst wurde ein experimenteller Treiber für I2C Eingabegeräte (hauptsächlich Touchpads) geschrieben, doch dieser funktioniert nicht zuverlässig. Als Konsequenz daraus wurde der bestehende USB HID Treiber überarbeitet und der HID Teil herausgetrennt, um die gleichen HID Treiber auch in Verbindung mit I2C Eingabegeräten und Bluetooth verwenden zu können.

Ausserdem wurden Fehler im XHCI Treiber behoben, um die Fehlerbehandlung zu verbessern. Der intel_extreme Treiber wird aktualisiert, um Geräte neuer als Sandy Bridge zu unterstützen. Die Arbeiten daran dauern allerdings noch an. Ein kleiner Teil der Änderungen wurde schon in den Haiku Quellcode übernommen, die grösseren Änderungen müssen aber zuerst von mehreren Nutzern ausprobiert werden.

Natürlich wurde nicht nur an den Treibern gearbeitet. Auch das User-Interface wurde an ein paar Stellen verbessert. Die BControlLook API hat eine neue Methode, um die Breite der Scrollbar zu ermitteln. Das wird zum Beispiel in HaikuWebKit verwendet, wo keine nativen Scrollbars benutzt werden, damit diese trotzdem wie native aussehen. Vorher musste eine richtige BScrollBar erzeugt werden, um daraus die Breite abzuleiten.

Es wird weiterhin an der Verbesserung der BTextView Implementierung gearbeitet. Auch beim vorinstallierten Text-Editor StyledEdit gab es Optimierungen, die einige Probleme mit dem Text Area Management beheben. Ausserdem wurde die Open-Source Schriftart Spleen neu zur KDL Console hinzugefügt und wird bei Bildschirmen mit grösserer Auslösung als 1080p automatisch verwendet, weil die Standardschrift hier zu klein ist.

Mithilfe statischer Analysetools werden immer wieder Fehler im Quellcode von Haiku aufgedeckt. Diesen Monat wurden einige Fehler in Format Strings im userlandfs BeOS Dateisystem Treiber gefunden und behoben. Auch versetzte Strukturen in cpu.h und verschiedene Definitionen in Funktionen an verschiedenen Stellen konnten optimiert werden. Beim NFS4 Dateisystem Treiber wurden verbesserte Debugging Möglichkeiten hinzugefügt.

Auch am Build System wurde gearbeitet. Es wurden einige Fehler im Konfigurationsscript behoben. Das Repository mit Paketen zum Erstellen von Haiku Images wurde modernisiert. Hier kommen Pakete aus dem HaikuDepot zum Einsatz, allerdings mit festen Versionen, um Probleme durch zu neue HaikuDepot Pakete zu vermeiden. Auch einige Dockerfiles für das Cross-Compiling von Haiku Programmen auf Linux wurden aktualisiert.

Die Sicherheit von Haiku wurde ebenfalls verbessert. Es wurde erstmals eine Implementierung für Stack Protection in Haiku eingebaut. Damit lassen sich Buffer Overflow Bugs erkennen. Viel wichtiger ist aber, dass damit Schadcode erkannt werden kann, der versucht, sich ins System einzuschleusen. Es wurde ausserdem ein Fehler behoben, der dem Kernel erlaubt hat, auf den Userland RAM zuzugreifen und den SMAP Schutz zu umgehen.

In den Einstellungen wurden Probleme mit den Eingabegeräteeinstellungen behoben, die im Zusammenhang mit einer Änderung an der API entstanden sind. Die Bluetooth-Einstellungen werden jetzt in einer BMessage gespeichert, statt als Rohdaten. Das macht spätere Änderungen am Speicherformat einfacher.

Weiter wurde die C und POSIX Kompatibilität verbessert. Es wurden Änderungen am features.h Header vorgenommen, um C11 besser zu unterstützen. Das Header versteckt einige Systemfunktionen, die nicht im C oder POSIX Standard definiert sind, um eine strikte Konformität zu gewährleisten. Ab sofort kann es auch bestimmte Funktionen aktivieren oder deaktivieren, die nur in bestimmten Versionen der C Sprache vorkommen.

Die Implementierung von ioctl wurde auch überarbeitet. Haiku lässt hier mehr Freiheiten, als andere Betriebssysteme, was manchmal zu undefiniertem Verhalten in Verbindung mit den Variadic Argumenten geführt hat. Die Funktion wurde so umgebaut, dass jetzt Structs und Macros statt Variadic Argumenten verwendet werden.

Am Paketsystem wurden einige Aufgaben vom ersten Start des Systems auf das Kompilieren verlagert. Dadurch wird Haiku beim ersten Start etwas schneller. Im Blog Post wird ausserdem die Portierung von Haiku auf die RISC-V Architektur angesprochen. Darüber haben wir bereits einen ausführlichen Artikel veröffentlicht. Der Entwickler Máximo Castañeda, bekannt als madmax, ist dem Haiku Entwicklerteam offiziell beigetreten und hat Commit Zugriff auf das Git Repository erhalten.

Quellen: