Sommaire
PrĂšs de 350 tickets ont Ă©tĂ© clos dans le cadre du travail sur la version R1 bĂȘta 5. Il y a bien sĂ»r de trĂšs nombreuses corrections de bugs, qui ne seront pas listĂ©es dans cet article. On se concentrera plutĂŽt sur les nouveautĂ©s, sauf dans les cas oĂč la correction est vraiment importante ou permet dâouvrir de nouvelles possibilitĂ©s dâutilisation.
Applications
Haiku est un systĂšme dâexploitation complet, fourni avec un certain nombre dâapplications permettant dâaccomplir les tĂąches les plus courantes. En plus de ces applications de base, le gestionnaire de paquets HaikuDepot, alimentĂ© principalement par le travail du projet HaikuPorts, apporte Ă la fois des applications portĂ©es depuis dâautres systĂšmes et des applications dĂ©veloppĂ©es spĂ©cifiquement pour Haiku.
De façon gĂ©nĂ©rale, on trouve cette annĂ©e dans les applications de Haiku des amĂ©liorations sur le rendu des nombres, lâutilisation dâun symbole de multiplication Ă la place dâune lettre x lĂ oĂč câest pertinent, et de nombreuses petites corrections et amĂ©liorations sur la mise en page des fenĂȘtres, des corrections de problĂšmes de traduction et ainsi de suite.
AboutSystem
AboutSystem est la fenĂȘtre dâinformation sur le systĂšme Haiku. Elle fournit quelques informations sur la machine sur laquelle le systĂšme fonctionne (quantitĂ© de RAM, marque et modĂšle du CPU, uptime) ainsi que les noms des dĂ©veloppeurs et autres logiciels libres ayant participĂ© au dĂ©veloppement de Haiku.
Cette application reçoit tout dâabord une mise Ă jour cosmĂ©tiqueâŻ: si le systĂšme est configurĂ© en «âŻmode sombreâŻÂ», le logo Haiku correspondant (avec un lettrage blanc et des dĂ©gradĂ©s de couleurs un peu diffĂ©rents) sera utilisĂ©. Sinon, ce sera le logo avec lettrage noir.
Elle reçoit Ă©galement quelques mises Ă jour de contenuâŻ: en plus de lâajout de quelques nouveaux contributeurs qui ont rejoint le projet, on trouvera maintenant un lien vers la page web permettant de faire un don Ă Haiku. Plusieurs liens vers des bibliothĂšques tierces utilisĂ©es dans Haiku, qui ne fonctionnaient plus, ont Ă©tĂ© soit supprimĂ©s, soit remplacĂ©s par des liens mis Ă jour.
Enfin, il est dĂ©sormais possible dâutiliser AboutSystem comme un «âŻrĂ©plicantâŻÂ», câest-Ă -dire de lâinstaller directement sur le bureau pour avoir en permanence sous les yeux les statistiques sur lâutilisation mĂ©moire et lâuptime ainsi que le numĂ©ro de build de Haiku en cours dâexĂ©cution (ce qui peut ĂȘtre utile par exemple lorsquâon lance beaucoup de machines virtuelles avec des versions diffĂ©rentes de Haiku pour comparer un comportement, ou si on veut stocker des captures dâĂ©cran de plusieurs versions et sây retrouver facilement).
CharacterMap
Lâapplication «âŻtable de caractĂšresâŻÂ» permet dâĂ©tudier de prĂšs les diffĂ©rents glyphes et symboles prĂ©sents dans une police de caractĂšres. En principe, elle permet de choisir une police spĂ©cifique, mais le serveur graphique de Haiku substitue automatiquement une autre police si on lui demande dâafficher un caractĂšre qui nâest pas disponible dans la police demandĂ©e.
Cela peut ĂȘtre gĂȘnant dans certains contextes, par exemple si on envisage dâembarquer une police dans un fichier PDF, il est difficile de savoir quelle police contient vraiment les caractĂšres quâon veut utiliser.
Lâapplication a Ă©tĂ© amĂ©liorĂ©e pour traiter ce cas et affiche maintenant ces caractĂšres en grisĂ©.
CodyCam
CodyCam est une application permettant de tester une webcam et de lâutiliser pour envoyer pĂ©riodiquement des images vers un serveur HTTP.
LâĂ©volution principale a Ă©tĂ© la mise Ă jour de lâicĂŽne de lâapplication. LâutilitĂ© de CodyCam est limitĂ©e par le manque de pilotesâŻ: il faudra soit trouver une webcam Sonix du dĂ©but des annĂ©es 90, seul modĂšle USB Ă disposer dâun pilote fonctionnel, soit utiliser un ordiphone Android Ă©quipĂ© dâun logiciel permettant de le transformer en camĂ©ra IP (ou encore une vraie camĂ©ra IP).
Le pilote pour les WebCams UVC â standard utilisĂ© pour les camĂ©ras USB modernes â nâest pas encore au point et nâest pas inclus dans les versions publiĂ©es de Haiku.
Debugger
Debugger est, comme son nom lâindique, le debugger de Haiku. Il est dĂ©veloppĂ© spĂ©cifiquement pour le projet sans sâappuyer sur les outils existants (gdb ou lldb). Il dispose Ă la fois dâune interface graphique et dâune interface en ligne de commande, plus limitĂ©e. Cette derniĂšre est surtout utilisĂ©e pour investiguer des problĂšmes dans les composants de Haiku qui sont nĂ©cessaires pour lâutilisation dâune application graphiqueâŻ: app_server, input_server ou encore registrar.
La version en ligne de commande a reçu quelques petites améliorations, mais la principale nouveauté est la prise en charge des formats DWARF-4 et DWARF-5 pour les informations de debug. Cela permet de charger les informations générées par les versions modernes de GCC
, sans avoir besoin de forcer la gĂ©nĂ©ration dâune version plus ancienne du format DWARF.
Le dĂ©sassembleur udis86, qui nâest plus maintenu et ne reconnaĂźt pas certaines instructions ajoutĂ©es rĂ©cemment dans les processeurs x86, a Ă©tĂ© remplacĂ© par Zydis.
Enfin, un bug assez gĂȘnant a Ă©tĂ© corrigĂ©âŻ: si une instance de Debugger Ă©tait dĂ©jĂ en train de dĂ©bugger une application et quâune deuxiĂšme application venait Ă planter, il nâĂ©tait pas possible dâattacher une deuxiĂšme instance de Debugger Ă cette application. Les problĂšmes impliquant plusieurs processus pouvaient donc ĂȘtre un peu compliquĂ©s Ă investiguer. Câest maintenant rĂ©solu.
Deskbar
Lâapplication DeskBar fournit la «âŻbarre des tĂąchesâŻÂ» de Haiku. Elle permet de naviguer entre les fenĂȘtres et applications ouvertes, de lancer de nouvelles applications via un menu (similaire au «âŻmenu dĂ©marrerâŻÂ» de Windows), ou encore dâafficher une horloge et des icĂŽnes fournis par dâautres applications (sous forme de rĂ©plicants).
Elle fait partie, avec le Tracker, des applications qui ont Ă©tĂ© publiĂ©es sous license libre lors de lâabandon de BeOS par Be Inc.
Quelques changements dans la DeskBar :
- Tous les menus utilisent maintenant la police «âŻmenuâŻÂ» choisie dans les prĂ©fĂ©rences dâapparence du systĂšme. Auparavant, la police «âŻmenuâŻÂ» et la police «âŻplainâŻÂ» Ă©taient mĂ©langĂ©es. Ces deux polices Ă©tant identiques dans la configuration par dĂ©faut, le problĂšme nâavait pas Ă©tĂ© repĂ©rĂ©.
- Si un nom de fenĂȘtre est tronquĂ© dans la liste des fenĂȘtres, le nom complet peut ĂȘtre affichĂ© dans une infobulle.
- LâicĂŽne pour les fenĂȘtres dans la DeskBar a Ă©tĂ© remplacĂ©e. La nouvelle icĂŽne indique plus clairement si une fenĂȘtre se trouve dans un autre bureau virtuel (dans ce cas, activer cette fenĂȘtre provoquera un changement de bureau).
GLTeapot
GLTeapot est une application permettant de tester le rendu OpenGL, en affichant un modĂšle 3D de la thĂ©iĂšre de lâUtah.
En plus de la thĂ©iĂšre, cette application affiche un compteur du nombre dâimages affichĂ©es par secondes. Bien que les chiffres affichĂ©s ne soient pas du tout reprĂ©sentatifs des performances dâun rendu 3D rĂ©aliste, certains utilisateurs insistent lourdement pour pouvoir faire le concours de gros chiffres de nombre dâimages par seconde.
Il est donc Ă nouveau possible de dĂ©sactiver la synchronisation sur le rafraĂźchissement de lâĂ©cran, et demander au processeur de rĂ©afficher la thĂ©iĂšre plusieurs centaines de fois par seconde, bien que lâĂ©cran soit incapable de suivre le rythme. Par dĂ©faut, la synchronisation est activĂ©e et le rafraĂźchissement ne dĂ©passera jamais 60 FPS, si toutefois le pilote graphique implĂ©mente les fonctions de synchronisation nĂ©cessaires.
HaikuDepot
HaikuDepot est un hybride entre un gestionnaire de paquets et un magasin dâapplications.
Il se compose dâun serveur (dĂ©veloppĂ© en Java) fournissant une API REST et permettant de collecter les informations sur les applications (icĂŽnes, captures dâĂ©crans, catĂ©gories, votes et revues des utilisateurs, choix de la rĂ©daction pour les applications mises en avantâŠ), dâun frontend web minimaliste et dâune application native C++ permettant dâafficher ces donnĂ©es.
La principale nouveautĂ© est lâintĂ©gration du systĂšme de single-sign-on (SSO) permettant dâutiliser un compte utilisateur commun avec dâautres services en ligne de Haiku. Actuellement, lâoutil de revue de code Gerrit
utilise ce mĂȘme compte, mais ce nâest pas encore le cas pour Trac (outil de suivi des bugs) ni pour le forum. Ce sera mis en place plus tard.
De façon peut-ĂȘtre moins visible, mais pas moins importante, le code C++ de lâapplication a reçu de nombreuses amĂ©liorations et optimisations «âŻsous le capotâŻÂ», rendant lâapplication plus rapide et plus fiable, mais qui sont un peu difficiles Ă rĂ©sumer dans le cadre de cette dĂ©pĂȘche.
Enfin, lâapparence de lâapplication a Ă©tĂ© lĂ©gĂšrement retravaillĂ©e pour mieux sâadapter aux Ă©crans Ă haute dĂ©finition (ce qui nĂ©cessite dâavoir des marges et espacements de taille dynamique en fonction de la taille de texte choisie par lâutilisateur).
Icon-O-Matic
Icon-O-Matic est un Ă©diteur dâicĂŽnes. Il permet dâexporter les fichiers au format HVIF, un format vectoriel compact qui permet de stocker les icĂŽnes dans lâinode dâen-tĂȘte des fichiers pour un chargement et un affichage rapide.
Cette application a bĂ©nĂ©ficiĂ© du travail de Zardshard pendant le Google Summer of Code 2023, elle a donc reçu plusieurs Ă©volutions et corrections importantes (dont certaines sont mentionnĂ©es dans la dĂ©pĂȘche anniversaire de lâannĂ©e derniĂšre).
Citons en particulier lâajout dâun nouveau type de transformation, «âŻperspectiveâŻÂ», qui permet de facilement dĂ©former un ensemble de chemins vectoriels selon une projection de perspective, ce qui est assez utile pour concevoir plus facilement une icĂŽne avec un aspect tridimensionnel (bien quâen pratique lâapparence habituelle des icĂŽnes de Haiku soit un intermĂ©diaire entre une projection perspective et une vue isomĂ©trique, ne se prĂȘtant pas forcĂ©ment Ă lâutilisation de cette opĂ©ration de transformation purement mathĂ©matique).
Une autre petite amĂ©lioration est lâajout dâune vĂ©rification pour empĂȘcher la fenĂȘtre de Icon-O-Matic de se positionner en dehors de lâĂ©cran, par exemple si on a dĂ©placĂ© la fenĂȘtre vers le bas de lâĂ©cran, enregistrĂ© cette position, puis relancĂ© lâapplication dans une rĂ©solution dâĂ©cran plus rĂ©duite. Dans ce cas, la fenĂȘtre sera automatiquement ramenĂ©e dans la zone visible de lâaffichage.
Magnify
Lâapplication Magnify permet dâafficher une vue zoomĂ©e dâune partie de lâĂ©cran. Elle peut servir pour amĂ©liorer lâaccessibilitĂ© (mais nâest pas idĂ©ale pour cet usage), mais aussi pour les dĂ©veloppeurs dâinterfaces graphiques qui ont parfois besoin de compter les pixels pour sâassurer que leurs fenĂȘtres sont bien construites.
En plus de lâaffichage zoomĂ©, lâapplication permet dâafficher lâencodage RGB de la couleur dâun pixel, ou encore de placer des «âŻrĂšglesâŻÂ» permettant de vĂ©rifier lâalignement des objets. Ces derniĂšres ont reçu une petite mise Ă jour, avec une amĂ©lioration de lâaffichage de leur largeur et hauteur pour les rendre plus lisibles.
MediaPlayer
Lâaffichage des sous-titres ne fonctionnait pas correctement, il manquait une partie du texte. Câest maintenant corrigĂ©.
PowerStatus
Lâapplication PowerStatus permet de surveiller lâĂ©tat de la batterie pour les ordinateurs qui en disposent.
Elle a reçu plusieurs améliorations importantes :
Une notification a Ă©tĂ© ajoutĂ©e pour un niveau de dĂ©charge trĂšs faible (en plus du niveau faible dĂ©jĂ prĂ©sent). Ces deux niveaux peuvent ĂȘtre paramĂ©trĂ©s Ă un pourcentage choisi de dĂ©charge de la batterie, et associĂ© Ă des sons dâalerte spĂ©cifiques. Avant ces changements, il Ă©tait facile de ne pas voir le message dâalerte (affichĂ© seulement pendant quelques secondes) ou de se dire quâavec 15% de batterie on a encore le temps de faire plein de trucs, puis se retrouver un peu plus tard avec une batterie vide sans autre avertissement.
LâĂ©tat «âŻnot chargingâŻÂ» est maintenant dĂ©tectĂ© et correctement affichĂ©, pour une batterie au reposâŻ: ni en train de se charger, ni en train dâalimenter la machine. Câest en particulier le cas dâune batterie dĂ©jĂ chargĂ©e Ă 100%, si la machine reste connectĂ©e au rĂ©seau Ă©lectrique.
LâicĂŽne de statut de la batterie sâinstalle automatiquement dans la DeskBar au premier dĂ©marrage de Haiku sur les machines disposant dâune batterie.
Le rĂ©glage du mode «âŻperformanceâŻÂ» ou «âŻĂ©conomie dâĂ©nergie" est enregistrĂ© et rĂ©-appliquĂ© lors des prochains dĂ©marrages (ces modes configurent lâordonnanceur du noyau pour exĂ©cuter un maximum de tĂąches sur tous les cĆurs du processeur, ou bien au contraire pour essayer de garder ces cĆurs en veille autant que possible sâils ne sont pas nĂ©cessaires).
SerialConnect
SerialConnect est une application de terminal série, utile principalement aux développeurs de systÚmes embarqués et autres gadgets électroniques.
Elle est encore en cours de dĂ©veloppement et propose pour lâinstant les fonctions les plus basiques. Il est maintenant possible de coller du texte depuis le presse-papier pour lâenvoyer sur un port sĂ©rie, ce qui est pratique si on veut envoyer plusieurs fois la mĂȘme sĂ©quence de commandes.
ShowImage
ShowImage est la visionneuse dâimages de Haiku. Elle utilise les traducteurs, des greffons avec une API standardisĂ©e qui permettent de convertir diffĂ©rents formats de fichiers entre eux.
Lâinterface graphique de ShowImage a Ă©tĂ© mise Ă jour pour utiliser le «âŻlayout systemâŻÂ». Historiquement, dans BeOS, tous les Ă©lĂ©ments des interfaces graphiques devaient ĂȘtre positionnĂ©s manuellement avec des coordonnĂ©es en pixels, ce qui est pĂ©nible Ă faire, surtout si on doit traiter tous les cas (polices de caractĂšres de diffĂ©rentes tailles, remplacement des textes lors de traductions, utilisation de thĂšme dâinterfaces diffĂ©rents), et aussi lors dâĂ©volution de lâapplication (si on veut insĂ©rer un Ă©lĂ©ment en plein milieu, il faut souvent dĂ©caler tout ce qui se trouve autour).
Le «âŻlayout systemâŻÂ» fournit un ensemble dâoutils pour automatiser ce travail, soit Ă lâaide dâĂ©lĂ©ments prĂ©dĂ©finis (grilles, groupes, «âŻcartesâŻÂ» superposĂ©es), soit Ă lâaide dâun systĂšme de dĂ©finition de contraintes et de programmation linĂ©aire.
Dâautre part, ShowImage dispose maintenant dâun menu permettant dâouvrir lâimage affichĂ©e dans un Ă©diteur dâimages.
Terminal
Le Terminal de Haiku permet dâexĂ©cuter un shell (câest bash
par défaut) et toutes les applications conçues pour un affichage en console.
Les principaux changements cette annĂ©e sont la correction dâun problĂšme sur la configuration des couleurs utilisĂ©es par le Terminal (il y avait un mĂ©lange entre le nom anglais et le nom traduit des couleurs, empĂȘchant dâenregistrer et de relire correctement le fichier de configuration), ainsi que des modifications sur les raccourcis clavier utilisĂ©s par le Terminal lui-mĂȘme (en particulier pour naviguer entre plusieurs onglets) qui entraient en conflit avec ceux utilisĂ©s par les applications lancĂ©es dans le terminal.
Le terminal est Ă©galement capable de traiter les «âŻbracketed pasteâŻÂ», câest-Ă -dire que les applications en console sont informĂ©es que des caractĂšres en entrĂ©e proviennent du presse-papier. Cela permet par exemple Ă bash de ne pas exĂ©cuter directement des commandes qui sont collĂ©es, mais de les mettre en surbrillance et dâattendre que lâutilisateur valide cette saisie.
Dâun point de vue plus bas niveau, les pilotes TTY utilisĂ©s pour les ports sĂ©rie et pour le Terminal, qui Ă©taient indĂ©pendants, ont Ă©tĂ© unifiĂ©s afin dâĂ©viter de devoir corriger tous les bugs deux fois dans deux versions du code presque identiques.
Tracker
Tracker est le navigateur de fichiers de Haiku. Tout comme la DeskBar, il fait partie des quelques rares morceaux de BeOS qui ont Ă©tĂ© publiĂ©s sous licence libre par Be et ont donc pu ĂȘtre repris directement par Haiku. Contrairement Ă la DeskBar, la publication du code du Tracker avait conduit Ă lâapparition de nombreux forks, chacun amĂ©liorant Ă sa façon le logiciel. La version utilisĂ©e par Haiku provient principalement du projet OpenTracker, mais a rĂ©intĂ©grĂ© ou rĂ©implĂ©mentĂ© au fil du temps les modifications faites dans dâautres variantes.
Le Tracker est un composant central de lâinterface de Haiku et a donc reçu un nombre assez important dâĂ©volutions :
La taille des fichiers est maintenant affichĂ©e Ă lâaide de la fonction string_for_size
qui sâadapte aux conventions de la langue et du pays choisi par lâutilisateur.
Les brouillons de courrier Ă©lectronique disposent maintenant de leur propre type MIME et de lâicĂŽne associĂ©e. Ils sâouvriront dans un Ă©diteur de mail plutĂŽt que dans une fenĂȘtre de lecture de message.
Pour les fichiers qui disposent dâun attribut «âŻratingâŻÂ» (Ă©valuation), ce dernier est affichĂ© avec des Ă©toiles pleines ou vides selon la note attribuĂ©e. La note va de 0 Ă 10 mais il nây a que 5 Ă©toiles. Le caractĂšre demi-Ă©toile permet dâafficher la note exacte avec les versions rĂ©centes dâUnicode (depuis 2018 en fait, mais il a fallu attendre la disponibilitĂ© dans une police de caractĂšres).
La gestion des dossiers en lecture seule a Ă©tĂ© amĂ©liorĂ©e. Ils sont affichĂ©s sur fond gris (au lieu dâun fond blanc pour les dossiers modifiables) et tous les menus correspondant Ă des opĂ©rations non autorisĂ©es sont dĂ©sactivĂ©s (au lieu dâĂȘtre activĂ©s, mais dâaboutir sur une erreur car le dossier est en lecture seule).
Dans le mĂȘme esprit, le bouton «âŻouvrirâŻÂ» des boĂźtes de dialogues dâouverture de fichier est dĂ©sactivĂ© si le fichier sĂ©lectionnĂ© ne peut pas ĂȘtre ouvert (câĂ©tait dĂ©jĂ le cas, mais tous les cas possibles nâĂ©taient pas bien pris en compte).
Un problĂšme dâaffichage sur le systĂšme de fichier packagefs
a Ă©tĂ© corrigĂ© : les dossiers nâont pas de taille et affichent donc -
au lieu dâune taille fixe de 4 Kio qui nâa aucune signification.
La fenĂȘtre de recherche a reçu quelques Ă©volutions, voir plus bas dans la section dĂ©diĂ©e au Google Summer of Code, qui dĂ©taille le travail rĂ©alisĂ© Ă ce sujet.
Le menu «âŻtemplatesâŻÂ», utilisĂ© quand on fait un 'clic droit -> NouveauâŠ' et qui permet de crĂ©er diffĂ©rents types de fichiers et de dossiers Ă partir de fichiers de rĂ©fĂ©rence, peut maintenant contenir des sous-dossiers, pour les personnes qui utilisent beaucoup cette possibilitĂ©, avec par exemple des modĂšles de documents prĂ©-remplis pour diffĂ©rents usages.
Enfin, un peu de nettoyage interne : les classes NavMenu et SlowContextPopup, qui permettent la navigation dans les sous-dossiers via des menus popup, ont Ă©tĂ© fusionnĂ©es en une seule classe car elles sont toujours utilisĂ©es ensemble. Cela simplifie le code pour lâaffichage de ces menus, qui a quelques particularitĂ©s pour permettre une navigation confortable mĂȘme sur un disque dur un peu lent.
TV
Lâapplication TV utilisĂ©e pour recevoir la TNT Ă lâaide dâun tuner appropriĂ© a Ă©tĂ© dĂ©placĂ©e dans le paquet haiku_extras
et nâest donc plus installĂ©e par dĂ©faut. La plupart des gens ne disposant pas dâun tuner compatible sur leur ordinateur, cette application Ă©tait source de confusion et de nombreuses questions sur le forum.
WebPositive
WebPositive est le navigateur web de Haiku. Il utilise le moteur WebKit développé conjointement par Apple, Igalia et Sony principalement.
En dehors de la mise Ă jour du moteur vers une version plus rĂ©cente, WebPositive reçoit actuellement peu dâĂ©volutions, les dĂ©veloppeurs Ă©tant malheureusement trop occupĂ©s par ailleurs. On peut toutefois mentionner une correction sur la barre de signets : celle-ci ne sâaffichait jamais lorsque la langue du systĂšme Ă©tait autre chose que lâanglais.
Zip-O-Matic
Zip-O-Matic est un outil permettant de crĂ©er une archive zip facilement depuis le Tracker. Il a reçu une amĂ©lioration qui est en fait une correction dâun problĂšme qui existait depuis longtemps : lâarchive crĂ©Ă©e est maintenant automatiquement sĂ©lectionnĂ©e dans le navigateur de fichier Ă la fin du processus, ce qui permet de facilement la retrouver pour la renommer, la dĂ©placer ou l'envoyer Ă son destinataire.
Haikuports
Haikuports est un projet indĂ©pendant de Haiku, il se charge dâalimenter le dĂ©pĂŽt de paquets. Au dĂ©part il sâagissait principalement dâun projet pour le portage de bibliothĂšque et de programmes venant dâautres systĂšmes (dâoĂč son nom), mais il est Ă©galement utilisĂ© pour la plupart des applications natives dĂ©veloppĂ©es pour Haiku.
Le dĂ©pĂŽt de paquets contient actuellement 4193 paquets, il est mis Ă jour en continu par une petite Ă©quipe de bĂ©nĂ©voles qui ne sont pas forcĂ©ment tous dĂ©veloppeurs, mais tout de mĂȘme capables de faire les tĂąches de maintenance ainsi que le dĂ©veloppement de quelques patchs simples.
Il est impossible de lister toutes les mises à jour et ajouts, le projet HaikuPorts étant trÚs actif. Donc voici une sélection arbitraire de quelques nouveautés et mises à jour.
Applications natives
- Mises Ă jour de Renga (client XMPP), PonpokoDiff (outil de diff), 2pow (clone de 2048), StreamRadio (lecteur de podcasts), NetSurf (navigateur web lĂ©ger)âŠ
- Genio, un IDE pour Haiku avec gestion de la complétion de code via le protocole LSP (compatible avec les outils développés pour VS Code par exemple).
- Ajout de HaikuUtils, un ensemble dâoutils de dĂ©veloppement et de debug divers.
- WorkspaceNumber, un replicant pour afficher le numéro du bureau actif dans la DeskBar.
- KeyCursor, un outil pour contrĂŽler le curseur de souris Ă lâaide du clavier.
- BatchRename, un outil pour renommer automatiquement des fichiers par lot.
Applications portées
- Un gros travail a Ă©tĂ© fait sur le portage de KDE Frameworks et des applications lâutilisant. De trĂšs nombreuses applications Qt et KDE sont donc disponibles.
- Du cĂŽtĂ© de GTK, il nâexistait pas de version de GTK pour Haiku, le problĂšme a Ă©tĂ© rĂ©solu Ă lâaide dâune couche de compatibilitĂ© avec Wayland qui nâimplĂ©mente pas le protocole Wayland mais rĂ©implĂ©mente lâAPI de la libwayland. Les applications GTK arrivent petit Ă petit, mais lâintĂ©gration est pour lâinstant beaucoup moins bonne quâavec Qt, qui dispose lui dâun vrai port utilisant les APIs natives directement. Lâapparence des applications est trĂšs visiblement diffĂ©rente, certaines touches du clavier ne fonctionnent pas. Câest donc encore un peu expĂ©rimental.
- Enfin, pour complĂ©ter les possibilitĂ©s dâoutils graphiques, la bibliothĂšque Xlibe implĂ©mente les APIs de la libx11 (mais pas le protocole de communication de X) et permet de porter les applications FLTK par exemple, ainsi que celles utilisant directement la libx11. Il reste encore des problĂšmes avec les applications utilisant Tk (si vous connaissez Tk ou X, les dĂ©veloppeurs de Xlibe aimeraient bien un petit coup de main). En attendant, les applications Tk sont utilisables Ă travers un portage de undroidwish, mais ça reste peu confortable.
Du cĂŽtĂ© des compilateurs et des langages de programmation : LLVM a Ă©tĂ© mis Ă jour en version 17. GCC est disponible en version 13 et peut maintenant ĂȘtre utilisĂ© pour compiler du FORTRAN et de lâObjective-C. Les derniĂšres versions de Python sont disponibles, et en plus avec des performances amĂ©liorĂ©es. Node.JS est Ă©galement mis Ă jour, ou si vous prĂ©fĂ©rez le langage R, vous le trouverez Ă©galement, avec son IDE associĂ© rkward.
Bien sĂ»r, la plupart des bibliothĂšques et outils disponibles sur dâautres systĂšmes sont aussi disponibles : ffmpeg (en version 6), Git, libreoffice, WiresharkâŠ
Mentionnons enfin un pilote FUSE pour monter des volumes réseau NFS, qui vient compléter les deux implémentations de NFS présentes dans le noyau (une obsolÚte qui implémente NFS2, et une plus récente implémentant NFS4, mais qui est instable et pas activement maintenue actuellement).
Panneaux de préférences
Appearance
Les prĂ©fĂ©rences «âŻAppearanceâŻÂ» permettent de configurer lâapparence du systĂšme et des applications : principalement les polices de caractĂšres et les choix de couleurs.
Câest ce dernier qui reçoit une mise Ă jour en profondeur, avec lâajout dâun mode automatique. Auparavant, chaque couleur utilisĂ©e par le systĂšme devait ĂȘtre configurĂ©e manuellement, ce qui permet un contrĂŽle trĂšs fin, mais demande de passer un certain temps Ă faire des ajustements. Le mode automatique permet de configurer seulement 3 couleurs : le fond des fenĂȘtres, les barres de titres, et une couleur dâ«âŻaccentuationâŻÂ». Les autres couleurs et nuances sont calculĂ©es automatiquement Ă partir de cette palette de base.
En particulier, il devient beaucoup plus facile de choisir un fond sombre pour se retrouver avec un systÚme en mode sombre, trÚs à la mode chez certain·e·s utilisateurices de Haiku.
Il est toujours possible dâactiver le mode avancĂ© pour affiner les rĂ©glages si nĂ©cessaire (ou si vous aimez les interfaces graphiques bariolĂ©es et multicolores).
Keymap (disposition clavier)
Lâapplication Keymap permet de configurer la disposition de touches du clavier. Le point qui a reçu un peu dâattention est la gestion de la configuration des touches modificatrices.
Haiku est un dĂ©rivĂ© de BeOS qui lui-mĂȘme a Ă©tĂ© au dĂ©part inspirĂ© de Mac OS. On conserve de cet hĂ©ritage lâutilisation des touches commande et option au lieu de meta et alt sur les claviers de PC. Mais BeOS et Haiku sont conçus pour ĂȘtre utilisĂ©s avec des claviers de PC. La touche commande qui prend la place de la touche ALT est donc celle utilisĂ©e pour la plupart des raccourcis claviers. Cela se complique si on essaie dâutiliser un clavier fabriquĂ© par Apple (les codes de touches renvoyĂ©s par le clavier pour des touches situĂ©es au mĂȘme endroit ne sont pas les mĂȘmes), ou encore si on a besoin dâune touche AltGr (historiquement utilisĂ©e comme touche option par BeOS, mais aujourdâhui ce rĂŽle est plutĂŽt attribuĂ© Ă la touche windows apparue un peu plus tard). Une page sur le wiki de dĂ©veloppement de Haiku tente de rĂ©sumer lâhistorique et la situation actuelle.
La configuration des touches modificatrices est donc un sujet complexe, et il est probable que le comportement sera Ă nouveau modifiĂ© plus tard. Quoi quâil en soit, en attendant, lâapplication Keymap permet toutes les permutations possibles de configuration de ces touches.
Screen (Affichage)
Les prĂ©fĂ©rences dâaffichage, en plus de permettre de changer la rĂ©solution dâĂ©cran, affichent quelques informations essentielles sur la carte graphique et lâĂ©cran en cours dâutilisation. Pour les Ă©crans, ces informations sont gĂ©nĂ©ralement extraites des donnĂ©es EDID, mais il y a une exception : les dalles dâaffichage des PC portables nâimplĂ©mentent en gĂ©nĂ©ral pas ce protocole. Les informations sont donc rĂ©cupĂ©rĂ©es par dâautres moyens parfois moins bien normalisĂ©s. Par exemple, lâidentifiant du fabricant est un code Ă 3 lettres. En principe, les fabricants doivent sâenregistrer auprĂšs dâun organisme qui attribue ces codes, afin dâen garantir lâunicitĂ©.
Cependant, certains fabricants ne lâont pas fait, et se sont choisi eux-mĂȘmes un code qui semblait inutilisĂ©. La base de donnĂ©es officielle rĂ©serve donc ces codes et en interdit lâutilisation, afin dâĂ©viter des conflits. Il arrivait donc que le fabriquant dâun Ă©cran soit affichĂ© comme Ă©tant «âŻDO NOT USEâŻÂ», ce qui a inquiĂ©tĂ© quelques utilisateurs de Haiku se demandant sâils risquaient dâendommager leur matĂ©riel.
Ces entrĂ©es de la liste sont maintenant filtrĂ©es et remplacĂ©es par les noms des fabricants de panneaux dâaffichages concernĂ©s (lorsquâon sait de qui il sâagit).
Outils en ligne de commande
Haiku est fourni avec un terminal et un shell bash (par dĂ©faut, dâautres shells peuvent Ă©galement ĂȘtre utilisĂ©s). Les outils dĂ©finis dans la spĂ©cification POSIX sont fournis, ainsi que des complĂ©ments permettant dâutiliser les fonctionnalitĂ©s supplĂ©mentaires de Haiku.
df
La commande df
affiche lâespace disque disponible sur chaque volume de stockage actuellement montĂ©.
Les colonnes de lâaffichage ont Ă©tĂ© rĂ©organisĂ©es, pour ĂȘtre plus lisibles, et se rapprocher un peu du format spĂ©cifiĂ© par POSIX (mais pas complĂštement lorsquâon lance la commande sans options particuliĂšres : des informations supplĂ©mentaires sont alors affichĂ©es).
filteredquery
Lâoutil filteredquery
permet dâeffectuer une requĂȘte sur les attributs Ă©tendus du systĂšme de fichiers (permettant de requĂȘter le systĂšme de fichiers comme une base de donnĂ©es, plutĂŽt que de naviguer de façon hiĂ©rarchique dans les dossiers), puis de filtrer le rĂ©sultat pour ne conserver que les rĂ©ponses contenues dans un sous-dossier spĂ©cifique. En effet, les requĂȘtes Ă©tant indĂ©pendantes de lâorganisation des dossiers, il est nĂ©cessaire de faire ce filtrage par post-traitement des rĂ©sultats (ce qui reste tout de mĂȘme gĂ©nĂ©ralement plus rapide que de faire lâinverse : parcourir tous les fichiers dâun dossier pour trouver ceux correspondant Ă un critĂšre particulier).
Cet outil nâa pas reçu de nouvelles fonctionnalitĂ©s, mais de nombreuses corrections et nettoyages qui le rendent vĂ©ritablement utilisable.
ping, traceroute, telnet, ftpd
Ces commandes liĂ©es Ă des opĂ©rations sur le rĂ©seau ont Ă©tĂ© remplacĂ©es par les derniĂšres versions dĂ©veloppĂ©es par FreeBSD, permettant de bĂ©nĂ©ficier dâune version moderne, avec plus de fonctionnalitĂ©s et moins de bugs.
La commande ping6
est supprimée, car ping
peut maintenant utiliser lâIPv6 aussi bien que lâIPv4.
pkgman
Lâoutil pkgman
permet de tĂ©lĂ©charger et dâinstaller des logiciels et des mises Ă jour.
Il a peu Ă©voluĂ©, mais on peut tout de mĂȘme noter lâutilisation dâun algorithme de tri «âŻnaturelâŻÂ» pour lâaffichage des rĂ©sultats dans lâordre alphabĂ©tique (par exemple, llvm12
sera affiché aprÚs llvm9
).
Une fonction qui nâest toujours pas disponible dans pkgman
est le nettoyage des dĂ©pendances non utilisĂ©es. Un script fourni dans le dĂ©pĂŽt Git de Haiku permet de rĂ©aliser manuellement une analyse des paquets installĂ©s sur le systĂšme pour dĂ©tecter ceux qui nâont pas de dĂ©pendances, il faudra pour lâinstant se contenter de cette solution.
strace
Lâoutil strace
permet dâafficher les appels systĂšmes effectuĂ©s par une application, pour comprendre son interfaçage avec le noyau et investiguer certains problĂšmes de performances ou de mauvais comportements.
Lâinterfaçage avec le noyau pour extraire ces informations Ă©tant assez spĂ©cifique, lâimplĂ©mentation de strace est faite Ă partir de zĂ©ro, et ne partage pas de code avec la commande du mĂȘme nom disponible par exemple sous Linux.
strace
est mis Ă jour rĂ©guliĂšrement et en fonction des besoins des dĂ©veloppeurs de Haiku pour dĂ©coder et afficher de plus en plus dâinformations. Par exemple, elle peut maintenant afficher le contenu des iovec
(par exemple pour les fonctions readv
ou writev
), ainsi que les objets manipulés par wait_for_object
et event_queue
.
Un exemple de sortie de strace (traçant lâouverture dâun fichier et le chargement dâune bibliothĂšque partagĂ©e) avant ces changements:
open(0x5, "plaintext", 0x2042, 0x0) = 0x8000000f () (49 us)
map_file("libicuuc.so.66 mmap area", 0x7f04c2675228, 0x6, 0x1ababd0, 0x1, 0x0, true, 0x3, 0x0) = 0x329a0 () (108 us)
et aprĂšs :
open(0x5, "plaintext", O_RDWR|O_NOTRAVERSE|O_CLOEXEC, 0x0) = 0x8000000f Operation not allowed (57 us)
map_file("libicuuc.so.66 mmap area", [0x0], B_RANDOMIZED_ANY_ADDRESS, 0x1ababd0, B_READ_AREA, 0x0, true, 0x3, 0x0) = 0x73e8 ([0x6392223000]) (135 us)
whence
La commande whence
permettait de trouver dans le PATH un exĂ©cutable Ă partir de son nom. Elle Ă©tait implĂ©mentĂ©e sous forme dâune fonction bash dans le fichier profile par dĂ©faut. Cependant, cette implĂ©mentation posait problĂšme pour charger le fichier profile avec dâautres shells, elle a donc Ă©tĂ© supprimĂ©e. La commande which
peut ĂȘtre utilisĂ©e Ă la place, puisquâelle remplit un rĂŽle Ă©quivalent.
Serveurs
Les serveurs sont lâĂ©quivalent des daemons pour UNIX ou des services sous Windows : il sâagit dâapplications lancĂ©es par le systĂšme pour rendre diffĂ©rents services et coordonner lâensemble des applications.
app_server
app_server est le serveur graphique de Haiku, Ă©quivalent de X ou de Wayland. Il se distingue par un rendu graphique fait principalement cĂŽtĂ© serveur (pour les applications natives), ce qui permet de lâutiliser de façon fluide Ă travers une connexion rĂ©seau.
Bien que ce soit le serveur graphique, et quâil ait reçu plusieurs amĂ©liorations importantes, les diffĂ©rences sont subtiles. Elles sont toutefois importantes pour proposer un systĂšme qui semble rĂ©actif et confortable Ă utiliser.
Un premier changement est une rĂ©architecture du code qui traite le rafraĂźchissement de lâĂ©cran. Ce rafraĂźchissement se fait en gĂ©nĂ©ral en plusieurs Ă©tapes, par exemple, si on dĂ©place une fenĂȘtre :
- Le contenu de la fenĂȘtre dĂ©placĂ©e peut ĂȘtre directement recopiĂ© de lâancienne position vers la nouvelle,
- La zone oĂč se trouvait la fenĂȘtre auparavant doit ĂȘtre re-remplie avec ce qui se trouvait en dessous de la fenĂȘtre dĂ©placĂ©e. Cela peut ĂȘtre plusieurs morceaux de fenĂȘtres dâautres applications, qui vont devoir chacune rĂ©-afficher une partie de cette zone.
Le problĂšme Ă©tant que certaines applications peuvent mettre un peu de temps Ă rĂ©pondre Ă cette demande de rĂ©-affichage (par exemple parce quâelles sont occupĂ©es ailleurs, ou alors parce que la zone Ă redessiner est relativement complexe).
DiffĂ©rentes stratĂ©gies peuvent ĂȘtre mises en place dans ce cas : laisser Ă lâĂ©cran le contenu obsolĂšte, ou remplir la zone en blanc en attendant que les donnĂ©es deviennent disponibles, par exemple. Ou encore, tout simplement ne rien mettre Ă jour du tout tant que tout lâĂ©cran nâest pas prĂȘt Ă ĂȘtre affichĂ©. Il faut faire un compromis entre la rĂ©activitĂ© (dĂ©placer la fenĂȘtre tout de suite), la fluiditĂ© (Ă©viter les clignotements de zones blanches) et la prĂ©cision (affichage dâinformation cohĂ©rente et Ă jour).
Plusieurs modifications ont permis dâobtenir un meilleur compromis.
Dans un autre domaine, la police de caractĂšres par dĂ©faut «âŻNoto Sans DisplayâŻÂ» a Ă©tĂ© remplacĂ©e par «âŻNoto SansâŻÂ», ce qui donne un affichage du texte lĂ©gĂšrement diffĂ©rent. La police «âŻdisplayâŻÂ» avait Ă©tĂ© choisie suite Ă une mauvaise comprĂ©hension de la signification de ce mot en typographie : il signifie que câest une police de caractĂšres Ă utiliser pour des gros titres et autres textes courts. Il ne signifie pas que câest une police Ă utiliser sur un Ă©cran dâordinateur. De toutes façons la police Noto Display nâest plus maintenue par Google et a disparu des derniĂšres versions du jeu de polices Noto.
Toujours dans le domaine des polices de caractĂšres, app_server sait maintenant charger les fichiers «âŻvariable fontsâŻÂ». Ces fichiers contiennent plusieurs polices de caractĂšres dĂ©finies Ă partir de glyphes de base, et dâalgorithmes de transformation et de dĂ©formation (pour rendre une police plus ou moins grasse, plus ou moins italiqueâŠ). Pour lâinstant, app_server
sait charger les valeurs de ces paramĂštres qui sont prĂ©configurĂ©es dans le fichier. Cela permet de rĂ©duire la place utilisĂ©e par les polices de caractĂšres sur le media dâinstallation de Haiku (câest lâun des plus gros consommateurs dâespace disque, qui nous empĂȘche de faire tenir une version complĂšte de Haiku sur un CD de dĂ©monstration par exemple).
Plus tard, il sera Ă©galement possible de configurer plus finement ces paramĂštres pour gĂ©nĂ©rer des variantes intermĂ©diaires des polices de caractĂšres, ainsi que dâexploiter certaines polices qui offrent des paramĂštres configurables supplĂ©mentaires.
input_server
Lâinput_server se charge de lire les donnĂ©es venant des pĂ©riphĂ©riques dâentrĂ©e (clavier et souris) et de les convertir en Ă©vĂšnements distribuĂ©s aux applications. Il est extensible par des add-ons qui peuvent gĂ©nĂ©rer ou filtrer des Ă©vĂšnements, ce qui peut ĂȘtre utilisĂ© pour de lâaccessibilitĂ© (Ă©muler une souris Ă partir de touches du clavier), de lâautomatisation (envoi de commandes prĂ©-enregistrĂ©es), du confort dâutilisation (bloquer le touchpad dâun ordinateur portable lorsque le clavier est en cours dâutilisation) et bien dâautres choses.
Lâinput_server a reçu des corrections de problĂšmes sur la gestion des rĂ©glages de souris, permettant en particulier dâutiliser des rĂ©glages diffĂ©rents pour plusieurs pĂ©riphĂ©riques (souris, touchpad), et que ceux-ci soient bien enregistrĂ©s.
registrar
Le serveur registrar
suit les applications en cours de fonctionnement, et leur permet de communiquer entre elles au travers de lâenvoi de messages. Il assure Ă©galement le suivi de la base de donnĂ©es des types MIME et des associations de types de fichiers avec les applications correspondantes.
LâimplĂ©mentation de BMessageRunner
, qui permet dâenvoyer des messages pĂ©riodiques (par exemple pour faire clignoter le curseur des zones de texte Ă la bonne vitesse), autorise maintenant des intervalles de rĂ©pĂ©tition en dessous de 50 millisecondes. Cela permet dâutiliser ce systĂšme pour des animations fluides de lâinterface graphique, par exemple.
Dâautre part, la liste des applications et documents rĂ©cemment lancĂ©s est maintenant limitĂ©e Ă 100 entrĂ©es. Cela Ă©vite un fichier qui grossit indĂ©finiment et finit par contenir surtout des vieilles informations sans intĂ©rĂȘt.
Kits
Le systĂšme Haiku fournit les mĂȘmes APIs que BeOS. Elles couvrent les usages basiques dâune application, et sont dĂ©coupĂ©es (dans la documentation de BeOS et de Haiku, au moins) en «âŻkitsâŻÂ» qui prennent chacun en charge une partie spĂ©cifique (interface graphique, multimĂ©dia, jeux vidĂ©os, accĂšs au matĂ©riel, etc).
Interface
Lâinterface kit est la partie de la bibliothĂšque standard qui se charge des interfaces graphiques.
BColumnListView
BColumnListView est un ajout de Haiku par rapport Ă BeOS. Il sâagit dâun Ă©lĂ©ment dâinterface permettant de prĂ©senter une liste avec plusieurs colonnes, de trier les lignes selon le contenu de ces colonnes, et aussi dâavoir des items hiĂ©rarchisĂ©s avec la possibilitĂ© de plier et dĂ©plier une partie de lâarborescence.
Cette classe remplace avantageusement BListView et surtout BColumnListView, les classes historiques de BeOS, qui sont beaucoup plus limitées.
Un certain nombre de type de colonnes prĂ©dĂ©finis sont Ă©galement disponibles, ce qui facilite la construction dâinterfaces prĂ©sentant les donnĂ©es de diffĂ©rentes applications avec le mĂȘme formatage.
La classe BColumnListView elle-mĂȘme nâa pas changĂ©. Par contre, les colonnes de type «âŻtailleâŻÂ» (pour afficher une taille en Kio, Mio, GioâŠ) et «âŻdateâŻÂ» utilisent la langue choisie dans les prĂ©fĂ©rences systĂšme au lieu dâun format anglais par dĂ©faut.
BTextView
BTextView est une classe permettant dâafficher une zone de texte Ă©ditable. Elle implĂ©mente les fonctionnalitĂ©s de base (curseur, sĂ©lection, retour Ă la ligne automatique) ainsi que quelques possibilitĂ©s de mise en forme (couleurs, polices de caractĂšres).
BTextView peut Ă©galement ĂȘtre utilisĂ©e pour des zones de textes non Ă©ditables, souvent plus courtes. Cela permet de rĂ©utiliser une partie des algorithmes de mise en page et de formatage du texte dans diffĂ©rents contextes. Dans le cadre de lâutilisation du «âŻlayout systemâŻÂ», une vue doit pouvoir indiquer sa taille minimale, maximale et optimale. Le «âŻlayout systemâŻÂ» va ensuite calculer la meilleure disposition de fenĂȘtre possible pour satisfaire ces contraintes.
Le cas des zones de texte est particulier, car la hauteur optimale dĂ©pend du nombre de lignes de texte, qui lui-mĂȘme peut ĂȘtre plus ou moins grand si la largeur de la vue oblige Ă ajouter des retours Ă la ligne. Le «âŻlayout kitâŻÂ» prend en compte ce cas particulier, mais les algorithmes ne sont pas encore tout Ă fait au point et peuvent conduire Ă des rĂ©sultats inattendus dans certains cas. Un de ces cas particuliers sur les zones de texte non Ă©ditables a Ă©tĂ© corrigĂ©.
BMenu
La classe BMenu permet dâafficher un menu. Elle est utilisĂ©e de plusieurs façons, puisquâon trouve des menus dans des barres de menu, dans des contrĂŽles de type «âŻpopupâŻÂ», ou encore en faisant un clic droit sur certains Ă©lĂ©ments de lâinterface.
Les menus sont Ă©galement particuliers parce quâils peuvent dâĂ©tendre en dehors de la fenĂȘtre dont ils sont originaires. Ils sont donc implĂ©mentĂ©s sous forme de fenĂȘtres indĂ©pendantes. Mais cela pose un autre problĂšme : dans Haiku, chaque fenĂȘtre exĂ©cute son propre thread et sa propre boucle dâĂ©vĂšnements. Si on navigue dans un grand nombre de menus et de sous-menus, cela peut causer quelques problĂšmes de synchronisation et de performances.
Le code contient Ă©galement un grand nombre de cas particuliers pour, par exemple, aligner les raccourcis claviers et les flĂšches indiquant la prĂ©sence de sous-menus ente les diffĂ©rents items dâun menu, ou encore dĂ©tecter si un dĂ©placement de souris a pour but de sĂ©lectionner un autre menu (en dessous ou au-dessus de celui actif), ou bien plutĂŽt de naviguer vers un sous-menu.
Les nouveautés suivantes sont apparues cette année:
- Correction de problĂšmes de race condition lors de lâajout dâitems dans un menu pendant quâil est affichĂ© Ă lâĂ©cran. Ce problĂšme se manifestait par exemple dans les menus affichant la liste des rĂ©seaux Wifi, qui sont mis Ă jour en temps rĂ©el.
- Finalisation de lâimplĂ©mentation de la navigation au clavier (avec les flĂšches directionnelles) dans les menus.
- Affichage des symboles graphiques UNICODE pour «âŻbackspaceâŻÂ» (â«) et «âŻdeleteâŻÂ» (âŠ) si ces touches sont utilisĂ©es comme raccourcis clavier pour un item de menu.
- Utilisation dâun algorithme de tri stable pour la fonction
SortItems
. Ce type dâalgorithme prĂ©serve lâordre relatif des items qui sont Ă©gaux dâaprĂšs la fonction de comparaison. Ce nâest pas le cas de certains algorithmes de tri classiques, notamment le quicksort. La consĂ©quence Ă©tait que trier un menu dĂ©jĂ triĂ© pouvait changer l'ordre des items. CâĂ©tait visible encore une fois sur le menu listant les rĂ©seaux Wifi, qui est triĂ© par puissance du signal reçu.
BSpinner
BSpinner est un contrĂŽle permettant de choisir une valeur numĂ©rique, soit Ă lâaide de boutons +/- pour modifier la valeur par incrĂ©ments, soit en entrant directement la valeur dans une zone de texte.
Il sâagit dâune extension de Haiku par rapport Ă BeOS qui ne proposait pas cette fonctionnalitĂ©.
Cette classe est encore en cours de développement. Elle a reçu des améliorations pour désactiver correctement les boutons +/- lorsque la valeur atteint le minimum ou le maximum autorisé, et aussi une correction sur le message de notification envoyé lors des changements de valeurs du spinner, qui ne contenaient pas la bonne valeur.
rgb_color
La structure rgb_color permet de reprĂ©senter une couleur par la valeur de ses composantes rouge, vert, bleu (comme son nom lâindique) et alpha (comme son nom ne lâindique pas). Elle fournit Ă©galement un certain nombre de fonctions pour mĂ©langer des couleurs, les Ă©claircir ou les assombrir.
La méthode Brightness() dans la classe rgb_color
implĂ©mentante maintenant lâalgorithme perceptual brightness documentĂ© par Darel Rex Finley, qui donne des meilleurs rĂ©sultats que lâalgorithme utilisĂ© prĂ©cĂ©demment (qui Ă©tait celui de la luminositĂ© dans lâespace de couleurs Y'IQ. La fonction perceptual_brightness
devenue redondante est supprimée.
Cette mĂ©thode permet en particulier de dĂ©terminer si une couleur est «âŻsombreâŻÂ» ou «âŻclaireâŻÂ», et ainsi de dĂ©cider si du texte affichĂ© par-dessus doit ĂȘtre blanc ou noir (comme dĂ©montrĂ© ici par exemple).
Locale
Le locale kit se charge de tous les aspects liĂ©s Ă la localisation : traductions des applications, formatage des messages en utilisant les rĂšgles de pluralisation de chaque langue, formatage de dates, de nombres avec et sans unitĂ©s, de pourcentages, nom des fuseaux horairesâŠ
Il utilise ICU pour implĂ©menter la plupart de ces fonctionnalitĂ©s, mais fournit une surcouche avec une API sâintĂ©grant mieux avec les autres kits.
La principale Ă©volution cette annĂ©e est lâimplĂ©mentation de BNumberFormat
, qui permet de formater des nombres. Elle permet de choisir une prĂ©cision (nombre de dĂ©cimales - pour les langues qui utilisent un systĂšme dĂ©cimal), dâafficher ou non des sĂ©parateurs de groupes (de milliers en français, mais par exemple en Inde la sĂ©paration se fait traditionnellement par multiples de 10âŻ000).
Media
Le media kit se charge de tous les aspects multimedia.
Il se compose de deux parties. Dâune part, un systĂšme de gestion de flux mĂ©dia temps rĂ©el, permettant de transfĂ©rer des donnĂ©es multimĂ©dia (son ou flux vidĂ©o par exemple) entre diffĂ©rentes applications qui vont les manipuler, le tout avec un certain contrĂŽle du temps de traitement ajoutĂ© par chaque opĂ©ration, pour tenter de minimiser la latence tout en Ă©vitant les vidages de tampons qui produiraient une interruption dans le flux. Dâautre part, des classes permettant dâencoder et de dĂ©coder des fichiers mĂ©dia et dâen extraire des flux de donnĂ©es (encodĂ©es ou dĂ©codĂ©es).
Câest surtout cette deuxiĂšme partie qui a reçu quelques Ă©volutions. La version de ffmpeg utilisĂ©e pour le dĂ©codage de presque tous les formats audio et video est maintenant la derniĂšre version ffmpeg 6. Quelques autres problĂšmes (erreurs dâarrondis, gestion des tampons partiels en fin de fichier) ont Ă©galement Ă©tĂ© corrigĂ©s, ce qui permet de faire fonctionner Ă nouveau le jeu BePac Deluxe qui est extrĂȘmement intolĂ©rant au moindre Ă©cart de comportement par rapport Ă lâimplĂ©mentation du Media Kit dans BeOS.
Support
Le support kit contient un ensemble de classes basiques mais indispensables : gestion des chaßnes de caractÚres, des tampons en mémoire, etc. Il fournit les briques de bases utilisées par les autres kits.
BDataIO
BDataIO est une classe abstraite avec des fonctions de lecture et dâĂ©criture. Plusieurs autres classes sont des instances de BDataIO, par exemple BFile (reprĂ©sentant un fichier), mais aussi BMemoryIO (permettant dâaccĂ©der Ă une zone mĂ©moire).
Plusieurs autres classes acceptent BDataIO (ou sa sous-classe BPositionIO, qui ajoute la possibilitĂ© de se dĂ©placer Ă une position donnĂ©e dans le flux) comme entrĂ©e ou comme sortie. Il est donc facilement possible de rĂ©aliser les mĂȘmes opĂ©rations sur un fichier, une zone de donnĂ©es en mĂ©moire, un socket rĂ©seau, ou tout autre objet susceptible de fournir une interface similaire.
BDataIO elle-mĂȘme nâa pas Ă©voluĂ©, mais deux de ses implĂ©mentations, BBufferedDataIO et BAdapterIO, ont Ă©tĂ© amĂ©liorĂ©es. Ces deux classes permettent de construire un objet BDataIO Ă partir dâun autre, en ajoutant un cache en mĂ©moire pour accĂ©lĂ©rer les opĂ©rations ou encore pour rendre compatible avec BPositionIO un objet qui ne lâest pas.
Ces classes sont en particulier utilisĂ©es par lâapplication StreamRadio, qui implĂ©mente la lecture de podcasts en connectant directement le rĂ©sultat dâune requĂȘte HTTP (effectuĂ©e grace au network kit) dans un dĂ©codeur audio (via la classe BMediaFile du media kit). La mise en tampon permet de revenir en arriĂšre dans la lecture dâun Ă©pisode, de tĂ©lĂ©charger en avance les donnĂ©es qui vont ĂȘtre lues, et dâĂ©viter de conserver inutilement en mĂ©moire les donnĂ©es qui sont dĂ©jĂ lues par lâapplication.
BibliothĂšques C
Les «âŻkitsâŻÂ» mentionnĂ©s ci-dessus sont lâAPI en C++ utilisĂ©e par les applications Haiku.
Il existe aussi des APIs en C, en grande partie implémentant la bibliothÚque C standard et les fonctions décrites dans la spécification POSIX.
Libroot
Libroot implĂ©mente la bibliothĂšque standard C. Elle regroupe entre autres la libc, la libm, et la libpthread, qui sont parfois implĂ©mentĂ©es comme 3 bibliothĂšques diffĂ©rentes pour dâautres systĂšmes. Les Ă©volutions consistent Ă complĂ©ter lâimplĂ©mentation de la spĂ©cification POSIX, et Ă suivre les Ă©volutions de cette derniĂšre ainsi que des nouvelles versions du langage C. On trouve Ă©galement des corrections de bugs dĂ©couverts en essayant de faire fonctionner de plus en plus dâapplications sur Haiku, ce qui permet de mettre en Ă©vidence des diffĂ©rences de comportement avec dâautres systĂšmes.
- Ajout de
getentropy
pour initialiser les générateurs de nombres aléatoires
- Correction de problĂšmes de locks au niveau de lâallocateur mĂ©moire lors dâun fork
- Plusieurs corrections sur lâimplĂ©mentation de
locale_t
, remplacement de code écrit pour Haiku ou provenant de FreeBSD par une implémentation simplifiée mais suffisante, provenant de la bibliothÚque C musl.
- Ajout de
static_assert
en C11
- Correction dâun crash lors de lâutilisation de certaines fonctions XSI
- Ajout de
stpncpy
- La fonction
open
utilisée sur un lien symbolique pointant vers un fichier non existant peut maintenant créer le fichier cible.
- Il est possible dâutiliser
mmap
sur un fichier plus grand que la mémoire disponible sans avoir besoin de spécifier le flag MAP_NORESERVE
- Utiliser
rename
pour renommer un fichier vers lui-mĂȘme ne retourne plus dâerreur (conformĂ©ment Ă la spĂ©cification POSIX).
- Ajout de
pthread_sigqueue
Libnetwork
La libnetwork implĂ©mente les APIs nĂ©cessaire pour se connecter au rĂ©seau (sockets, rĂ©solution DNSâŠ). Elle est sĂ©parĂ©e de la bibliothĂšque C pour des raisons historiques : lâimplĂ©mentation de TCP/IP pour BeOS avait Ă©tĂ© rĂ©alisĂ©e entiĂšrement en espace utilisateur (le noyau nâoffrant quâune interface pour envoyer et recevoir des paquets ethernet sur la carte rĂ©seau). Cela a posĂ© des problĂšmes de compatibilitĂ© avec dâautres systĂšmes, et des problĂšmes de performance. Haiku est donc compatible avec la version "BONE" de BeOS, qui implĂ©mente la pile rĂ©seau dans le noyau.
- Mise Ă jour du rĂ©solveur DNS Ă partir du code de NetBSD 9.3. PrĂ©cĂ©dement le code utilisĂ© Ă©tait celui du projet netresolv de NetBSD, mais ce projet nâa pas connu de nouvelles publications et le code est Ă nouveau maintenu directement dans NetBSD sans publication sĂ©parĂ©e.
- Correction dâun crash lors de lâutilisation de multicast IPv4
LibBSD
La libbsd implĂ©mente plusieurs extensions fournies par la libc de certains systĂšmes BSD. Elle est sĂ©parĂ©e de la bibliothĂšque C principale pour limiter les problĂšmes de compatibilitĂ©: certaines applications prĂ©fĂšrent fournir leur propre version de ces fonctions, ou dâautres fonctions avec le mĂȘme nom mais un comportement diffĂ©rent. Elles peuvent alors sâisoler en nâutilisant pas la libbsd pour Ă©viter toute interfĂ©rence.
LibGNU
De façon similaire Ă la libbsd, la libgnu fournit des fonctions qui sont disponibles dans la glibc (la bibliothĂšque C du projet GNU) mais ne font pas partie dâun standard (C ou POSIX).
- Ajout de
sched_getcpu
pour savoir sur quel cĆur de CPU le thread appelant est en train de sâexĂ©cuter.
- Ajout de
pthread_timedjoin_np
, pour attendre la fin de lâexĂ©cution dâun thread (comme pthread_join
mais avec un timeout.