URL: https://linuxfr.org/news/nouvelles-de-haiku-printemps-2026 Title: Nouvelles de Haiku - Printemps 2026 Authors: pulkomandy palm123, orfenor, BAud, Arkem, vpo, Ysabeau đ§¶ et nonas Date: 2026ćčŽ04æ17æ„T09:01:12+02:00 License: CC By-SA Tags: webkit, beos, arm64, gsoc, risc-v, appel_Ă _contribution et haiku Score: 39 Haiku est un systĂšme dâexploitation pensĂ© pour les ordinateurs de bureau. Il est basĂ© sur BeOS mais propose aujourdâhui une implĂ©mentation modernisĂ©e, performante, et qui conserve les idĂ©es qui rendaient BeOS intĂ©ressant : une interface intuitive mais permettant une utilisation avancĂ©e, une API unifiĂ©e et cohĂ©rente, et une priorisation de lâinterface graphique par rapport Ă la ligne de commande pour lâadministration du systĂšme. Ce compte-rendu liste les principales modifications survenues en fĂ©vrier, mars et avril. Ces changements sont numĂ©rotĂ©s de hrev59356 jusquâĂ hrev59671 dans le code source de Haiku, soit environ 320 changements ce trimestre. Les grosses nouveautĂ©s sont la disponibilitĂ© dâune version ARM64, lâaccueil de 3 participants au Google Summer of Code et lâapproche de la version beta 6, trĂšs attendue puisque la derniĂšre version publiĂ©e, la beta 5, date de septembre 2024. ---- [Rapport d'activitĂ© de fĂ©vrier](https://www.haiku-os.org/blog/waddlesplash/2026-03-05-haiku_activity_contract_report_february_2026/) [Rapport d'activitĂ© de mars](https://www.haiku-os.org/blog/waddlesplash/2026-04-13-haiku_activity_contract_report_march_2026/) [Rapport d'activitĂ© d'Avril](https://www.haiku-os.org/blog/waddlesplash/2026-05-11-haiku_activity_contract_report_april_2026/) ---- Portage de Haiku pour les architectures ARM64 et RISC-V ========================================== Câest la grosse nouvelle de ce trimestre : la version ARM64 de Haiku parvient enfin Ă lancer le Tracker et permet donc dâavoir un environnement fonctionnel ! Ce travail repose bien entendu sur les efforts de nombreux contributeurs par le passĂ© pour mettre en place cette nouvelle architecture. Ces derniers mois, le travail a Ă©tĂ© complĂ©tĂ© par smrobtzz avec des corrections pour pouvoir compiler Haiku depuis macOS, des pilotes pour le port sĂ©rie S5L utilisĂ© par Apple, une correction de lâadresse de base du noyau, la remise Ă 0 du _frame pointer_ lors du dĂ©but dâexĂ©cution du noyau, des corrections dans la gestion de la mĂ©moire physique, ainsi que quelques correctifs dans lâespace utilisateur. SED4906 a Ă©galement participĂ© avec des corrections dans la gestion des pages mĂ©moire du _bootloader_, ainsi que dans les vĂ©rifications de taille de pages du _runtime_loader_. smrobtzz ne sâest pas arrĂȘtĂ© lĂ , il a ensuite ajoutĂ© la possibilitĂ© dâutiliser plusieurs cĆurs et threads de processeur (SMP) et corrigĂ© des problĂšmes de compatibilitĂ© avec la version du firmware EFI EDK2 fournie par dĂ©faut avec QEMU, ainsi que, entre autres, des problĂšmes avec la fonction `system_time`. Une fois le systĂšme de base stabilisĂ©, le travail sâest poursuivi du cĂŽtĂ© de Haikuports oĂč smrobtzz et waddlesplah ont travaillĂ© ensemble pour corriger de nombreux problĂšmes, en particulier sur les recettes de compilation croisĂ©e et le processus de "bootstrapping" qui permet de gĂ©nĂ©rer le jeu de paquets initiaux permettant dâexĂ©cuter Haiku. Les tĂ©lĂ©chargements de "nightly builds" pour ARM64 fournissent donc maintenant un systĂšme utilisable sur les machines ARM64 au moins dans QEMU. [Un fil de discussion sur le forum de Haiku](https://discuss.haiku-os.org/t/my-haiku-arm64-progress) permet de suivre lâĂ©volution de ces dĂ©veloppements. La prochaine Ă©tape est la compilation de toutes les applications disponibles dans Haikuports, la correction des problĂšmes que cela va immanquablement dĂ©nicher, et la stabilisation du systĂšme. Ensuite, le travail pourra se poursuivre pour rendre cette version de Haiku utilisable hors de QEMU sur du matĂ©riel rĂ©el. Du cĂŽtĂ© de RISC-V, le portage de Haiku est un peu plus avancĂ© depuis quelques mois dĂ©jĂ , et fonctionne sur certaines machines sans virtualisation dans QEMU. Ce trimestre, on voit donc seulement une correction de TODO dans le code pour le thread-local storage concernant lâutilisation de variables atomiques (waddlesplash). Applications ============ TextSearch ---------- _TextSearch est une application de recherche de texte dans le contenu de fichiers. Câest lâĂ©quivalent graphique de la commande `grep`_. DĂ©sactivation de vĂ©rifications de types de fichiers redondantes pour accĂ©lĂ©rer lâapplication (Philippe Houdoin). HaikuDepot ---------- _HaikuDepot est Ă la fois un gestionnaire de paquets et un magasin dâapplications._ apl continue dâamĂ©liorer lâapplication HaikuDepot. - Modification du code de vĂ©rification des schĂ©mas JSON, en particulier pour prĂ©parer son intĂ©gration avec le code traitant les requĂȘtes REST et pouvoir ainsi valider les requĂȘtes et les rĂ©ponses. - Correction dâun problĂšme dâaffichage de lâonglet "Featured packages" (avec une correction dans `BTabView`). - Refonte du code dâaffichage des donnĂ©es dans la liste des paquets. Software Updater --------------- _Software Updater est lâapplication permettant de tĂ©lĂ©charger et dâinstaller des mises Ă jour de paquets logiciels._ Correction dâun crash lorsque lâon quitte lâapplication pendant une mise Ă jour (Nathan242). Ajout dâune option (activĂ©e par dĂ©faut) de nettoyage automatique des points de restauration anciens pour Ă©viter de remplir le disque systĂšme avec des paquets obsolĂštes. La rĂšgle retenue est de conserver toujours au moins 10 points de restauration, et tous ceux qui sont plus rĂ©cents que 30 jours (waddlesplash). DeskCalc -------- _DeskCalc est une calculatrice._ Nettoyage et amĂ©liorations du code de calcul en prĂ©cision arbitraire (John Scipione). Mail ---- _Mail est le client email de Haiku. Il propose seulement lâaffichage et la rĂ©daction de mails : lâenvoi et la rĂ©ception sont traitĂ©s par un service indĂ©pendant (mail_daemon), tandis que lâaffichage de la boĂźte de rĂ©ception est rĂ©alisĂ© par des requĂȘtes directement dans Tracker._ Humdinger sâest penchĂ© sur la gestion des mails avec plusieurs corrections et amĂ©liorations : - Lâattribut `thread` est correctement enregistrĂ© sur les messages envoyĂ©s, ce qui permet de facilement les regrouper avec les messages reçus dans la conversation correspondante. - Quelques fichiers du code source nâĂ©taient pas scannĂ©s par les outils de localisation, donc certains termes restaient invariablement en anglais. - ImplĂ©mentation de `labels`, permettant dâĂ©tiqueter les messages avec des chaĂźnes de caractĂšres arbitraires. Auparavant, lâattribut `statut` Ă©tait dĂ©tournĂ© pour ça, mais cela pose des problĂšmes lors de la synchronisation avec les serveurs IMAP, pour lesquels le statut du message a une signification bien spĂ©cifique. Les labels sont pour lâinstant entiĂšrement locaux et ne sont pas synchronisĂ©s avec le serveur de messagerie. Cette fonctionnalitĂ© comprend Ă©galement un nouvel _add-on_ pour le _Tracker_, permettant de facilement Ă©tiqueter un fichier. La couleur du texte pour le corps des messages se met Ă jour immĂ©diatement lors dâun changement des prĂ©fĂ©rences de couleur du systĂšme (John Scipione). Tracker ------- _Tracker est le gestionnaire de fichiers de Haiku._ John Scipione continue son travail sur le Tracker : - Lâaperçu des fichiers en cours de glissĂ©-dĂ©placĂ© affiche maintenant les fichiers avec leur apparence « sĂ©lectionnĂ©e » (texte blanc sur fond noir), ce qui permet de garder le texte plus facilement lisible (bien que ce soit peut-ĂȘtre moins joli). - LâicĂŽne de la corbeille sâaffichait parfois pleine alors quâelle est vide ou inversement, suite Ă des problĂšmes de synchronisation de cache et de collecte des informations de lâĂ©tat de la corbeille de chaque disque montĂ©. John a Ă©galement supprimĂ© du code obsolĂšte et corrigĂ© de trĂšs nombreux problĂšmes, par exemple avec le tri des fichiers, la gestion des images de fond dans les fenĂȘtres, le copier coller... Nathan242 a quant Ă lui corrigĂ© un plantage lorsquâon annule le vidage de la corbeille ainsi que des problĂšmes de formatage de lâindicateur du nombre de fichiers sĂ©lectionnĂ©s. Madmax a fait en sorte que les raccourcis claviers pour les _add-ons_ se mettent Ă jour immĂ©diatement (et pas lors de lâouverture dâun menu _pop-up_) lorsque les _add-ons_ sont modifiĂ©s. Waddlesplash a Ă©galement fait quelques corrections mineures, dont une mĂ©rite une mention : une optimisation pour rĂ©duire le nombre dâappels systĂšme pour le _node monitring_ (rĂ©ception de notifications lorsque des fichiers sont modifiĂ©s). StyledEdit ---------- _StyledEdit est un Ă©diteur de texte de type « bloc notes ». Il permet dâutiliser du texte formatĂ© (polices, couleurs...)_ Lors de la crĂ©ation dâun nouveau document texte, le nom « Sans titre 1 », « Sans titre 2 », etc. est gĂ©nĂ©rĂ© avec le plus petit nombre non utilisĂ©. Auparavant, les numĂ©ros sâincrĂ©mentaient mĂȘme si certains fichiers avaient entretemps Ă©tĂ© renommĂ©s ou fermĂ©s (x512). CharacterMap ------------ _CharacterMap permet dâexplorer le jeu de caractĂšres unicode et dây piocher des caractĂšres intĂ©ressants._ Correction dâun bug dans la recherche par nom de bloc unicode, amĂ©lioration de la disposition des caractĂšres, et diverses autres petites amĂ©liorations (madmax). DeskBar ------- _DeskBar est la barre des tĂąches de Haiku, permettant de naviguer entre diffĂ©rentes fenĂȘtres et applications._ Ajout dans la fenĂȘtre des prĂ©fĂ©rences dâun sĂ©lecteur de coin (similaire Ă celui dĂ©jĂ utilisĂ© pour les coins actifs dans les prĂ©fĂ©rences des Ă©crans de veille). Ceci permet dâamĂ©liorer la dĂ©couvrabilitĂ© de la possibilitĂ© de dĂ©placer la DeskBar Ă diffĂ©rents endroits sur lâĂ©cran, et est plus facile Ă utiliser que le "grip" de dĂ©placement de la DeskBar elle-mĂȘme, qui est tout petit (PulkoMandy, basĂ© sur un ancien patch de mmu_man). Terminal -------- Ajout dâune initialisation manquante pour la couleur du curseur, en particulier lorsque le Terminal est utilisĂ© comme rĂ©plicant dans une autre application (JackBurton79, suite Ă lâutilisation du Terminal dans lâIDE Genio). Utilisation de `_exit` au lieu de `exit` dans les processus fils lancĂ©s par `fork()` sans `exec()`. Lâutilisation de `exit` appelle les destructeurs globaux dont la destruction de certaines ressources partagĂ©es avec le processus parent. Câest une difficultĂ© du mĂ©lange des API graphiques de BeOS avec un modĂšle POSIX complet (waddlesplash). Le mĂȘme problĂšme a Ă©tĂ© Ă©galement corrigĂ© dans lâapplication Expander. LaunchBox --------- _LaunchBox est un « dock » permettant de stocker des raccourcis vers des applications frĂ©quemment utilisĂ©es._ Simplification du mĂ©canisme dâenregistrement des paramĂštres. Auparavant, lâenregistrement Ă©tait fait aprĂšs un dĂ©lai dâinactivitĂ©, pour Ă©viter dâenchaĂźner plusieurs Ă©critures sur disque Ă chaque modification de rĂ©glages. Il semble plus simple dâenregistrer les modifications tout de suite, et de laisser le cache disque faire son travail pour dĂ©cider dâĂ©crire ces changements sur disque tout de suite ou un peu plus tard (nephele). MediaPlayer ----------- Optimisation du code de lecture des fichiers de _playlist_ pour lire le contenu des fichiers ligne par ligne, et pas caractĂšre par caractĂšre (mohammedrattia, dans le cadre de sa candidature au Google Summer of Code). ActivityMonitor --------------- _ActivityMonitor affiche des graphes avec diffĂ©rentes statistiques dâutilisation de la machine._ Correction dâun bug lors de lâaffichage des tempĂ©ratures du systĂšme dans les cas oĂč le pilote ne fournit pas de nom pour la tempĂ©rature mesurĂ©e (OscarL). WebPositive ----------- _WebPositive est le navigateur web de Haiku. Il utilise le moteur WebKit qui est un projet libre co-dĂ©veloppĂ© principalement par Apple (Safari), Sony (PlayStation), et Igalia (versions GTK et WPE)._ Pour les tĂ©lĂ©chargements dont la taille est inconnue, affichage dâun « barber pole » au lieu dâune barre de progression bloquĂ©e Ă 100 % (YashSuthar983 dans le cadre dâune candidature au Google Summer of Code). Lorsque WebPositive est quittĂ© en fermant le dernier onglet ouvert, il ne restaure pas ce mĂȘme onglet lors du prochain dĂ©marrage (nipos). Suppression de code obsolĂšte dans la barre dâonglets (nipos). Devices ------- _Devices affiche une liste du matĂ©riel prĂ©sent sur la machine._ Les premiers patchs dĂ©veloppĂ©s par Aquamatic dans le cadre de sa candidature au Google Summer of Code ont Ă©tĂ© intĂ©grĂ©s ce trimestre : - Les pĂ©riphĂ©riques peuvent ĂȘtre triĂ©s par bus (PCI, USB...) en complĂ©ment des autres options dĂ©jĂ disponibles. - Nettoyage du code pour prendre en compte certains « TODO » listĂ©s dans le code de lâapplication. - Investigation et correction dâune fuite de mĂ©moire. PrĂ©fĂ©rences de localisation --------------------------- Modification de la localisation dans plusieurs applications pour sâassurer que le comportement de lâoption « traduire les noms des applications » est respectĂ© partout lorsque le nom de lâapplication est mentionnĂ© dans un autre texte (humdinger). PrĂ©fĂ©rences dâapparence ----------------------- Retrait dâespacements inutiles et disgracieux dans la fenĂȘtre (humdinger). Outils en ligne de commande =========================== Remplacement des fonctions `fork` et `exec` dans time_stats pour utiliser `posix_spawn` (waddlesplash). Lâutilisation de fork et exec pour lancer des processus enfants est la mĂ©thode traditionnelle, la premiĂšre mise en place dans UNIX. Elle pose des soucis de performance et cause des comportements problĂ©matiques. En particulier, de nombreuses ressources du processus parent sont conservĂ©es (descripteurs de fichiers ouverts, sĂ©maphores...) alors quâils ne sont pas toujours nĂ©cessaires. La fonction posix_spawn permet un meilleur contrĂŽle de ces comportements, tout en Ă©tant beaucoup plus rapide et plus simple Ă implĂ©menter. Le sujet a conduit Ă plusieurs modifications dans dâautres parties du code, dont on reparle plus loin dans la dĂ©pĂȘche. `pkgman` propose maintenant une sous-commande `cleanup` pour le nettoyage des points de restauration. Contrairement Ă SoftwareUpdater, ce nettoyage nâest pas automatique, car cela rendrait lâutilisation de pkgman potentiellement trop destructrice. Cependant, un message sâaffiche aprĂšs lâinstallation de mises Ă jour indiquant le nombre de points de restauration qui peuvent ĂȘtre nettoyĂ©s (waddlesplash). AmĂ©lioration de la commande `ltrace`, mais celle-ci est toujours un travail en cours et pas encore utilisable (waddlesplash). Kits ==== Les APIs de programmation de BeOS et de Haiku sont implĂ©mentĂ©es en C++. Elles sont organisĂ©es en "kits" regroupant des fonctionnalitĂ©s liĂ©es. Application Kit --------------- _L'application kit comporte toutes les fonctions dâĂ©change de messages entre applications et au sein dâune application._ Meilleure gestion dâun cas dâerreur dans BInvoker pour remonter lâerreur Ă la fonction appelante (korli). Support Kit ----------- _Le support kit contient toutes sortes de fonctions utilitaires basiques : gestion des chaĂźnes de caractĂšres, parser JSON..._ Ajout de tests unitaires pour la classe BStopWatch (priyanshu-gupta07). La famille de fonctions `string_for_size` change dâunitĂ© lorsque la valeur atteint 1000 et pas 1024. Par exemple on affichera "0.9 Gio" plutĂŽt que "1,000 Mio" (korli). Elles prĂ©-initialisent certaines donnĂ©es au dĂ©marrage de lâapplication plutĂŽt que de les recalculer Ă chaque appel, ce qui rend lâutilisation de ces fonctions beaucoup plus rapide (waddlesplash). Les fonctions de gĂ©olocatisation `BGeolocation` utilisent maintenant les services de [Beacon DB](https://beacondb.net), suite Ă la fermeture de [Mozilla Location Services](https://github.com/mozilla/ichnaea/issues/2065) (PulkoMandy). Suppression des objets BLocker allouĂ©s statiquement Ă plusieurs endroits. Ils sont problĂ©matiques lors dâun fork : par dĂ©faut, les objets BLocker dans les deux processus rĂ©sultants pointent vers le mĂȘme verrou systĂšme, mais si lâun des deux processus sâarrĂȘte, il dĂ©truit le verrou et laisse lâautre dans un Ă©tat incohĂ©rent. Dans ce cadre, ajout Ă©galement de vĂ©rifications pour empĂȘcher le processus fils de continuer Ă utiliser lâinterface utilisateur ou mĂȘme dâappeler la fonction `exit()` (waddlesplash). Refonte des classes `BBlockCache`, `BTokenSpace` et `BLooperList` utilisĂ©es pour gĂ©rer des ressources diverses, en particulier dans `BMessage` : utilisation de locks moins lourds, suppression de sĂ©maphores qui nâĂ©tait pas nĂ©cessaires, optimisation des performances (waddlesplash). Modernisation des tests unitaires du support kit, pour rendre plus facile lâajout de tests supplĂ©mentaires (KapiX). Optimisation des mĂ©thodes de recherches de BString (pour trouver un caractĂšre, une sous-chaĂźne...) en utilisant les fonctions C prĂ©vues Ă cet effet dans la libc plutĂŽt que des boucles Ă©crites Ă la main (waddlesplash, avec des corrections de madmax). Interface Kit ------------- _L'interface kit contient toutes les classes nĂ©cessaires Ă la rĂ©alisation dâinterfaces graphiques._ Correction de lâutilisation de la touche "Suppr" dans une zone dâĂ©dition de texte lorsquâil y a Ă©galement un raccourci clavier de menu (mĂȘme dĂ©sactivĂ©) associĂ© Ă cette mĂȘme touche (nathan242). Optimisation des mĂ©thodes `BView::FillStroke` et `FillPolygon` dans leur variante recevant directement un tableau de points pour Ă©viter de recopier ce tableau dans un objet temporaire (x512). Correction dâincompatibilitĂ©s avec BeOS dans le format dâenregistrement de `BPicture` (x512) : - pour lâenregistrement dâimages bitmap, - le "cisaillement" (*shear*) des polices de caractĂšres, - les sous-pictures, - les transformations affines, - les "Ă©chappements" (espacement des caractĂšres) de texte, - et dâautres petits problĂšmes. Ce format permet de stocker une suite dâinstructions de dessin pour afficher quelque chose Ă lâĂ©cran. Il est parfois utilisĂ© par certaines applications pour stocker des ressources dans un format vectoriel compact, câest pourquoi le respect du format dĂ©fini par BeOS est important. Ajout dâune taille minimale pour les barres de dĂ©filement, pour quâelles gardent une taille raisonable mĂȘme si lâutilisateur choisit une taille de police de texte en dessous de 12pt. La taille de toute lâinterface sâadapte automatiquement Ă ce choix, mais pas de façon linĂ©aire (nipos). Suppression dâune valeur prĂ©sente en double dans le message « mouse idle » envoyĂ© aux applications lorque la souris cesse de se dĂ©placer (x512). Correction du code de dessin des cases Ă cocher pour restaurer lâĂ©tat initial de la vue dans laquelle le dessin est fait. Ce problĂšme Ă©tait visible en particulier dans WebPositive lors de lâaffichage de cases au sein dâune page web (nephele). Correction de la façon dont `BButton` initialise ses couleurs, pour correspondre au comportement de BeOS et corriger des problĂšmes avec les applications utilisant liblayout, en particulier Wonderbrush (PulkoMandy). Deux modifications sur la gestion des raccourcis clavier : - VĂ©rification des changements de raccourcis seulement lorsque câest vraiment nĂ©cessaire. Cela est particuliĂšrement visible dans Tracker oĂč la plupart des raccourcis sont dynamiques (par exemple, actifs seulement si un fichier est sĂ©lectionnĂ©) (jscipione) - Remplacement du tableau simple utilisĂ© pour stocker les raccourcis par un arbre binaire de recherche, permettant de trouver rapidement si une combinaison de touches est associĂ©e Ă un raccourci clavier (waddlesplash). Storage Kit ----------- _Le storage kit permet lâaccĂšs aux systĂšmes de fichiers._ Ajout de la nouvelle macro `_DEPRECATED` pour signaler au compilateur de dĂ©clencher un avertissement si certaines fonctions sont utilisĂ©es (via lâoption `-Wdeprecated`). Les premiĂšres mĂ©thodes Ă recevoir ce traitement sont dans BMimeType et BResources (waddlesplash). Grosse optimisation du « renifleur MIME » qui analyse le contenu des fichiers pour dĂ©terminer leur type MIME. Lâutilisation de fonctions POSIX optimisĂ©es (`memmem` entre autres) et dâautres amĂ©liorations rendent lâĂ©tape « mimeset'ing package contents » de la compilation de Haiku ou de paquets HaikuPorts au moins 10 fois plus rapide (waddlesplash). Network Kit ----------- _Le network kit permet la programmation dâapplication communiquant en rĂ©seau._ Correction dâun bug dans BSecureSocket qui ne validait plus les certificats SSL suite Ă une erreur lors dâune modification prĂ©cĂ©dente (Horizons). Media Kit --------- _Le media kit se charge des mĂ©dias audio et vidĂ©o._ RĂ©paration de lâadd-on mĂ©dia « mixeur vidĂ©o » qui est maintenant disponible dans lâimage de base. Il est surtout utile comme dĂ©monstration des possibilitĂ©s du media kit (x512). Serveurs ======== Les serveurs sont des applications lancĂ©es en tĂąche de fond et qui rendent diffĂ©rents services. Ils sont similaires aux "daemons" de UNIX. app_server ---------- _app_server est le serveur graphique de Haiku._ Correction dâun crash lors de lâutilisation dâun dĂ©gradĂ© de couleurs ne comportant aucune couleur (KapiX). La taille indiquĂ©e aux accelerants pour les curseurs matĂ©riels nâĂ©tait pas la bonne (Goldfish64). IntĂ©gration de commits de versions plus rĂ©centes de AGG pour corriger des typos dans quelques fonctions (Coldfirex). Correction de fautes de frappe dĂ©tectĂ©es par codespell, un outil de vĂ©rification orthographique pour le code (korli). Ces modifications font suite Ă une mise Ă jour des rĂšgles de codage de Haiku pour spĂ©ficier que câest lâorthographe amĂ©ricaine qui est prĂ©fĂ©rĂ©e lorsquâil y a des divergences avec lâanglais europĂ©en. Ajout dâun nouveau mode de fonctionnement pour les accĂ©lerants oĂč le framebuffer nâest accessible que par lâespace utilisateur. Pour lâinstant, seuls les pilotes VESA et framebuffer sont concernĂ©s, mais les autres pilotes devraient ĂȘtre modifiĂ©s de la mĂȘme façon, car il nây a pas de raison pour le noyau dâaccĂ©der directement au framebuffer Ă part dans le cas dâun kernel panic, ce qui se fait de toutes façons par une autre mĂ©thode (waddlesplash). launch_daemon ------------- _launch_daemon est lâapplication "init" qui se charge du dĂ©marrage des autres services et des sessions utilisateurs. Il joue un rĂŽle proche de celui de systemd pour Linux ou de launchd pour Mac OS._ Retrait des utilisations de `fork`+`exec` dans `net_server` et `launch_daemon` au profit de `posix_spawn`. AmĂ©lioration du code qui interprĂšte les variables dâenvironnement (waddlesplash). Bluetooth --------- _Le serveur bluetooth centralise toutes les opĂ©rations concernant les pĂ©riphĂ©riques Bluetooth._ Les premiers patchs des candidats au Google Summer of Code font que les choses bougent Ă nouveau du cĂŽtĂ© du serveur Bluetooth ! Vighnesh Sawant a corrigĂ© le traitement du message "inquiry result" lorsquâun appareil fournit plusieurs rĂ©ponses dâun coup (ce qui est possible dâaprĂšs la spĂ©cification du Bluetooth). Il a Ă©galement implĂ©mentĂ© le traitement de nouveaux types de rĂ©ponses contenues dans ce message, terminĂ© le code nĂ©cessaire pour la procĂ©dure dâappairage basique, corrigĂ© lâapparition de pĂ©riphĂ©riques bluetooth en double, et encore dâautres problĂšmes. Il a aussi dĂ©placĂ© tout le code concernant lâappairage basique dans un fichier source sĂ©parĂ©. Mohammed Rattia a quant Ă lui nettoyĂ© les fonctions de recherche du pĂ©riphĂ©rique Bluetooth local, et rĂ©parĂ© la compilation des tests unitaires liĂ©s au Bluetooth. Enfin, shivamsinghydv a ajoutĂ© une validation de lâadresse MAC des pĂ©riphĂ©riques lors de leur activation par le serveur Bluetooth et corrigĂ© un crash. Mail ---- _Le serveur de mail se charge de lâenvoi et de la rĂ©ception de courrier Ă©lectronique (POP, IMAP et SMTP). Les messages sont mis Ă disposition du reste du systĂšme sous forme de fichiers avec des attributs Ă©tendus._ Philippe Houdoin a fait quelques changements sur le client IMAP : VĂ©rification des informations CAPABILITY retournĂ©es directement en rĂ©ponse Ă une commande IMAP LOGIN. Les capacitĂ©s Ă©taient rĂ©cupĂ©rĂ©es sĂ©parĂ©ment, mais dans certains cas le serveur envoie cette liste dĂšs le dĂ©but de la connection, afin de pouvoir informer de capacitĂ©s qui influent le processus de login, par exemple. Modifications de la rĂ©ponse Ă la commande ID pour identifier clairement le client mail de Haiku lorsque le serveur demande qui on est. Media ----- _Le serveur mĂ©dia permet lâinterfaçage avec la carte son, et les entrĂ©es et sorties vidĂ©o sâil y en a._ Le mĂ©langeur de sons nâest dĂ©marrĂ© que lorsquâune application a besoin de jouer du son pour la premiĂšre fois. Cela Ă©conomise du CPU et de la batterie (puisque la sortie de la carte son peut ĂȘtre laissĂ©e en veille jusquâĂ ce moment. Pour lâinstant il nây a pas encore dâarrĂȘt du mixeur et de mise en veille de la carte son lorsque la lecture de son est finie, cela pourra ĂȘtre ajoutĂ© plus tard. Cela corrige Ă©galement certains problĂšmes conduisant Ă lâerreur « performance time too large ! » suite Ă une vĂ©rification ajoutĂ©e il y a environ deux ans pour dĂ©tecter des utilisations incorrectes du media kit (waddlesplash). Pilotes matĂ©riels ================= Stockage -------- Le pilote `virtio_block` a Ă©tĂ© temporairement dĂ©sactivĂ© en prĂ©paration de la publication de la version beta 6 de Haiku. En effet, il semble causer des problĂšmes de corruption disque dans certains cas, sans que les dĂ©veloppeurs de Haiku aient pu identifier pour lâinstant la source du problĂšme. Si vous utilisiez virtio_block, vous pouvez le remplacer par virtio_scsi qui fournit des fonctionnalitĂ©s Ă©quivalentes mais avec un protocole de communication avec la machine hĂŽte diffĂ©rent. Il faut donc par exemple modifier la ligne de commande de dĂ©marrage de QEMU (waddlesplash). Ajout de paramĂštres manquants dans les APIs permettant de dĂ©tecter les fonctionnalitĂ©s disponibles pour les disques NVMe (_feature management_) (korli). AmĂ©lioration de lâinitialisation des pĂ©riphĂ©riques connectĂ©s Ă un contrĂŽleur SDHCI : dĂ©sactivation des cartes dont la tension dâalimentation nâest pas compatible, et mise en place des premiĂšres Ă©tapes pour la communication avec les pĂ©riphĂ©riques eMMC (Mahmoussam, dans le cadre dâune candidature au GSoC qui nâa pas pu ĂȘtre acceptĂ©e). RĂ©seau ------ Synchronisation des pilotes rĂ©seau avec la derniĂšre version dâOpenBSD (waddlesplash). Correction dâun bug dans le pilote USB ethernet qui causait un plantage de certains adaptateurs USB lors de la lecture de lâadresse MAC (smrobtzz). Ajout de lâUSB dans la couche de compatibilitĂ© avec FreeBSD, ce qui a permis de remplacer le pilote ASIX-USB dĂ©veloppĂ© spĂ©cifiquement pour Haiku par celui de FreeBSD, qui permet dâutiliser une plus large gamme dâadaptateurs utilisant un chipset ASIX (waddlesplash et smrobtzz). Import du pilote `zyd` de FreeBSD sous le nom zydzifi1211 avec lâajout des fonctions nĂ©cessaires dans la couche de compatibilitĂ©. Ce pilote est Ă la recherche de testeurs pour confirmer son bon fonctionnement (waddlesplash). Affichage --------- Ajout des identifiants PCI pour une nouvelle gĂ©nĂ©ration de contrĂŽleurs GART Intel, permettant de gĂ©rer le partage de la mĂ©moire entre le CPU et le GPU (OscarL). USB --- DĂ©sactivation dâune optimisation « zĂ©ro copie » dans le pilote EHCI (USB 2). Cette optimisation semble dĂ©clencher des plantages ou des corruptions sur certaines machines (waddlesplash). Virtualisation -------------- IntĂ©gration dâune sĂ©rie de pilotes pour le virtualiseur Hyper-V : souris, _heartbeat_ pour confirmer que le systĂšme virtualisĂ© est toujours vivant, synchronisation de lâheure, pilote SCSI, et diverses couches basses nĂ©cessaires Ă tous ces pilotes (Goldfish64). Gestion dâĂ©nergie ----------------- Correction de messages de debug dans le pilote AMD P-States. Correction de la compilation du pilote audio HDA lorsquâil est compilĂ© sans les logs de debug. Ce pilote Ă©met de trĂšs nombreux logs au dĂ©marrage pour identifier la carte son et toutes ses capacitĂ©s, il est donc parfois utile de dĂ©sactiver ces logs pour travailler sur autre chose (OscarL). SystĂšmes de fichiers ==================== Les systĂšmes de fichiers semblent ĂȘtre une cible apprĂ©ciĂ©e des contributeurs au Google Summer of Code : le pĂ©rimĂštre est bien maĂźtrisĂ©, et le gros du travail se situe au niveau des structures de donnĂ©es, qui sont enseignĂ©es dans la plupart des cursus scolaires en informatique. Ceci explique une activitĂ© inhabituellement Ă©levĂ©e dans ce domaine lors de la pĂ©riode de candidature. Cependant, les tĂąches les plus abordables ont dĂ©jĂ toutes Ă©tĂ© traitĂ©es, et aucun des dossiers de candidature reçus cette annĂ©e dans ce domaine nâa Ă©tĂ© jugĂ© de qualitĂ© suffisante pour embaucher un nouveau contributeur. Packagefs --------- _Packagefs est un systĂšme de fichier virtuel permettant dâaccĂ©der aux contenus des paquets installĂ©s sur le systĂšme. Cette approche permet dâutiliser les paquets logiciels sans avoir besoin de les extraire, et accĂ©lĂšre considĂ©rablement lâinstallation et la dĂ©sinstallation de logiciels._ AmĂ©lioration de la gestion du manque de mĂ©moire RAM, pour favoriser un ralentissement du systĂšme plutĂŽt que de dĂ©clencher des erreurs de lecture (waddlesplash). NTFS ---- _NTFS est le systĂšme de fichier utilisĂ© par Windows._ Correction dâun crash lors de certaines erreurs de montage de partitions (waddlesplash). BTRFS ----- _BTRFS est un des systĂšmes de fichiers utilisĂ©s par Linux. Il offre de nombreuses fonctionnalitĂ©s avancĂ©es dont le pilote pour Haiku ne sait que faire. Seule la lecture de fichiers classiques est possible._ Lecture des fichiers compressĂ©s avec ZSTD (Abdullah Zulfiqar). Corrections de warnings du compilateur et de bugs potentiels (grep-name). Ajout de vĂ©rification de validitĂ© et traitement des collisions de hash dans les recherches de fichiers dans des dossiers ; vĂ©rification que la taille des partitions est suffisante avant de formatter un disque en btrfs ; amĂ©lioration de certains cas de gestion dâerreur ; nettoyage et amĂ©lioration de commentaires (Anuj Billore). XFS --- _XFS est un systĂšme de fichiers initialement dĂ©veloppĂ© pour IRIX mais dont le dĂ©veloppement continue dans Linux. Il est une alternative populaire Ă ext4 pour ce dernier._ Plusieurs corrections par sleipbyte : - Correction dâune erreur de compilation - ImplĂ©mentation de `rewind_dir`, qui permet au Tracker dâafficher le contenu des dossiers, - Correction dâerreurs SMAP (accĂšs Ă la mĂ©moire utilisateur par le noyau sans validation de pointeurs) - AmĂ©lioration de la dĂ©tection des partitions - Reconnaissance de nouveaux drapeaux indiquant des fonctionnalitĂ©s additionnelles dans XFS (le systĂšme de fichier continue dâĂ©voluer dans son implĂ©mentation pour Linux) - Traitement dâun cas particulier pour la gestion des attributs Ă©tendus : leur absence peut ĂȘtre indiquĂ©e par un pointeur NULL ou une taille Ă 0. NFS v2 ------ _NFS est un systĂšme de fichiers permettant dâaccĂ©der Ă des fichiers stockĂ©s sur un autre ordinateur._ AmĂ©lioration des logs dâerreur lorsquâun volume NFS ne peut pas ĂȘtre montĂ© (kallisti5). Il existe un deuxiĂšme pilote plus rĂ©cent mais qui reconnaĂźt uniquement NFS version 4, malheureusement, certains NAS nâimplĂ©mentent que la version 3... FAT --- _FAT est un ancien systĂšme de fichiers utilisĂ© par Microsoft, pour DOS et les premiĂšres versions de Windows. Il reste populaire sur certains pĂ©riphĂ©riques de stockage amovible et comme dĂ©nominateur commun entre beaucoup de systĂšmes._ Correction dâun plantage qui pouvait survenir lors du formatage dâune image disque au format FAT (nathan242). BFS --- _BFS est le systĂšme de fichiers de BeOS et de Haiku. Il a la particularitĂ© dâavoir une gestion poussĂ©e des attributs Ă©tendus, et la possibilitĂ© dâeffectuer des requĂȘtes sur ces derniers Ă la maniĂšre dâune base de donnĂ©es._ Corrections et amĂ©liorations par Waddlesplash : - Un plantage pouvait survenir lors de la vĂ©rification dâun systĂšme de fichiers corrompu, - Une division par zĂ©ro dans le parseur de requĂȘtes (utilisĂ© aussi par packagefs et ramfs), - Un `break` manquant qui pouvait dĂ©clencher un plantage du noyau (assertion ou mĂȘme utilisation de mĂ©moire libĂ©rĂ©e) lors de la suppression de plusieurs fichiers en parallĂšle, - Ajout de notifications de renommage et dĂ©placement pour les requĂȘtes "live" en mĂȘme temps que celles envoyĂ©es pour le « node monitoring », afin que les rĂ©sultats de requĂȘtes restent bien synchronisĂ©s avec lâĂ©tat du disque. RAMFS ----- _RAMFS est un systĂšme de fichiers stockant les donnĂ©es directement en RAM. Il permet un accĂšs trĂšs rapide aux fichiers, mais il est non persistant, les donnĂ©es sont perdues en cas de coupure ou de redĂ©marrage du systĂšme._ RĂ©organisation du code par waddlesplash : - Nettoyage du code pour tracer la taille des allocations, - Consolidation de la logique do « node monitoring », - Correction des Ă©vĂšnements « node monitor » sur les fichiers simples. RAM disque ---------- _Le ramdisk nâest pas un systĂšme de fichiers, mais un pĂ©riphĂ©rique de stockage de masse. Il peut ĂȘtre formatĂ© avec nâimporte quel systĂšme de fichiers._ Retrait de lâutilisation de lâordonnanceur I/O et traitement direct des requĂȘtes Ă la place. Cela contourne un bug de lâordonnanceur dans le cas oĂč la taille des secteurs du disque est plus large que les blocs du systĂšme de fichiers, ce qui force Ă Ă©crire plusieurs blocs sur un secteur dâun seul coup. Ce problĂšme ne se produit habituellement pas sur dâautres supports de stockage (la taille des secteurs Ă©tant habituellement de 512 octets dans les autres cas). Lâordonnanceur sera tout de mĂȘme corrigĂ© plus tard, pour permettre son utilisation dans dâautres cas oĂč il est pertinent et dans ce cas de figure, comme les flash NAND accessibles sans contrĂŽleur de haut niveau (nathan242). RĂ©seau ========== Correction dâune fuite de sockets dans la pile Bluetooth (Vighnesh Sawant). Activation du code permettant de charger des modules pour le rĂ©solveur DNS nsswitch dans libnetwork. Cela permettra par exemple de charger le module mDNS (aussi connu sous le nom de Avahi pour Linux ou Bonjour pour Mac OS) pour la rĂ©solution des noms de machines sur le rĂ©seau local (Philippe Houdoin). Vighnesh Sawant a Ă©galement ajoutĂ© la possibilitĂ© dâutiliser lâoption AI_V4MAPPED au rĂ©solveur DNS. Ajout de la notification de lâerreur `B_SELECT_DISCONNECTED` (correspondant Ă lâerreur POSIX `POLLHUP`) dans les notifications sur les sockets, corrigeant ainsi un cas de test de compatibilitĂ© BSD (waddlesplash). libroot ======= _libroot est lâimplĂ©mentation de la librairie C standard de POSIX. Elle regroupe les fonctions habituellement rĂ©parties entre les libc, libm et libpthread sur les systĂšmes UNIX classiques._ Remise en place de code spĂ©cifique par architecture dans printf qui avait Ă©tĂ© incorrectement enlevĂ©. Cela corrige des plantages dans certains cas spĂ©cifiques (waddlesplash). Ajout de la dĂ©finition de `GETENTROPY_MAX` qui Ă©tait manquante dans `limits.h` (korli). ImplĂ©mentation de la rĂ©servation dâespace dâadresse pour le tas du runtime_loader. Ceci Ă©vite la fragmentation de lâespace mĂ©moire et amĂ©liore les performances, en particulier lorsque l'[ASLR](https://en.wikipedia.org/wiki/Address_space_layout_randomization) est dĂ©sactivĂ© (Amir Ramez, dont câest la premiĂšre contribution). Réécriture de lâimplĂ©mentation de [pthread_barrier](https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_barrierattr_init.html) pour utiliser moins dâappels systĂšmes, corriger des problĂšmes de synchronisation, et au final Ă©liminer un blocage qui survenait dans des applications utilisant OpenGL (waddlesplash). Remplacement de lâimplĂ©mentation de strchr et de strcpy par des versions plus optimisĂ©es venant de la bibliothĂšque [musl](https://en.wikipedia.org/wiki/Musl) (waddlesplash). Correction dâun plantage lors de lâutilisation des allocateurs mĂ©moire "debug" ou "guarded" dans libroot, qui Ă©tait causĂ© par des changements sur lâordre dâinitialisation des donnĂ©es de localisation (waddlesplash). Correction dâincompatibilitĂ©s dans lâimplĂ©mentation de [kqueue](https://en.wikipedia.org/wiki/Kqueue), en particulier, la fermeture dâun descripteur de fichier surveillĂ© dĂ©clenchait une notification alors que ce nâest pas le cas dans les implĂ©mentations BSD (waddlesplash). Renommage de `PTHREAD_RECURSIVE_MUTEX_INITIALIZER` pour ajouter le suffixe `_NP`. La constante porte ainsi le mĂȘme nom que dans glibc par exemple, indiquant clairement quâil sâagit dâune extension non-POSIX (waddlesplash). Remise en place dâune prise en charge multi-plateforme pour le type [`long double`](https://en.wikipedia.org/wiki/Long_double) de 128 bits. Le code de glibc pour cela avait Ă©tĂ© supprimĂ© lors dâun prĂ©cĂ©dent nettoyage car les plateformes x86 utilisent un format Ă 80 bits. Cela devrait corriger des plantages sur ARM64 et RISC-V lors de lâutilisation de ce type de valeurs (waddlesplash suite Ă lâinvestigation de smrobtzz). Bien que le problĂšme eĂ»t dĂ©jĂ Ă©tĂ© signalĂ© lors de la suppression du code concernĂ©, Ă lâĂ©poque il nây avait pas dâarchitecture fonctionnelle permettant de prouver la prĂ©sence du problĂšme. Ajout dâun _wrapper_ pour la fonction sigaction dans le « POSIX error mapper », qui permet de faire fonctionner des applications dĂ©pendant du fait que les valeurs de errno sont positives (contrainte apparue dans les versions rĂ©centes de POSIX, mais impossible Ă satisfaire tout en conservant la compatibilitĂ© avec BeOS) (korli). RĂ©paration de `POSIX_SPAWN_SETSID`, qui ne fonctionnait pas (waddlesplash). Noyau ===== _Le noyau de Haiku est un noyau monolithique assez classique. Il offre la possibilitĂ© de charger des modules, et une attention particuliĂšre est apportĂ©e Ă conserver le mieux possible lâAPI dĂ©finie entre le noyau et les modules, rendant assez facile le dĂ©veloppement de modules (tels que des pilotes de pĂ©riphĂ©riques) indĂ©pendamment du noyau._ Gestion des hĂŽtes Hyper-V : calibration TSC spĂ©cifique et pilote VMbus (Goldfish64 dont câest la premiĂšre contribution). AmĂ©lioration du suivi des mutex de lâespace utilisateur dans le noyau, pour rendre les problĂšmes moins faciles Ă dĂ©clencher et plus faciles Ă rattraper (waddlesplash). Korli a corrigĂ© des problĂšmes dĂ©tectĂ©s par les tests du langage Go : - Lors de la crĂ©ation dâun fichier qui impose de traverser un lien symbolique vers un dossier qui nâexiste pas encore, - Dans la gestion des paquets rĂ©seaux, oĂč une gestion de taille de tampon mĂ©moire utilisait des valeurs incohĂ©rentes. Retravail en profondeur des messages SMP (Ă la base de toute la mĂ©canique de synchronisation de lâexĂ©cution du code entre diffĂ©rents threads et cĆurs de CPU) : rĂ©duction des attentes actives en utilisant rw_spinlock au lieu de spinlock simples, envoi de messages Ă seulement certains cĆurs plutĂŽt quâen broadcast, traitement des messages reçus par un cĆur avant dâattendre la rĂ©ception des messages envoyĂ©s aux autres, suppression dâopĂ©rations atomiques inutiles, etc. (waddlesplash). Ces changements ne semblent pas rĂ©gler les gros problĂšmes de performance observĂ©s avec ce code lors de lâutilisation de Haiku dans VirtualBox, qui reste donc non recommandĂ© pour utiliser Haiku. Activation de lâutilisation de certaines fonctions "builtins" du compilateur dans le noyau. Le noyau est compilĂ© avec lâoption `-freestanding` pour indiquer au compilateur quâil ne sâagit pas dâun environnement dâexĂ©cution standard, en espace utilisateur et avec une bibliothĂšque C. Cette option empĂȘche le compilateur de supposer quâune fonction nommĂ©e `memcpy` (par exemple) a un comportement spĂ©cifique et peut ĂȘtre remplacĂ©e par une implĂ©mentation accĂ©lĂ©rĂ©e. Cela limite les possibilitĂ©s dâoptimisation. Pour Ă©viter ce problĂšme, il faut appeler explicitement les fonctions built-in du compilateur qui implĂ©mentent ces opĂ©rations, ce qui se fait via des manipulations du prĂ©processeur C. Les noyaux Linux et FreeBSD ont dĂ©jĂ mis en place cette solution, et maintenant Haiku applique la mĂȘme solution (waddlesplash). Correction dâun problĂšme dâinitialisation de IO-APIC sur certains systĂšmes avec un bus PCIe (Goldfish64). Optimisation de fonctions liĂ©es Ă la gestion de la swap (waddlesplash). Retravail de la gestion des allocations pour amĂ©liorer la stabilitĂ© et les performances lorsque la mĂ©moire swap est utilisĂ©e (ce patch Ă©tait en test depuis plusieurs mois afin de trouver un maximum de bugs avant de le fusionner, et de ne pas trop dĂ©stabiliser les nightly builds). Nettoyage du code vĂ©rifiant les permissions dâaccĂšs Ă la mĂ©moire et la protection (en lecture ou en Ă©criture). Modification de lâinitialisation des tas dâallocation mĂ©moire du noyau pour permettre dâactiver les modes "debug" ou "guarded" avec une option du menu de dĂ©marrage (sans devoir recompiler le noyau). Ainsi les utilisateurs peuvent facilement activer ces options pour aider Ă lâinvestigation de problĂšmes de corruption de mĂ©moire qui ne se reproduisent que sur leur machine (waddlesplash). Correction de problĂšmes de synchronization entre le cache de mĂ©moire virtuelle et les opĂ©rations sur le systĂšme de fichiers, qui pouvait aboutir Ă un blocage complet du systĂšme. Ajout dâun test unitaire pour ce cas particulier (waddlesplash). RĂ©organisation de la mĂ©moire allouĂ©e pour le SMP (multiprocesseurs), pour Ă©viter dâallouer un grand nombre de variables atomiques dans la mĂȘme ligne de cache CPU (problĂšme de ["false sharing »](https://en.wikipedia.org/wiki/False_sharing)). (waddlesplash) DĂ©coupage des fichiers de code "VM" (gestion de la mĂ©moire virtuelle) dans des fichiers de taille raisonable, par exemple pour le code dâinitialisation et le « page writer ». DĂ©placement du code de notification de page occupĂ©e, suppression dâun champ inutile dans les page queues. Waddlesplash poursuit ce travail avec une refonte du page writer, qui nâest pas encore mergĂ©e pour lâinstant. Gestion des ASIDs dans les TLB ------------------------------ Ce sujet avait Ă©tĂ© discutĂ© il y a quelques annĂ©es dans le cadre dâun dĂ©but de participation au Google Summer of Code qui nâavat pas abouti. Il est revenu Ă la surface suite Ă une sĂ©rie dâarticle « The Gerrit Code Review Iceberg », qui explore les patchs et changements abandonnĂ©s par leurs auteurs respectifs sur la plateforme de revue de code Gerrit (plus de 300 changements en attente). Lâun des changements listĂ©s a attirĂ© lâintĂ©rĂȘt de SED4906 qui sâest penchĂ© sur les ASIDs. Le sujet est un peu technique et mĂ©rite quelques explications. Pour gĂ©rer la mĂ©moire virtuelle, on utilise une structure appelĂ©e [TLB](https://fr.wikipedia.org/wiki/Translation_lookaside_buffer). Câest cette structure qui permet de faire correspondre une adresse en mĂ©moire physique Ă une adresse en mĂ©moire virtuelle, et Ă©galement de gĂ©rer les permissions dâaccĂšs (lecture, Ă©criture ou exĂ©cution) sur cette mĂ©moire. Ces informations sont stockĂ©es en RAM et, pour gĂ©rer les vastes quantitĂ©s de mĂ©moire sur les machines modernes, peut comporter [jusquâĂ 5 niveaux dâindirection](https://en.wikipedia.org/wiki/Intel_5-level_paging). Si chaque accĂšs mĂ©moire devait traverser ces 5 niveaux pour trouver lâadresse physique Ă accĂ©der, le systĂšme serait extrĂȘmement ralenti. Le processeur inclut donc un cache spĂ©cifique dans lequel sont stockĂ©es les entrĂ©es TLB les plus rĂ©cemment utilisĂ©es. Ainsi, la plupart des accĂšs sont rĂ©solus trĂšs rapidement Ă lâaide de ce cache et lâimpact de la mĂ©moire virtuelle sur les performances est faible. Cependant, ce cache crĂ©e un autre problĂšme : lors dâun changement de contexte (exĂ©cution dâun autre processus par le processeur par exemple), il faut prendre garde Ă vider ce cache. Sans quoi, le nouveau processus pourrait accidentellement accĂ©der aux donnĂ©es de lâancien, suite Ă la mise en cache des mauvaises donnĂ©es. La solution traditionnelle Ă ce problĂšme est de vider ce cache Ă chaque changement de contexte, câest-Ă -dire plusieurs centaines de fois par seconde. Un processus interrompu, mĂȘme briĂšvement, va donc se retrouver lorsquâil reprend son exĂ©cution avec un cache vide, et les premiers accĂšs Ă la mĂ©moire seront donc fortement ralentis. Une solution plus rĂ©cente est lâutilisation d'[ASIDs](https://developer.arm.com/documentation/den0013/0400/The-Memory-Management-Unit/Multi-tasking-and-OS-usage-of-translation-tables/Address-Space-ID) dans la table des pages. Cela signifie que, dans le cache TLB, chaque entrĂ©e va stocker non seulement lâadresse physique et les permissions, mais aussi un identifiant du processus auquel ces informations sont associĂ©es. Ainsi, lors dâun changement de contexte, il nâest plus nĂ©cessaire de vider le cache. Le nouveau processus disposant dâun ID diffĂ©rent, il ne va pas utiliser les entrĂ©es prĂ©sentes pour un autre processus. Et si le processus initial reprend son exĂ©cution, il trouvera une partie du cache dĂ©jĂ prĂ©chargĂ©e avec ses informations. Des identifiants spĂ©ciaux peuvent Ă©galement ĂȘtre utilisĂ©s, par exemple pour lâespace mĂ©moire du noyau. Cela permet de conserver dans le cache TLB toutes les entrĂ©es correspondant au noyau, qui sont utilisĂ©es lors des appels systĂšme peu importe le processus en cours dâexĂ©cution. Le patch implĂ©mentant les ASIDs pour les processeurs x86 est encore en cours de dĂ©veloppement. Mais la discussion autour de ces changements a dĂ©jĂ conduit Ă lâintĂ©gration de deux modifications plus simples: - Lors de la synchronisation entre CPU : par exemple si plusieurs threads (partageant le mĂȘme espace mĂ©moire) sâexĂ©cutent sur des cĆurs de processeur diffĂ©rents, il est nĂ©cessaire de synchroniser les caches TLB des cĆurs de processeur correspondants. Pour ce faire, les processeurs sâenvoient des messages sâinformant mutuellement de la nĂ©cessitĂ© de vider le cache TLB. Ce message peut ĂȘtre reçu alors que le processus en cours dâexĂ©cution a dĂ©jĂ changĂ©, et dans ce cas, il dĂ©clenchait inutilement une vidange du cache supplĂ©mentaire (waddlesplash). - Il y avait dâautres problĂšmes dans lâimplĂ©mentation spĂ©cifique aux processeurs x86. Les mesures de performances sur le patch avec activation des ASIDs (dans plusieurs versions) ont conduit Ă rĂ©cupĂ©rer certains correctifs amĂ©liorant les performances sans nĂ©cessiter lâactivation des ASIDs (SED4906 et waddlesplash). Sur les processeurs x86, lâutilisation dâASIDs est entiĂšrement optionnelle. Ce nâest pas le cas sur dâautres architectures comme SPARC, oĂč leur intĂ©gration dans le processeur est beaucoup plus profonde, avec par exemple des instructions permettant de travailler avec plusieurs espaces dâadressage simultanĂ©ment. Chargeur de dĂ©marrage ===================== Correction dâun problĂšme avec la fonction pour "bloquer" des fichiers (par exemple dĂ©sactiver des pilotes de pĂ©riphĂ©riques empĂȘchant le dĂ©marrage) pour traiter correctement les noms de fichiers contenant des espaces (madmax). Correction dâune fuite de mĂ©moire dans le code affichant lâĂ©cran de dĂ©marrage. La mĂ©moire Ă©tait bien libĂ©rĂ©e lors du dĂ©marrage du noyau, mais seulement aprĂšs avoir Ă©tĂ© tranfĂ©rĂ©e du bootloader vers le noyau ce qui complique et rallonge inutilement la procĂ©dure de dĂ©marrage (waddlesplash). Augmentation de la taille de la zone de mĂ©moire contenant les arguments du noyau, qui pouvait se remplir dans certains cas particuliers comme les images "bootstrap". SystĂšme de build ================ Forçage de la compatibilitĂ© C89 lorsquâon compile GCC 2 avec les versions rĂ©centes de GCC. GCC 2 est toujours utilisĂ© dans Haiku pour assurer la compatibilitĂ© avec BeOS. Il nâest pas possible de le compiler avec un compilateur sâattendant Ă trouver du code compatible avec les versions actuelles du langage C (korli, waddlesplash, kallisti5). La plateforme dâintĂ©gration continue a ensuite pu ĂȘtre mise Ă jour vers une version de Linux qui fournit GCC 14. Activation de lâoption de compilation `-Werror` pour un plus grand nombre de dossiers, en particulier netfs, et les pilotes graphiques radeon et s3 (fruitdelapassion). Cette option demande au compilateur de dĂ©clencher une erreur de compilation, plutĂŽt quâun simple avertissement, pour un certain nombre de problĂšmes. Ainsi, on sâassure que les dĂ©veloppeurs ne passent pas Ă cĂŽtĂ© dâun problĂšme qui aurait pu ĂȘtre dĂ©tectĂ© tout de suite. La prochaine Ă©tape sera dâinverser la logique pour cette option : lâactiver par dĂ©faut pour tous les dossiers, et la dĂ©sactiver explicitement lorsque câest absolument nĂ©cessaire, par exemple pour du code importĂ© dâautres projets pour lequel il est prĂ©fĂ©rable de limiter les modifications. KapiX a dĂ©marrĂ© un chantier dâamĂ©lioration du systĂšme de tests unitaires afin de rendre plus facile lâajout de nouveaux tests, rĂ©duire la quantitĂ© de code Ă Ă©crire pour faire fonctionner un test, et encourager les autres dĂ©veloppeurs Ă Ă©crire des tests : - Correction de la compilation des tests existants (kernel, app_server, libroot...) - DĂ©finition dâun nouveau type dâimage "test" contenant les tests unitaires et un serveur SSH. Cette image peut ĂȘtre gĂ©nĂ©rĂ©e par la CI, puis dĂ©marrĂ©e dans une machine virtuelle pour lancer les tests - DĂ©sactivation des tests qui ne fonctionnent pas au point de provoquer un plantage irrĂ©cupĂ©rable. Ajout dâun fichier de prĂ©dĂ©finition des paramĂštres POP/IMAP pour lâhĂ©bergeur disroot.org (humdinger). Correction de la compilation de libroot avec le compilateur clang (nephele). Nettoyage des Jamfiles, oĂč du code exĂ©cutĂ© en espace utilisateur employait les en-tĂȘtes normalement rĂ©servĂ©s au noyau. Les fichiers qui Ă©taient souvent utilisĂ©s dans les deux espaces ont Ă©tĂ© dĂ©placĂ©s dans un dossier commun (waddlesplash). Modification de la gestion de errno dans libroot_build (la couche de compatibilitĂ© qui implĂ©mente des fonctions spĂ©cifiques Ă Haiku sur un systĂšme hĂŽte utilisĂ© pour la compilation croisĂ©e). Dans certains cas, la valeur de errno nâĂ©tait pas bonne, ce qui crĂ©ait des problĂšmes de comportement dans mimeset et dans dâautres outils utilisĂ©s lors de la compilation (waddlesplash). Ajout dâun harnais fs_shell pour le systĂšme de fichiers ExFAT. Cela permet de tester le code du systĂšme de fichiers hors de Haiku, dans une interface en ligne de commande permettant de rĂ©aliser des opĂ©rations simples (Halonix). Ajout dâun message dâavertissement dans la sortie de ./configure si certaines bibliothĂšques nĂ©cessaires Ă la compilation de Haiku ne sont pas disponibles (nephele). Correction de diverses mauvaises orthographes pour le mot "unknown" un peu partout dans le code (SED4906). Suppression dâun fichier temporaire qui Ă©tait accidentellement laissĂ© en place lors de la gĂ©nĂ©ration dâune image "MMC" (contenant un chargeur de dĂ©marrage pour une platforme ARM). Certains utilisateurs ont confondu ce fichier avec lâimage finale et ont eu du mal Ă dĂ©marrer Haiku Ă cause de ce problĂšme (waddlesplash). Documentation ============= La documentation de Haiku est sĂ©parĂ©e en 3 parties: - Un guide de lâutilisateur, prĂ©sentant les diffĂ©rentes applications, raccourcis clavier... - Le « Haiku Book », une rĂ©fĂ©rence des API pour les dĂ©veloppeurs dâapplications, - Une documentation "interne", pour les dĂ©veloppeurs qui travaillent sur le systĂšme dâexploitation lui-mĂȘme. La premiĂšre est traduite dans plusieurs langues, tandis que les deux autres sont actuellement disponibles uniquement en anglais. Haiku Book ---------- Le Haiku Book est actuellement Ă utiliser en complĂ©ment du Be Book, son Ă©quivalent rĂ©digĂ© pour BeOS. Haiku a obtenu lâautorisation de distribuer des copies du Be Book, mais avec une license nâautorisant pas les modifications. Cela veut dire que le Haiku Book doit ĂȘtre réécrit de zĂ©ro. Les efforts ont donc Ă©tĂ© mis en prioritĂ© sur les nouveautĂ©s de Haiku, et la documentation des parties reprises de BeOS arrive petit Ă petit. Ajout de documentation pour `B_QUERY_WATCH_ALL` qui devient une API publique. Ce flag permet de gĂ©nĂ©rer une requĂȘte sur le systĂšme de fichier et de recevoir des notifications du node monitor lorsque les fichiers trouvĂ©s par la requĂȘte sont modifiĂ©s, mĂȘme si la modification nâentraĂźne pas un ajout ou une suppression du fichier des rĂ©sultats de la requĂȘte. Câest lâĂ©quivalent de `B_WATCH_ALL` qui existait dĂ©jĂ pour le node monitoring sur un dossier classique (waddlesplash). Ajout de documentation pour des classes liĂ©es Ă lâutilisation du rĂ©seau : BCertificate, BProxySecureSocket, BSecureSocket et BSocket (cafeina). Gros nettoyage et amĂ©lioration de la documentation de BEntry et BStatable. Ajout dâune remarque sur MenusBeginning dans la documentation de BWindow (John Scipione). Documentation pour les dĂ©veloppeurs ----------------------------------- La documentation interne est un projet plus rĂ©cent. Elle est construite Ă partir de documents, dâarticles et de messages de mailing list Ă©crits au cours du temps par les dĂ©veloppeurs de Haiku, dans le but de mieux structurer ces connaissances et de dĂ©charger le site web principal du projet, qui avait initialement accueilli ce type de documents au dĂ©but du projet. Aujourdâhui, il serait plus intĂ©ressant dâavoir un site web plus centrĂ© sur lâutilisation de Haiku que sur son dĂ©veloppement, mais il ne faudrait cependant pas perdre ces informations, soit pour leur intĂ©rĂȘt technique, soit pour leur intĂ©rĂȘt historique et la vision quâelles donnent sur les dĂ©buts du projet. Clarification dâun paragraphe incomprĂ©hensible dans la documentation du device manager (OscarL). Mise Ă jour de la documentation sur lâimplĂ©mentation de la mĂ©moire swap et suppression de vieux documents sur la VM (gestion de la mĂ©moire virtuelle) qui ne correspondait plus du tout Ă lâimplĂ©mentation actuelle (waddlesplash). Câest pour quand la bĂȘta 6 ? =========================== Waddlesplash inclut ce paragraphe dans les rapports dâactivitĂ©s mensuels. Le mieux pour se rendre compte des avancĂ©es est de reprendre tel quel les commentaires des 3 derniers mois : FĂ©vrier ------- On sâapproche ! Un gros changement sur la gestion de la mĂ©moire qui corrige une mĂ©chante rĂ©gression est en attente de revue depuis plus dâun mois mais aucun dĂ©veloppeur ne semble disponible pour le relire. Du cĂŽtĂ© du Tracker, la plupart des rĂ©gressions sont corrigĂ©es, mais il en reste encore quelques-unes. En dehors de ces deux gros sujets, il nây a plus que 5 ou 6 bugs et rĂ©gressions qui doivent absolument ĂȘtre corrigĂ©es, mais certaines dâentre elles promettent dâĂȘtre des sujets compliquĂ©s qui vont demander un peu de temps. Mars ---- Câest pas pour tout de suite ! Il y a un problĂšme de rafraĂźchissement de lâaffichage dans WebPositive qui bloque le processus de release. Une bonne partie des autres problĂšmes sont corrigĂ©s. Avril ----- Pas encore ! Le problĂšme dans WebPositive (dans HaikuWebKit, en fait) a Ă©tĂ© corrigĂ©, mais il y a maintenant un problĂšme pour tĂ©lĂ©charger les sources de HaikuWebKit depuis son nouvel hĂ©bergement sur Codeberg depuis les machines de build de Haikuports (le fichier est assez gros et dĂ©clenche un timeout du cĂŽtĂ© de Codeberg). Et de toutes façons, il reste encore quelques bugs du cĂŽtĂ© de Haiku lui-mĂȘme Ă traiter aussi. On peut Ă©galement jeter un oeil sur l'[outil de suivi des bugs](https://dev.haiku-os.org/query?group=status&milestone=R1 %2Fbeta6&status=assigned&status=in-progress&status=new&status=reopened) pour voir oĂč on en est. Au moment de la rĂ©daction de ce rapport, il reste 25 tickets ouverts dans le jalon beta 6, dont 3 de prioritĂ© critique : - Un problĂšme de texte illisible lorsquâon fait un glisser-dĂ©placer dâun grand nombre de fichiers dans le Tracker, - Le mode « Ă©conomie dâĂ©nergie » du scheduler empĂȘche le fonctionnement de certains claviers et trackpads, - La fenĂȘtre de sauvegarde de fichiers a des problĂšmes de mise en page, parfois les contrĂŽles de la fenĂȘtre sont superposĂ©s Google Summer of Code ===================== Haiku fait de nouveau partie des organisations sĂ©lectionnĂ©es cette annĂ©e pour encadrer quelques participants au Google Summer of Code. Une quarantaine de candidatures ont Ă©tĂ© reçues, dont une grande partie ont Ă©tĂ© assez rapidement Ă©liminĂ©es : hors sujet, ne respectant pas le format demandĂ© ou ne comprenant pas une contribution au code par exemple. Le projet Haiku sâen sort plutĂŽt bien, lĂ ou dâautres organisations plus reconnues ont reçues plusieurs centaines de propositions. Finalement, Ă©tant donnĂ© le petit nombre de "mentors" disponibles pour encadrer les participants, seulement 3 participants ont Ă©tĂ© retenus cette annĂ©e grĂące Ă leur travail de trĂšs bonne qualitĂ© avec plusieurs patchs dĂ©jĂ intĂ©grĂ©s avant mĂȘme la fin de la pĂ©riode de candidature. Aquamatic sera encadrĂ© par KapiX et Korli, et va amĂ©liorer lâapplication "Devices" (gestionnaire de pĂ©riphĂ©riques), en particulier pour indiquer clairement les pĂ©riphĂ©riques pour lesquels un pilote est disponible ou non. Mohammed R. Attia et Vighnesh Sawant seront encadrĂ©s par Waddlesplash, Scottmc et PulkoMandy. Ils vont poursuivre lâimplĂ©mentation du Bluetooth dans Haiku. Mohammed se concentre sur les pĂ©riphĂ©riques HID (claviers et souris sans fil) tandis que Vighnesh se chargera du profil audio HFP et, si le projet avance bien, des autres profils audio de meilleure qualitĂ©.