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Ă©.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /