↩ Accueil

Vue lecture

Nouvelles de Haiku - Hiver 2025-26

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.

Il ne s’agit pas d’une distribution Linux, mais d’un système complet avec son propre noyau, sa propre pile graphique, etc. L’idée de cette approche est d’avoir une seule équipe travaillant sur toute la pile logicielle, pour éviter les soucis de coordination entre projets indépendant et d’excès de modularité, qui peuvent aboutir à une architecture logicielle inefficace. En revanche, cela demande un gros travail pour une équipe relativement réduite, et le système est donc en développement depuis bientôt un quart de siècle sans avoir encore publié une version majeure complète.

La cinquième version beta a été publiée en 2024. Les développements continuent pour stabiliser, optimiser et peaufiner le système, avec une version beta 6 prévue en début de cette année, qui sera probablement suivie par une beta 7 quelque temps plus tard.

Cette série de dépêches est basée sur les rapports d’activité publiés mensuellement par le projet Haiku. Cette édition couvre les modifications de Haiku numérotées entre hrev59111 et hrev59355 (soit 244 changements individuels), en plus d’activités se déroulant hors du dépôt Git principal.

Entre parenthèses est indiqué le pseudonyme de l’auteur ou autrice principal·e du changement. Des pseudonymes sont utilisés par habitude (venant des canaux IRC et/ou de la culture de la demoscene) et aussi pour préserver l’identité des personnes qui le souhaitent (certains participants utilisent également leur nom légal, d’autres pas).

Sommaire

Mise à jour de Go en version 1.18

Le mois de novembre a vu l’arrivée d’une grosse mise à jour de la chaîne d’outils pour le langage Go en version 1.18. Il s’agit d’une version de 2022, mais c’est un gros progrès puisque la version précédente disponible pour Haiku était la version 1.4 datant de 2014. De plus, cette version 1.18 est disponible dans le dépôt de paquets et peut être installée normalement avec pkgman (au moins pour les architectures x86 et x86_64).

La plus grande partie du travail a été réalisée par Korli, depuis plusieurs années, pour mettre en place l’environnement de compilation nécessaire, et aussi corriger de nombreux problèmes de compatibilité POSIX dans Haiku qui ont été mis en évidence par les tests de Go.

Cela permet par exemple d’utiliser Hugo, le générateur de site statique utilisé pour le site principal de Haiku. Waddlesplash a donc pu rédiger et vérifier le rapport d’activité de novembre en utilisant uniquement Haiku : avec Hugo, WebPositive (le navigateur natif de Haiku, basé sur WebKit), l’éditeur de texte Koder, ainsi que Iceweasel (un portage de Firefox) pour la correction d’orthographe.

Redémarrage automatique de app_server

app_server est le serveur graphique de Haiku. Il s’agit d’un composant critique, pour lequel un crash rend le système à peu près inutilisable. Waddlesplash a corrigé plusieurs problèmes dans le code pour permettre de redémarrer le serveur après un crash, et de le reconnecter avec les applications en cours d’exécution. Ce redémarrage nécessite encore quelques étapes manuelles car les crash démarrent actuellement le debugger automatiquement, mais cela peut être changé par une simple configuration.

Applications

ActivityMonitor

ActivityMonitor affiche sous forme graphique divers paramètres du système: charge CPU, consommation mémoire… Il peut s’exécuter dans une fenêtre ou bien être intégré au bureau sous forme d’un « réplicant ».

Affichage d’un message « pas de capteurs de température » à la place du graphe de température du système si l’information n’est pas disponible (OscarL).

Correction d’un problème de localisation, certains fichiers sources n’étaient pas pris en compte et les chaînes contenues dedans ne pouvaient pas être traduites (humdinger).

Terminal

Le Terminal permet d’exécuter des applications en ligne de commande.

Synchronisation du presse-papier interne du Terminal avec celui du système seulement une fois au démarrage de l’application, et pas lors du changement d’onglet comme cela avait été implémenté au trimestre précédent (OscarL).

Correction d’un problème qui masquait le signal SIGUSR1 pour les shells et autres processus lancés dans le terminal (korli).

Implémentation des séquences d’échappement permettant aux applications CLI de définir des liens hypertextes (en complément des liens qui étaient déjà détectés automatiquement par le terminal en fonction du contenu du texte) (korli).

HaikuDepot

HaikuDepot est l’interface graphique du gestionnaire de paquets. Il utilise un backend en ligne en Java pour stocker et récupérer les captures d’écrans, commentaires et notes d’utilisateurs, icônes des paquets, liste de paquets mis en avant, et d’autres informations.

L’application est plus robuste en cas de problème de réseau : gestion des erreurs et affichage de messages clairs pour l’utilisateur. Gestion en particulier des erreurs 503 remontées par l’API web utilisée par HaikuDepot (apl).

Ajout de filtres pour trouver facilement les applications « natives » (n’utilisant pas Qt ou GTK) et d’un filtre « desktop » pour trouver les applications graphiques (et filtrer un très grand nombre de paquets de bibliothèques, applications en ligne de commande…) (apl, avec des améliorations par humdinger pour clarifier la terminologie).

Amélioration de la taille de la fenêtre des conditions d’utilisation sur les écrans haute densité (nipos).

Refonte de la gestion des identifiants de messages internes à l’application HaikuDepot pour en simplifier la maintenance (apl).

Interdiction de la sélection multiple dans la liste des paquets (apl).

WebPositive

WebPositive est le navigateur web fourni avec Haiku. Il est basé sur le moteur WebKit, co-développé avec Apple, Sony, Igalia et d’autres participants.

Modification du message envoyé au Tracker pour ouvrir le dossier contenant un fichier (par exemple un téléchargement), pour utiliser le message officiellement prévu à cet effet plutôt qu’un moyen détourné (humdinger).

Meilleure gestion des noms de fichiers longs dans la fenêtre de téléchargements avec l’ajout d’une barre de défilement horizontal (mull, avec un petit correctif par humdinger pour corriger un décalage d’un pixel du positionnement de la barre de défilement).

Un chantier est en cours pour réintégrer à nouveau le portage de WebKit pour Haiku dans les sources upstream. Cela avait déjà été fait en 2010, mais n’avait pas été maintenu par la suite, ce qui a conduit à retirer ce code. Depuis, Haiku utilise un fork resynchronisé régulièrement, mais cela génère du travail en plus. L’envoi du code est aussi l’occasion de faire relire toutes les modifications par les autres développeurs de WebKit, avec des conseils pour améliorer et simplifier l’architecture.

Expander

Expander est une application permettant de décompresser des archives.

Correction d’un décalage d’un pixel de la barre de défilement (humdinger).

AboutSystem

AboutSystem affiche quelques informations sur le système et surtout la liste des auteurs de Haiku.

Simplification du code pour la mise à jour automatique des couleurs, mise en place de la mise à jour automatique des couleurs pour la liste des crédits (si on passe en mode sombre par exemple) (jscipione).

Ouverture de la fenêtre avec une taille respectant les proportions du nombre d’or, esthétiquement plus plaisant (axeld).

LaunchBox

LaunchBox est un « dock » permettant de stocker des raccourcis vers des applications ou fichiers fréquemment utilisés.

Correction de la couleur du panneau de LaunchBox, et d’autres couleurs dans le sélectionneur de couleurs standard (nephele).

Tracker

Tracker est l’explorateur de fichiers. Le code du Tracker contient également les fenêtres « ouvrir » et « enregistrer sous », mises à disposition des autres applications sous forme de la bibliothèque libtracker.so.

Envoi de la notification d’activation de l’espace de travail à tous les réplicants, afin que ces derniers puissent ajuster leur couleur (par exemple) en fonction de l’espace de travail actif (jscipione).

Correction du positionnement du champ de texte lors du renommage de fichiers dans la vue par icônes, résolution de problèmes de gestion de l’état des fenêtres après un glisser-déposer avorté, affichage des volumes disque en premier (avant les dossiers) si l’option « trier les dossiers en premier » est active, synchronisation en direct des fenêtres de sélection de fichiers lors du changement d’options, et divers nettoyages de code (jscipione).

Ajout d’une bordure manquante dans les fenêtres de sélection de fichiers (nipos).

Ajout du nombre d’élément sélectionnés (en plus du nombre d’éléments total du dossier) dans les fenêtres du Tracker (nathan242).

Correction d’un problème de concurrence dans le constructeur des fenêtres de sélection de fichiers, dont la conséquence était une mauvaise disposition des contrôles dans la fenêtre (certains boutons apparaissant superposés par exemple (PulkoMandy).

Amélioration de l’image d’aperçu qui suit la souris lors d’un glisser-déplacer lorsqu’on déplace beaucoup de fichiers: l’image est tronquée pour ne pas être trop grande mais le dégradé de transparence sur les bords n’était pas bien calculé (PulkoMandy).

Déclenchement automatique du « renifleur » de type MIME, qui identifie automatiquement les fichiers pour les afficher avec la bonne icône par exemple. En particulier cela rend l’utilisation du Tracker plus confortable sur les systèmes de fichiers ne permettant pas de stocker le type MIME dans un attribut étendu (Jim906).

Correction d’une régression sur la mise à jour en direct des tailles et dates de modification de fichiers dans les résultats de requêtes (waddlesplash).

MediaPlayer

MediaPlayer est une application pour lire des fichiers média (son et vidéo).

Correction de la couleur du texte dans la fenêtre d’informations (nephele).

Dans cette même fenêtre, le champ indiquant le chemin du fichier en cours de lecture est maintenant cliquable (nathan242, dont c’est la première contribution).

Ajout d’une détection automatique du type MIME des fichiers, s’il n’est pas renseigné (par exemple s’il est stocké sur un système de fichiers où il n’y a pas d’attributs étendus) (DigitalBox98).

Sudoku

Sudoku est un jeu de Sudoku, très utile pour patienter pendant une compilation un peu longue.

Amélioration de la palette de couleurs en mode clair (le mode sombre nécessite encore du travail) (axeld).

DeskBar

DeskBar est la barre des tâches de BeOS et de Haiku. La même application contient également le code pour la fenêtre de changement de tâches « Twitcher ».

Correction d’un bug qui faisait apparaître des applications en double dans le « Twitcher » (la fenêtre de changement rapide d’application qui apparaît avec le raccourci Alt+Tab) (madmax).

People

People est un gestionnaire de contacts. Il stocke les contacts dans des fichiers « person » avec les informations sous forme d’attributs étendus.

Correction du défilement avec la molette de la souris ou au touchpad (nipos).

Lecteur MIDI

Le lecteur MIDI permet d’écouter des fichiers au format MIDI.

MidiPlayer

Le lecteur MIDI permet d’écouter des fichiers au format MIDI.

Changement de la couleur du contrôle de volume qui était codée en dur, non configurable et pas harmonisée avec le reste du système (nipos).

ProcessController

ProcessController affiche la charge CPU et l’occupation mémoire dans la DeskBar. Il permet également d’afficher des statistiques par application, et de débugger et stopper des applications via un menu popup.

Ajustements pour les écrans haute densité : taille des menus, largeur par défaut de l’icône réplicant, autorisation du redimensionnement de la fenêtre principale (la taille est conservée si on installe ensuite un réplicant sur le bureau, et divers autres changements (waddlesplash).

Installer

Installer permet de cloner l’installation de Haiku actuelle vers un autre disque.

Ajout d’un outil pour copier automatiquement le chargeur de démarrage sur la partition EFI du système, pour réduire le nombre d’étapes manuelles pour installer Haiku correctement sur un système EFI (PawanYr, avec des améliorations de kallisti5 pour nommer le fichier installé correctement en fonction de l’architecture CPU du système).

Amélioration du calcul de la taille de la fenêtre « EULA » de l’installeur (qui affiche non pas un contrat de license, mais un message de bienvenue et quelques instructions pour l’installation), en fonction de la taille de texte sélectionnée dans les préférences (nipos).

Mail

L'application Mail permet de lire et de rédiger des e-mail. Elle fonctionne en collaboration avec le mail_server qui s’occupe de l’envoi et de la réception des messages.

Correction d’une régression sur la couleur de fond des champs d’adresse. Mise en place des mises à jour de couleurs automatiques. Les champs désactivés ou en lecture seule sont maintenant « navigables » (avec la touche tab) et le texte peut être sélectionné et copié (jscipione).

Les boutons « suivant » et « précédent » peuvent être accompagnés de la touche Maj. (Shift), pour changer de message sans modifier le statut « lu » des messages (humdinger).

DriveSetup

DriveSetup permet de configurer les supports de stockage: formatage, partitionnement.

L’application s’affiche sur tous les espaces de travail si la DeskBar n’est pas lancée. Ce cas particulier est utile lors du lancement de l’installation de Haiku, dans ce cas, le bureau n’est pas lancé, mais il est tout de même possible d’utiliser plusieurs espaces de travail, ce qui peut donner l’impression que les fenêtres ont disparu si on se retrouve sur un espace vide (PulkoMandy).

Finalisation d’un patch datant d’il y a plusieurs années pour ajouter un menu permettant d’écrire ou de lire des images disques depuis ou vers des partitions (plus besoin d’utiliser dd en ligne de commande) (sed4096, avec l’aide d’humdinger pour des améliorations de localisation et de choix de vocabulaire).

Debugger

Debugger permet de débugger les logiciels fonctionnant dans Haiku.

Correction d’un crash lorsqu’on essaie de débugger des applications trop grosses, par exemples celle utilisant Mesa et llvmpipe pour faire du rendu 3D (waddlesplash).

Changements transverses

Modification de toutes les chaînes de caractères où le nom d’une application est présent (par exemple : « Deskbar preferences »). En effet, le nom des applications peut optionnellement être traduit, et toutes ces chaînes doivent donc s’adapter dans les deux cas (nom d’application traduit ou conservé en anglais selon les préférences de l’utilisateur). Auparavant ce réglage ne pouvait pas être appliqué de façon systématique (humdinger).

Fenêtres de préférences

Réseau

Affichage de l’état précis des interfaces réseau (en cours de configuration DHCP, par exemple) et pas seulement « hors ligne » ou « en ligne » (nipos).

Périphériques d’entrée

Ajout et amélioration de plusieurs options pour la gestion des touchpad (samuelrp84). Voir plus bas les informations sur la réécriture du pilote Elantech qui donne plus de détails.

Apparence

Envoi d’un seul message de mise à jour aux applications lorsque plusieurs couleurs changent simultanément, ce qui est plus efficace et réduit les « clignotements » d’applications dans certains cas (nephele).

Correction de la hauteur des fausses barres de défilement visibles dans la fenêtre d’apparence pour configurer les barres de défilement (jscipione).

Outils en ligne de commande

Le réplicant NetworkStatus peut être installé dans la DeskBar via la ligne de commande même lorsque une fenêtre de NetworkStatus est déjà ouverte (nipos).

Ajout dans strace de l’affichage des structures stat, sockopt, sigset_t, sigprocmask et des noms de signaux (korli avec un correctif par nathan242).

Correction de plusieurs problèmes dans l’interface en ligne de commande du Debugger, qui conduisaient entre autres à un gel de l’application. Cette interface est surtout utilisée en cas de crash d’un service critique (app_server, registrar, input_server) qui empêcherait l’utilisation de l’interface graphique. Les investigations sur ces services en cas de crash sont donc facilitées.

Modification de bfs_tools pour rendre ces outils compilables sur le système hôte utilisé pour compiler Haiku (axeld). Ces outils permettent de manipuler à la main un système de fichiers bfs, de récupérer certaines données sur un disque corrompu, et diverses manipulations de bas niveau.

Modification de l’outil makebootable pour vérifier que la partition à rendre bootable est bien une partition BFS. Utiliser l’outil sur une partition d’un autre format ou sur un disque complet pourrait corrompre le système de fichier et rendre les données inaccessibles. Ajout d’un message indiquant lorsque le lancement de makebootable n’est pas nécessaire, car les utilisateurs continuent de recommander de lancer cet outil sans aucune raison pour corriger des problèmes de démarrage (encourageant ainsi les nouveaux utilisateurs à faire dea mauvaises manipulations et à corrompre leur système de fichiers) (PulkoMandy).

Suppression d’une verrue dans checkfs qui n’est plus nécessaire suite à des améliorations du Storage Kit. Cela permet de lancer checkfs pour vérifier une partition en donnant le chemin de n’importe quel fichier contenu dans la partition (waddlesplash).

Activation du support de l’IPv6 dans telnet, implémentation dans netstat (avec des corrections sur les opérateurs de filtrage), et ajout de traceroute6 compilé à partir des sources fournies par NetBSD (cmeerw).

Amélioration de l’affichage de df avec plus d’informations, un listage sur deux lignes, et l’ajout d’une option pour afficher les informations standardisées dans le format imposé par POSIX (nipos et PulkoMandy).

Kits

Interface

L'interface kit se charge de tout l’affichage de fenêtres à l’écran et des contrôles de base (boutons, cases à cocher…)

Correction d’un bug dans le contrôle calendrier lors du déplacement vers les mois suivant ou précédent (nipos).

Correction d’un problème de navigation au clavier dans une ListView après l’insertion de nouveaux objets (nipos).

BControl (la classe parente de tous les contrôles d’interface graphique) ne change plus ses couleurs dans la fonction AttachedToWindow(). Ce n’est plus nécessaire après d’autres changements dans BButton, et cela simplifie le code nécessaire pour personnaliser la couleur d’un contrôle spécifique (pour avoir, par exemple, un bouton rouge) (jscipione).

Améliorations sur BSlider: correction de la couleur du texte, nettoyage du code de dessin des sliders dans les implémentations de ControlLook (jscipione).

Augmentation de la taille des marques sur les boutons des barres de défilement (marques qui ne sont pas activées à moins de modifier manuellement un fichier de configuration) pour les rendre plus visibles sur les hautes résolutions (jscipione).

Les infobulles utilisent un espacement calculé en fonction de la taille du texte, pour une apparence plus jolie sur les écrans à haute densité (waddlesplash).

Séparation du titre des onglets et du nom des vues qui leurs sont attachées. Le comportement original est hérité de BeOS, il est donc préservé pour les anciennes applications. Mais pour les nouvelles applications, le nom interne des vues ne doit pas être traduit (il peut être utilisé par des scripts ou par le code de l’application), tandis que le titre affiché à l’utilisateur doit l’être. C’était le seul endroit où ce principe de séparation du nom et du texte affiché n’était pas respecté (KapiX et PulkoMandy).

Dans BTextView, la fonction « tout sélectionner » déplace le curseur à la fin de la sélection (et à la fin du texte). C’est le comportement de la plupart des autres systèmes, et préserver la position du curseur dans ce cas ne semble pas particulièrement utile (OscarL).

Correction de problèmes de choix de couleurs dans le code qui dessine des sliders avec un curseur triangulaire (nipos). Cette correction a permis d’utiliser ce type de slider dans les fenêtres de réglages de différents traducteurs d’images.

Amélioration de l’apparence des cases à cocher partiellement cochées. Elles s’affichent avec un signe "-" au lieu d’une croix. Auparavant, la couleur était subtilement modifiée mais ce n’était pas très visible (PulkoMandy).

Implémentation de la lecture d’un son dans BAlert, qui peut être activé dans les préférences de son (sed4096).

Storage

Le storage kit permet de contrôler les disques et supports de stockage (liste des partitions, montage et démontage, accès aux fichiers, chemins d’accès, requêtes…)

BPartition retourne une erreur B_BUSY si on essaie de monter une partition qui est déjà montée à un autre endroit, au lieu de la monter une deuxième fois (jscipione).

Device

Le device kit permet l’interaction directe avec certains périphériques (USB, série, joysticks…) directement depuis l’espace utilisateur.

Correction de problèmes de gestion de la mémoire dans BUSBInterface mis en évidence par AtomoZero lors d’expérimentations pour corriger le pilote de webcam à l’aide d’un LLM (waddlesplash).

Package

Le package kit se charge de la résolution des dépendances entre paquets et du téléchargement des paquets à installer. Il fonctionne en collaboration avec le système de fichier packagefs qui permet d’accéder au contenu des paquets une fois installés.

Retravail de BRepositoryCache pour remonter les informations sur les paquets via un callback plutôt que de remplir une structure BPackageInfoSet. Cela économise beaucoup de mémoire et d’allocations mémoire, et rend donc la lecture des dépôts de paquets plus rapide (waddlesplash).

Serveurs

Notifications

Le serveur de notifications permet d’afficher des notifications pour les évènements importants.

Les notifications déjà affichées changent de position immédiatement lorsque la configuration est modifiée pour les déplacer (nipos).

Ajout de la lecture de l’effet sonore choisi dans les préférences de son lors de l’apparition des différents types de notification, et à chaque pourcent de progression pour les notifications contenant une barre de progression (sed4096).

Choix de couleurs plus visibles en mode sombre pour les icônes de fermeture et de repli des notifications en mode sombre (nipos).

Network

Le serveur de réseau se charge de la configuration des interfaces réseau, de la configuration des routes et d’autres aspects liés à la communication en réseau.

Refonte du client DHCP dans net_server pour l’exécuter dans un thread séparé et ne pas bloquer la boucle de messages principale. Cela corrige plusieurs cas de gel du serveur lui-même et d’application qui communiquent avec de façon synchrone, par exemple les préférences de réseau. Cela permet également de plus facilement arrêter les requêtes DHCP lorsqu’une interface est reconfigurée avec une adresse statique (waddlesplash).

app_server

app_server est le serveur graphique gérant l’affichage à l’écran.

Correction de crashs causés par des verrous de concurrence manquants et des opérations effectuées dans le mauvais ordre (waddlesplash).

Retrait d’identifiants de messages qui n’étaient plus utilisés dans le protocole de communication entre les applications et le serveur graphique (X512).

Ajout du code nécessaire pour le tracé de lignes avec un dégradé de couleur (dans app_server et dans BView). Auparavant, les dégradés étaient utilisables uniquement pour le remplissage des formes et pas pour les contours (x512).

Modifications de BPicturePlayer pour utiliser une classe C++ avec de l’héritage plutôt qu’une structure C contenant des pointeurs de fonctions. Cela permet de vérifier que l’interface est implémentée correctement par les différents utilisateurs de cette classe dès la compilation (X512).

Implémentation de méthodes manquantes dans BoundingBox player, une implémentation de BPicturePlayer qui calcule un rectangle assez grand pour contenir tout le dessin réalisé par un objet BPicture rejoué via BPicturePlayer (KapiX).

Retrait d’une optimisation incorrecte dans le traitement des calques avec une opacité globale de 100% dans app_server. Ces calques peuvent tout de même contenir des pixels avec de la transparence, et doivent donc être applatis en tenant compte du canal alpha comme tous les autres calques (KapiX).

Modification du protocole app_server pour l’opération permettant de récupérer les « bounding boxes » pour chaque caractère d’une chaîne. L’interface précédente utilisait un tableau de structures, la nouvelle API est inversée ce qui permet d’envoyer plus efficacement 2 tableaux de types primitifs (X512).

Pilotes de périphériques

Implémentation correcte des timeouts sur les commandes dans le pilote SDHCI, ce qui corrige la compatibilité avec plusieurs lecteurs de cartes SD (PulkoMandy).

Réécriture complète du pilote pour les touchpads Elantech. Cette série de changements retouche tout d’abord la gestion des touchpads en général, avec des améliorations sur la documentation, sur le traitement des données invalides, la configuration par défaut, et un nettoyage du code.

Ensuite, le code pour la reconnaissance de « gestures » a été amélioré pour mieux reconnaître plusieurs mouvements tels que le « tap » pour cliquer, le défilement en faisant glsser 2 doigts sur le touchpad, etc. Les préférences du touchpad ont reçu plusieurs nouvelles cases à cocher pour configurer ces différentes options.

Enfin, la dernière partie du patch met à jour le pilote Elantech pour reconnaître les 4 versions du protocole, dont la dernière est entièrement testée. La version 2 ne fonctionne pas correctement pour l’instant (elle a été désactivée pour l’instant) et les versions 1 et 3 sont activées de façon expérimentale dans les nightly builds en attendant les retours d’utilisateurs (samuelrp84).

Normalisation des noms de volumes générés par le pilote usb_disk pour s’assurer qu’ils ne commencent pas par des espaces (madmax).

Mise à jour de la couche de compatibilité FreeBSD avec FreeBSD 15 et synchronisation de tous les pilotes réseau (ethernet et wifi) concernés avec ceux de FreeBSD 15. Synchronisation du pilote rtl8125 avec OpenBSD (waddlesplash).

Ajout de « quirks » et de code supplémentaire dans le pilote I2C-HID pour essayer de se rapprocher du comportement implémenté dans Linux. Ce pilote ne fonctionne pas correctement pour l’instant et il est désactivé par défaut (Lt-Henry).

Systèmes de fichiers

Ajout d’un bouchon supplémentaire pour une API qui n’a pas besoin d’être implémentée dans userlandfs-FUSE (qui permet l’utilisation de systèmes de fichiers FUSE sous Haiku). Cette modification permet d’utiliser en particulier le système de fichier squashfs-fuse pour accéder à des volumes squashfs (OscarL).

Toujours dans userlandfs-fuse, propagation de l’état « lecture seule » du système de fichier, ce qui permet au Tracker de clairement afficher ces systèmes de fichiers comme étant en lecture seule (fond de fenêtre grisé, désactivation des opérations modifiant les fichiers) (OscarL).

Dans le système de fichiers UDF, amélioration des messages de logs, et correction d’un kernel panic déclenché par une assertion suite à des modifications précédentes dans le VFS (waddlesplash).

Correction d’un double lock dans le pilote FAT qui pouvait déclencher un kernel panic dans de rare cas (Jim906).

Intégration d’une partie des patchs permettant de redimensionner une partition BFS. Ce travail avait été commencé en 2014 dans le cadre du Google Summer of Code mais n’avait pas pu être terminé dans les temps. La série de patch est restée à l’abandon pendant de longues années, mais elle est en train d’être finalisée pour pouvoir en intégrer au moins une première partie (axeld).

Correction d’un bug sur la gestion des timestamps avec un nombre de secondes entier pour BFS. Historiquement dans BeOS, il n’existait pas d’API POSIX pour stocker une date de modification avec une résolution plus fine qu’une seconde. Cela conduisait de très nombreux fichiers à avoir le poids faible de leur date de modification à 0, avec pour conséquence une dégradation de la répartition dans les tables de hachage pour l’exécution de requêtes. Dans ce cas, BFS stocke une valeur aléatoire générée en interne par le système de fichier dans les bits de poids faible. Le bug était que cette valeur pouvait être exposée à l’espace utilisateur, entraînant de mauvais résultats sur la gestion des comparaisons de dates (par exemple pour déterminer les règles à lancer dans un makefile). La représentation interne a été légèrement modifiée pour bien distinguer les fichiers pour lesquels une date précise a été enregistrée, de ceux pour lesquels il s’agit de bits aléatoires. Ces derniers peuvent ainsi être filtrés et masqués pour l’espace utilisateur (PulkoMandy).

Correction de la gestion des dossiers déjà existants dans write_overlay. Ils'agit d’un système de fichier qui permet de stocker en RAM des écritures temporaires sur un système de fichier monté en lecture seule, utilisé en particulier pour l’exécution en mode live CD (nathan242).

Le pilote BTRFS ne déclenche plus un kernel panic lorsqu’il rencontre un type de compression inconnu, à la place, il retourne simplement une erreur et considère que le fichier ou dossier concerné ne peut pas être lu (AbdullahZulfiqar2005).

Des changements sur les requêtes (pour BFS et les autres systèmes de fichiers capables d’exécuter des requêtes): une petite optimisation du code, une modification pour ne pas notifier les suppressions de nœuds via B_QUERY_WATCH_ALL car elles sont déjà notifiées par d’autres moyens. L’API B_QUERY_WATCH_ALL est maintenant considérée comme stable, et a donc été ajoutée dans la documentation officielle (waddlesplash).

libroot & kernel

Réseau

Implémentation des sockets du domaine UNIX de type SOCK_SEQPACKET. Pour ce faire, modifications de recv et send pour accepter des buffers de taille 0 (pour les socket de type datagramme, pas les streams). Implémentation de MSG_TRUNC et MSG_PEEK pour les sockets du domaine UNIX, et amélioration de la gestion des adresses invalides dans accept et recv pour se rapprocher du comportement de Linux et des BSD (korli).

Implémentation de la découverte de MTU de chemin complet pour TCP et IPv4 (waddlesplash) et IPv6 (cmeerw). L’algorithme mis en place est simpliste, mais permet d’établir des communications dans des cas où le MTU est limité et la fragmentation de paquets n’est pas mise en place.

Nettoyage des buffers mémoire utilisés pour stocker des adresses dans le code de gestion du réseau. Cela corrige un comportement incorrect dans le cas où une adresse de socket UNIX n’est pas terminée par un caractère NUL (cas qui est explicitement autorisé sous Linux car l’information de longueur de l’adresse est disponible par ailleurs) (Anarchos pour la correction du cas où la vérification était oubliée, suivi d’un nettoyage par waddlesplash pour avoir une solution plus systématique à tous les endroits où ce cas particulier doit être pris en compte).

Un socket TCP qui est fermé alors que des données sont reçues par le noyau mais pas encore lues par l’application associée renvoie un paquet RST plutôt qu’un FIN. Ceci corrige un problème détecté dans les tests du langage Go. Modification du comportement lors de la réception d’un reset pendant la fermeture d’un socket TCP pour se comporter comme les autres systèmes (korli).

Déplacement du fichier networks utiliser par getnetent dans le dossier data, avec les autres fichiers de configuration du réseau. Il était placé par erreur dans /etc, qui est son chemin habituel pour d’autres systèmes UNIX (PulkoMandy).

Report d’une correction faite par NetBSD dans le résolveur DNS, il manquait une partie de l’initialisation de certains objets dans l’état du résolveur (cmeerw).

Gestion de l’IPv6: correction d’un problème dans la mise à jour du cache pour le protocole NDP (neighbor discovery), implémentation du multicast (cmeerw).

Remplacement des fonctions inet_net_ntop et inet_net_pton par l’implémentation d’OpenBSD, qui est plus respectueuse du standard que celle de NetBSD utilisée auparavant (korli).

Gestion des processus

Autorisation de l’appel de exec() depuis un autre thread que le thread principal du processus, pour se mettre en conformité avec POSIX et corriger un problème avec les outils de compilation d’OCaml (korli).

Préservation des signaux masqués lors de l’appel à fork (korli).

Mise en conformité POSIX des codes d’erreurs retournés dans certains cas dans la gestion des groupes de processus (waddlesplash).

Librairie C standard

Mise en conformité POSIX-2024:

  • Ajout des fonctions ffsl et ffsll dans strings.h (korli)
  • Ajout de getresuid(), setresuid(), getresgid(), setresgid() (korli)
  • Ajout de la déclaration de posix_spawn_file_actions_add[f]chdir dans les en-têtes publics (la fonction était déjà implémentée mais pas déclarée) (waddlesplash)

Synchronisation de l’implémentation de arc4random avec la dernière version d’OpenBSD (korli).

Correction d’un bug dans la gestion des locales, il n’était pas possible de changer seulement certaines catégories (date, format monétaire, messages), tout était forcément dans la même langue (waddlesplash).

Correction de plusieurs problèmes dans la famille de fonctions strftime (waddlesplash):

  • ajout des formats %k et %l,
  • correction sur la gestion des caractères d'espacement Unicode,
  • correction de problèmes sur la gestion des fuseaux horaires.

Correction de problèmes mineur de compatibilité POSIX: ajout de déclarations de fonctions et de constantes dans search.h, unistd.h, semaphore.h, nettoyage dans limits.h, définition de getlocalename_l… (waddlesplash).

Remplacement de strtok_r par l’implémentation de musl (waddlesplash).

Refonte du stockage et de la gestion des données ctype pour rendre le code plus facile à maintenir, supprimer des indirections inutiles et corriger un problème de thread safety (waddlesplash).

Nettoyage des fonctions de conversions d’encodage de caractères, et correction de la valeur de MB_CUR_MAX pour l’encodage UTF-8 (waddlesplash).

Définition de la constante DEV_BSIZE (mentionnée dans POSIX mais pas obligatoire) dans sys/param.h, modification de tous le code utilisant stat.st_blocks pour utiliser cette constante, y compris des problèmes dans certains systèmes de fichiers qui utilisaient st_blksize à la place. En effet, il n’y a aucun rapport entre la taille de bloc de st_blksize et le nombre de blocs de st_blocks défini juste à côté (waddlesplash).

Gestion de la mémoire

Correction d’une régression du mois précédent sur la gestion des réservations de mémoire lors du découpage d’areas`. Ajout de la possibilité de transférer des réservations de pages pour les caches et areas réservés, pour éviter de réduire les réservations de façon incorrecte. Cela pouvait causer des assertions et des plantages du noyau en particulier lors de l’exécution d’applications utilisant AddressSanitizer (waddlesplash).

Correction d’une fuite de mémoire dans… la gestion de la mémoire, mis en évidence entre autres par l’exécution du compilateur Rust qui consomme beaucoup de mémoire. Au passage, nettoyage du code et des messages de logs dans cette partie du code (waddlesplash).

Entrées-sorties

Modification de la gestion des requêtes d’entrées-sortie pour autoriser les pilotes de périphériques à sous-classer IORequestOwner. En particulier, cela permet au pilote NVMe d’utiliser ces fonctionnalités sans passer par l’ordonnanceur d’I/O générique qui ne se prête pas bien à l’interfaçage de matériel pouvant traiter plusieurs requêtes en parallèle. Cela permet de simplifier du code, supprimer une fonction récursive devenue inutile et finalement corriger un débordement de pile (waddlesplash).

La taille des partitions indiquée dans le bootloader n’était pas correcte : c’était la taille du disque entier qui était affichée à la place (waddlesplash).

Chargeur de démarrage

Correction de l’affichage de caractères unicode dans le menu de démarrage. En particulier cela évite de corrompre l’affichage lors de la navigation dans le système de fichiers pour désactiver certains pilotes de périphériques. Le firmware UEFI utilise de l’UTF16, tandis que le BIOS utilise une page de code IBM non standardisée. Le bootloader utilise en interne de l’UTF-8 et doit donc convertir les caractères dans le bon format dans chaque cas (madmax).

Implémentation du démarrage via le réseau sur les plateformes EFI (avec un peu de nettoyage sur le support réseau dans OpenFirmware et PXE). Cela fonctionne au moins sur l’architecture ARM 32-bit et facilite le développement sur cible réelle: compilation sur une machine, et exécution sur une autre sans devoir entretemps copier le système de fichiers et le bootloader sur une clé USB ou une carte SD (kallisti5 et PulkoMandy).

Un des en-têtes du bootloader utilisait une syntaxe C++, il a été corrigé pour pouvoir être importé depuis du code C si nécessaire (beaglejoe).

Le chargeur EFI ignore les disques qui ont une taille de bloc de 0 octet, ce qui évite une division par zéro lors de tentatives de lire des données (archeYR).

Systèmes de fichiers

Le noyau interdit maintenant de monter plusieurs fois la même partition. Cette vérification avait d’abord été implémentée dans le pilote FAT, puis via une vérification en espace utilisateur, mais ces deux protections étaient insuffisantes et causaient d’autres problèmes (waddlesplash).

Centralisation de plusieurs vérifications au niveau du VFS, par exemple les vérifications de type fichier ou dossier, les modes d’ouverture des fichiers, des codes d’erreurs retournés pour certaines erreurs spécifiques. Ces changements évitent d’avoir des différences de comportement entre différents systèmes de fichiers et s’assurent que le comportement implémenté est bien celui spécifié par POSIX (waddlesplash).

Implémentation de « fallbacks » pour les systèmes de fichiers qui ne savent pas traiter eux-mêmes les opérations SEEK_DATA,  SEEK_HOLE et select(), dont en particulier le write_overlay. Cela permet à la commande cp de fonctionner correctement dans ce cas (nathan242).

Outils de debug

Remise en commun de code pour la gestion du MMU dans le chargeur de démarrage EFI. Le code avait été dupliqué pour chaque architecture de CPU supportés, mais il est en fait en très grande partie identique. Regrouper ce code permet de s’assurer que les évolutions sont bien faites de façon synchronisée pour toutes les architectures (PulkoMandy).

Affichage dans le message de kernel panic de la version de Haiku (numéro hrev). Ceci évite de devoir demander ce numéro aux utilisateurs remontant un bug, il est directement inclus dans la capture d’écran de l’erreur (nathan242).

Modification de la valeur retournée par kernel_version dans les informations système. La valeur retournée par Haiku était la version majeure, qui est 1 depuis le début du projet Haiku en 2001. Elle retourne maintenant une version plus complète qui peut être utilisée dans la commande uname pour indiquer la version de Haiku plus précisément (waddlesplash).

Désactivation de la fonction spécifique à BeOS exect sur les architectures qui n’implémentent pas de compatibilité binaire avec BeOS.

Build system

Ajout d’une macro _DEPRECATED dans les en-têtes de base du système, permettant d’indiquer les classes, méthodes et fonctions qui sont obsolètes et à ne plus utiliser. Cela permet d’avoir un avertissement du compilateur lors de leur utilisation dans le code existant, et de commencer à mettre à jour le code, mais sans casser le code déjà écrit pour l’instant. Actuellement, cette macro n’est pas utilisée, des discussions sont encore en cours sur l’opportunité de retirer certaines APIs.

Remise en état des tests pour le bootloader. Ces tests permettent de lancer une partie du bootloader (dont le menu de configuration) sous forme d’un programme s’exécutant sous Haiku. Cela permet de tester une grande partie du code du bootloader sans avoir besoin de redémarrer le système (waddlesplash).

Ajout d’un script pour convertir une disposition de clavier de la console Linux dans le format reconnu par Haiku (mmu_man).

Mise à jour de paquets pour réparer la compilation en mode « bootstrap » (sans dépendances précompilées) pour ARM et ARM64 (PulkoMandy).

Nettoyage et amélioration de la classe utilitaire FunctionTracer qui permet d’afficher facilement une trace de l’exécution de fonctions, avec une indentation indiquant les appels imbriqués. Il existait plusieurs versions de cette classe utilisées à différents endroits dans le code, chacune avec de légères variations. Renommage de fonctions qui pouvaient entrer en conflit avec l’utilisation de debug_printf et modification de cette dernière pour retourner le nombre de caractères imprimés afin de pouvoir l’utiliser de façon interchangeable avec les autres fonctions de la famille printf (PulkoMandy).

Déplacement de plusieurs en-têtes initialement développés pour une utilisation dans le noyau, de headers/private/kernel/util vers headers/private/util, en effet ils implémentent des fonctionnalités assez génériques (listes chaînées, hash tables, opérations sur les bits…) et sont tout à fait utilisables en dehors du noyau (c’est d’ailleurs déjà le cas à plusieurs endroits dans le code de Haiku) (PulkoMandy et waddlesplash).

Retrait de cas ou l’activation de DEBUG=1 (compilation en mode debug avec des assertions supplémentaires) était empêchée pour certains composants du code (waddlesplash).

Modification du code pour inclure les catalogues de traductions automatiquement dans le paquet contenant l’exécutable correspondant. Ce code incluait également les catalogues de toutes les dépendances, ce qui conduisait les catalogues système de libbe.so à être présents plusieurs fois dans plusieurs paquets, occupant inutilement de la place). Ce changement n’est pas tout à fait terminé puisque maintenant certains catalogues ne sont plus inclus du tout (PulkoMandy).

Modernisation de la page d’accueil de WebPositive pour en permettre l’utilisation avec d’autres navigateurs: définition du bon type MIME, utilisation de HTTPS pour télécharger des ressources externes, déclaration de l’encodage du fichier (humbinger).

Modification du « Makefile Engine » pour autoriser des flags de compilation différents entre les fichiers sources C et C++, ce qui permet d’éviter des warnings de compilation dans certains projets compilant des sources C (OscarL).

Il est maintenant possible de compiler Haiku depuis NetBSD (cmeerw).

Réparation de la compilation de test_app_server (KapiX).

Utilisation de la constante B_DEV_NAME_LENGTH plutôt que de la valeur numérique 128 à plusieurs endroits dans le code (jscipione et OscarL).

Suppression de la dépendance du build à la commande bc, en utilisant à la place des expressions arithmétiques du shell POSIX (PulkoMandy).

Réparation de la compilation des tests unitaires, modification des tests utilisant l’interface graphique pour les exécuter avec test_app_server, ajout d’un package haiku_unittests et d’un profil de build qui inclut ce package dans le système de fichier compilé. L’objectif est de pouvoir lancer ces tests automatiquement dans le cadre de l’intégration continue de Haiku (KapiX, à partir d’un travail plus ancien démarré par kallisti5).

Mise à jour de l’année de copyright à 2026 dans le menu de démarrage et dans les métadonnées des paquets générés par Haiku (PulkoMandy).

Mise à jour des paquets précompilés utilisés pour compiler Haiku avec les dernières versions fournies par HaikuPorts pour les architectures x86 et x86_64. L’outil utilisé pour faire cette synchronisation a reçu lui-même quelques évolutions. Le code de Haiku a été légèrement ajusté pour corriger les problèmes de compilation avec ces nouvelles versions des dépendances (waddlesplash, avec l’aide de madmax pour corriger des problèmes de compilation sur RISC-V qui utilise pour l’instant une version plus ancienne de certains paquets).

Documentation

Haiku book

Le « Haiku book » documente les API publiques et s’adresse aux développeurs d’applications pour Haiku. Il complète et remplace petit à petit le Be Book de BeOS, qui est distribué sous une licence CC-BY-ND ne permettant pas de le mettre à jour et de le corriger.

  • Ajout du chapitre sur le Device Kit (DigitalBox98)
  • Correction d’une documentation inversée pour un paramètre de BKeyStore (PulkoMandy)
  • Ajout de documentation pour BSimpleGameSound, BSerialPort, MailAttachment, MailDaemon, mail_encoding (cafeina)
  • Documentation des déviations connues de Haiku par rapport à la spécification POSIX (PulkoMandy).

Documentation interne

La documentation interne s’adresse aux développeurs et développeuses du système Haiku lui-même.

Correction de fautes de frappe dans le chapitre sur les systèmes de fichiers (OscarL).

Autres nouvelles

Changement de tarification de Netlify

Netlify héberge le site www.haiku-os.org. Ils ont récemment modifié leur tarification pour ajouter un système de crédit en fonction de la bande passante consommée. Haiku bénéficie de l’offre « Open Source », avec une certaine quantité de trafic offerte (en échange de l’affichage d’un logo de Netlify en base de page du site). Cette offre s’est révélée insuffisante dans la nouvelle tarification, surtout suite à une attaque de robots (probablement pour l’entraînement de LLM de mauvaise qualité, puisque ils requêtaient des pages n’existant pas et n’obtenaient que des erreurs 404). Du côté de Haiku, des protections ont été mises en place pour éviter ce genre de problème, mais entretemps, Netlify a facturé le dépassement de bande passante autorisée pour le mois de décembre.

Finalement, après une discussion avec l’équipe de support de Netlify et une vérification de ce qu’il s’était passé, la facture a été annulée, et la consommation de bande passante pour Haiku a été augmentée pour mieux convenir à l’utilisation habituelle générée par Haiku.

Remise sur les rails de HSA (Haiku Support Association)

Actuellement, l’association Haiku inc est la principale organisation recevant des dons et finançant les activités de Haiku (développeur employé, coût d’hébergement de l’infrastructure…).

Cette association est basée aux USA, ce qui est récemment devenu une source d’inquiétude pour certains contributeurs et donateurs de Haiku.

Suite à une discussion sur les forums, il y a donc un regain d’intérêt pour la Haiku Support Association, une autre organisation basée en Allemagne et qui était dormante depuis plusieurs années. Plusieurs personnes ont donc adhéré à cette association et cela va peut-être permettre d’en relancer l’activité et d’assurer une présence en Europe.

En particulier, c’est cette association qui organisait la conférence BeGeistert et le traditionnel « coding sprint » associé, permettant aux développeurs et aux utilisateurs de Haiku de se rencontrer régulièrement. Cette activité avait cessé suite au manque de public pour ces évènements, à une perte d’intérêt des membres de l’association, et une absence de nouveaux adhérents pour relancer les choses. Espérons que cette période d’inactivité soit maintenant terminée et que l’organisation de conférences plus régulières puisse reprendre.

Série d’articles « Gerrit code review iceberg »

Haiku utilise l’outil Gerrit pour la revue de code.

Il y a actuellement plus de 300 « change requests » qui sont ouvertes. Cela a suscité quelques interrogations sur le forum. Le projet est-il submergé de contributions? Les développeurs font-il un bon travail de revue? Quelles futures fonctionnalités de Haiku se cachent dans ces changements en attente?

Une série d’articles est en cours de publication pour examiner ces propositions abandonnées, en cours de travail ou partant dans une direction qui n’est pas acceptable pour les mainteneurs du projet. Chaque article examine 5 de ces change requests et explique les changements proposés, et pourquoi le travail n’a pas abouti.

Cette démarche a déjà permis à certains de ces changements de trouver un repreneur, plusieurs développeurs (anciens ou nouveaux contributeurs) se prenant au jeu de finaliser l’un d’entre eux. Cela devrait permettre de réduire un peu la liste, et d’encourager ensuite les nouvelles contributions en voyant que finalement, peu de choses sont vraiment abandonnées.

Statistiques de contribution pour 2025

Haiku a reçu 1068 commits en 2025. C’est la deuxième année la plus calme après 2023 et très loin du record de 2009 où il y avait eu 5555 commits. Cependant la comparaison n’est pas directe: en 2009, la revue de code était faite après l’envoi d’un commit sur la branche principale, avec des corrections effectuées par des commits supplémentaires si nécessaire. Aujourd’hui, chaque commit peut recevoir plusieurs modifications dans Gerrit avant d’être finalement intégré.

49 personnes ont écrit du code pour Haiku en 2025, entre 9 (en septembre) et 22 (en janvier) par mois. C’est là aussi plutôt dans le bas du tableau, et loin du record de 2012 (72 personnes). Waddlesplash se hisse à la troisième place du classement des personnes ayant le plus contribué (en nombre de commits) et va peut-être dépasser korli dès l’an prochain, malgré l’activité ininterrompue de ce dernier depuis 2003, presque au tout début du projet. Pas de changement du top 10, on attendait l’arrivée de kallisti5, mais il lui manque encore 70 commits pour dépasser Stefano Ceccherini. axeld conserve sa première place avec une avance confortable, malgré une activité plus réduite depuis quelques années.

Haiku compte environ 5 millions de lignes de code source, tout type de fichiers compris (ce nombre est stable voire en légère baisse depuis 2015) et 25 000 fichiers.

La situation est assez différente pour Haikuports : avec 2653 commits, 2025 est la deuxième année la plus active, derrière 2018 ou le projet avait atteint 2908 commits.

Le contributeur ayant le plus de commits est toujours korli, bien que Begasus semble en passe de le rattraper avec un rythme de contribution très soutenu.

Le projet a reçu en 2025 des contributions de 75 personnes différentes, ce qui est un peu en dessous du record établi l’année précédente avec 82 contributeurs mais reste un très bon score.

Le dépôt de Haikuports comporte 7000 fichiers et a dépassé 1 million de lignes de code, avec une progression approximativement linéaire depuis la création du dépôt en 2008.

La très grande majorité des commits de Haikuports sont réalisés sur des machines configurées avec les fuseaux horaires UTC, UTC+1 ou UTC+2, suivis par le fuseau UTC+10 (pour Haiku, ces statistiques de fuseaux horaire ne sont pas exploitables, la plus grande partie des commits ayant été importé depuis SVN qui ne préserve pas cette information).

Pour les deux projets, le pic d’activité semble être le mardi soir et on peut observer les heures creuses entre 2 h et 5 h du matin. Il n’y a pas de grosse différence entre les jours de semaine et les week-ends. On peut observer par contre que les mois d’hivers sont beaucoup peu plus actifs que ceux d’été et d’automne.

Mise à jour de haiku-format

Haiku-format est un ensemble de patchs pour clang-format pour tenter d’implémenter les règles de formatage de code choisies par le projet Haiku. Ces dernières ont été décidées avant la disponibilité d’un tel outil, et sont difficiles à automatiser correctement.

Les patchs ont été reportés sur une version plus récente de clang-format par owenca, et le robot de revue de code connecté à Gerrit mis à jour avec cette nouvelle version et remis en service par nielx. Les suggestions comportent encore des propositions de formatage incorrectes, c’est pourquoi cet outil est déployé uniquement sous forme d’un robot de revue et pas comme un outil de reformatage automatique.

Les développeurs qui connaissent bien les règles de formatage peuvent ensuite vérifier si ces commentaires sont pertinents. Cette solution est imparfaite, mais une discussion pour rendre les règles plus simples à automatiser n’a pas abouti à un consensus suffisant pour faire des modifications pour l’instant.

À quand la beta 6?

La version beta 5 de Haiku commence à être assez ancienne. Toute l’année 2025 est passée sans nouvelle publication de version.

La liste des choses à traiter pour cette nouvelle version s’est beaucoup réduite, cependant il reste encore quelques régressions assez gênantes. Certaines des corrections sont déjà en cours de relecture (en particulier pour améliorer la gestion de la mémoire swap). Il faudra probablement encore quelques mois pour venir à bout de toute la liste. On en reparle au prochain trimestre !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

LibreOffice 26.2 : Markdown, accessibilité et plein d’autres nouveautés et améliorations

En février, il y a la corvée commerciale de la Saint-Valentin et les réjouissances intellectuelles consécutives à la sortie d’une nouvelle version de la suite bureautique LibreOffice. C’est, bien évidemment, sur LibreOffice 26.2 que l’on va se pencher. Au menu, du très visible, comme les boites de dialogues, du très attendu comme la prise en compte du Markdown ou du moins visible comme le travail sur l’accessibilité.

Il va de soi que les notes de version sont plus exhaustives et qu’il ne s’agit ici que d’une sélection.

Logo de LibreOffice

Sommaire

Avant de commencer : toutes les captures d’écran ont été faites, volontairement, sur une interface très personnalisée.

L’accessibilité

L’accessibilité de la suite bureautique est un important chantier pour lequel une personne a été recrutée en 2023 (en). Cette version-ci a fait l’objet d’améliorations sensibles. Parallèlement, Sophie Gautier, coordinatrice de The Document Foundation1 (Foundation coordinator) est en train de monter un groupe de travail qui a pour objectif la publication d’un rapport de conformité en matière d’accessibilité pour répondre à la norme européenne EN 301 549 (en) d’accessiblité numérique. La langue de travail de ce groupe est l’anglais.

Concernant les améliorations de cette version :

  • la boite de dialogue « Vérifier les mises à jour », Aide > Vérifier les mises à jour… est devenue accessible aux lecteurs d’écran ;
  • les fonctions d’accessibilité des aperçus des bordures, onglet « Bordures » des boites de dialogue, ont été revues afin qu’elles ne perturbent plus les dispositifs d’assistance ;
  • sur Linux : la boite de dialogue Outils> Orthographe est annoncée correctement par le lecteur d’écran ;
  • quand on supprimait la sélection accessible, le curseur se déplaçait automatiquement au début du texte, ce comportement perturbant est supprimé ;
  • dans Writer, les fautes d’orthographe ne sont plus signalées par les dispositifs d’assistance si la vérification orthographique n’est pas activée ;
  • l’accessibilité au clavier de la boite de dialogue des extensions : Outils >  Extensions est accessible aux lecteurs d’écran ;
  • et enfin, il est possible de naviguer entre les onglets verticaux avec des raccourcis clavier.

Support du Markdown

Le Markdown est devenu le format de balisage léger standard « de fait ». Et c’est celui supporté par LinuxFR. Son support a été introduit dans cette version, c’est un des formats d’enregistrement qui s’est ajouté à la série des autres formats de la suite, pas un format d’export. Pour l’utiliser pour vos sites, passant pour LinuxFR, vous devrez :

  • soit ouvrir le fichier .md dans un éditeur de texte, n’importe lequel, même Mousepad fait l’affaire par exemple, et copier-coller ensuite le tout à partir de l’éditeur de texte là où vous le voulez ;
  • soit, si cela est possible, importer le fichier .md dans ce qui vous sert pour gérer le site comme le fait par exemple l’extension ODT2SPIP pour le système de gestion de contenu SPIP qui permet de créer une nouvelle page dans SPIP avec un fichier.ODT.

Comment ça marche avec LinuxFR ? Plutôt bien. Les styles de caractère Accentuation (ici en italiques) et Accentuation forte (ici gras) sont bien reconnu ainsi que Texte source pour « télétype », les indications in-texte encadrées de l’accent grave U+0060. Les styles de paragraphes :

  • Bloc de citation (paragraphes de citation précédés d’une ligne blanche et du signe « > » dans la saisie de contenu sur LinuxFR) ;
  • Contenu de tableau ;
  • Corps de texte ;
  • Liste, par contre la numérotation des listes ordonnée ne semble pas bien fonctionner, il faut saisir les numéros à la main ;
  • Texte préformaté pour écrire des blocs de code ;
  • Titre 1, Titre 2, Titre 3 et Titre de tableau.

Les tableaux sont bien repris ainsi que les liens insérés via l’insertion d’hyperliens.

Ce qui ne semble pas fonctionner du tout : ce sont les notes, elles disparaissent corps et biens. C’est peut-être dû au passage dans l’éditeur de texte qui transforme un peu le document. Et, évidemment, il faut rajouter les images avec la syntaxe LinuxFR.

La version de Mardown de LibreOffice est CommonMark (en) et la bibliothèque utilisée est MD4C avec quelques extensions prises en charge par cette bibliothèque (cf ce rapport de bug (en) et ses réponses), pour en savoir plus, voir cette note (en) du blog de The Document Foundation.

Petite remarque, si vous utilisez un LibreOffice 25.8, vous avez peut-être pu constater qu’il était question d’enregistrement au format .md, cette information a été ajoutée trop précocement car la version 25.8 ne gère pas le Markdown.

L’interface et les boites de dialogue

Les boites de dialogue, notamment de styles et de formats, ont beaucoup changé. Longtemps elles se sont affichées avec une présentation par onglets en haut et le contenu dessous.

Puis il y a une période de transition en 2025 qui a fait grincer une collection complète de dents où on avait, selon l’endroit où on était, soit des onglets soit une navigation par menu latéral. Cette dernière avait un gros défaut : par exemple pour la configuration des styles dans Writer il fallait descendre tout en bas pour accéder aux options qui étaient cachées. Et il n’y avait pas de barre de défilement pour aller plus vite.

LibreOffice 26.2 voit ces défauts corrigés : les boites de dialogue sont harmonisées dans toute la suite et leur menu latéral, toujours sans barre de défilement qui s’avère finalement inutile, montre clairement tous les types de paramètres auxquels on peut accéder. Et, comme on peut le voir, LibreOffice a intégré une meilleure prise en charge des systèmes d’écritures asiatiques et complexes en affichant deux colonnes, une pour les polices occidentales, ou pour les polices asiatiques ou complexes. Une personne a également été recrutée en 2023 (en) pour travailler sur le support des systèmes d’écriture de droite à gauche (RTL) et complexes (CTL).

Boite de dialogue Style de paragraphe avec la navigation par onglets à gauche, puis les deux colonnes de choix de police, occidental ou asiatique ou complexe

Si toutefois, vous préférez revenir à l’affichage avec les onglets, il suffit d’aller dans le menu Outils > Options > Apparenceau niveau de « Boites de dialogue » et cocher l’option Horizontal en haut.

Choix de la position des onglets des boites de dialogue, LibreOffice 26.2

Il faut savoir que les onglets en haut ne s’affichent que sur une seule ligne et qu’il faudra donc naviguer avec les flèches quand il y a de nombreuses options.

Boite de dialogue avec les onglets en haut

Writer

Il y a un certain nombre d’amélioration autour de la compatibilité avec le format DOCX : séparation de tableaux flottants en plusieurs tableaux, suppression de la numérotation des notes de bas de page à l’ouverture d’un fichier DOCX, etc.

On relèvera deux nouvelles options d’alignement des paragraphes : « Début » et « Fin ». Si vous utilisez l’alphabet latin, vous ne verrez aucune différence avec les deux options « Forcer à gauche/en haut » et « Forcer à droite/en bas ». Elles ont été développées pour réutiliser plus facilement les styles entre les divers systèmes d’écriture.

Comparaison des nouveaux types d’alignement de LibreOffice 26.2

Pour continuer sur la lancée du travail pour la prise en compte des systèmes d’écriture dont le fonctionnement est différent de celui de l’alphabet latin, il est possible de changer la direction du texte : de gauche à droite ou de droite à gauche en cours de travail. Cela peut se paramétrer dans les styles.

Définition de la direction du texte dans le style de paragraphe

Calc

Un gros travail sur les performances a été fait : vitesse de défilement, rapidité des classeurs avec de nombreuses formes et du rejet des modifications. On voit apparaître de nouvelles options de tri (Données >Trier) qui dépendent de la « locale » (langue définie dans les Options de LibreOffice). On peut ainsi déterminer quel caractère est utilisé comme séparateur de décimal pour le tri naturel.

Les nouvelles options de tri de Calc 26.2

On peut relever aussi une avancée ergonomique qui va plaire à toutes celles et ceux qui utilisent les matrices, on peut maintenant modifier les formules matricielles avec la combinaison de touches : F2 + ↑ Maj + Ctrl + Entrée, il n’est plus nécessaire de modifier la formule elle-même.

Et aussi : si vous utilisez (pourquoi diable ?) le format d’enregistrement XLSX, c’est le format EXCEL2010+ qui est le format par défaut, il change de nom pour devenir « Classeur Excel 2010-365 ».2

En vrac

Base est devenu complètement multi-utilisateur, TDF a, d’ailleurs, recruté une personne pour travailler sur l’application.

Concernant les diagrammes (ou chart) : dans le Volet latéral, quand le graphique est en mode modification et que l’on va, au niveau de « Couleurs », sur la palette, on a une prévisualisation en direct dans le diagramme ce qui permet de tester le choix de couleurs plus facilement.

Les polices embarquées dont la licence ne permettait pas l’édition étaient jusqu’à présent ignorées et remplacées à l’affichage, ni vu, ni connu par une fonte de substitution. Ce défaut a été corrigé.

L’export PDF gère les liens avec les documents externes : Fichier > Exporter au format PDF > Liens.

Export PDF de LibreOffice 26.2 et suppression des liens entre documents

Les dictionnaires hongrois, mongol et portugais du Portugal ont été mis à jour ainsi que les règles de césure de la langue hongroise.

JSON, pour JavaScript Object Notation, est un format standard utilisé pour représenter des données structurées. Il est utilisé notamment pour échanger les informations entre un navigateur et un serveur. C’est, par exemple, le format de sauvegarde des marques-pages de Firefox ou de certains fichiers d’archives de Mastodon. Les documents XML et JSON génériques avec des plages pouvant être liées sont maintenant automatiquement mappés à des feuilles dans Calc. Une plage pouvant être liée est une section d’un document contenant des enregistrements tabulaires. Lorsqu’un document contient plusieurs plages pouvant être liées, chaque plage est mappée à une seule feuille3.

Et si vous avez envie de vous amuser avec les fonctions expérimentales (à activer dansOutils > Options > LibreOffice > Avancé), vous pouvez jouer avec la nouvelle de boite de dialogue « Gestion des macros ».

Pour finir

Cette dépêche a, bien, évidemment, été rédigée avec LibreOffice et, cette fois-ci dans un fichier enregistré en Markdown. Les seules balises que j’ai dû entrer à la main sont celles des images. Kate a l’air de modifier le fichier et, quand je réouvre le .md dans LibreOffice, il y a des styles qui ont sauté mais la mise en forme reste visuellement la même. Kate rajoute aussi des barres obliques devant les « > », aux crochets [ ] et même à certains hyperliens (images). Il y a peut-être des éditeurs de texte plus adaptés ou des réglages à faire.

J’ai rédigé cette dépêche en même temps qu’un article sur LibreOffice 26.2 pour mon site. Si l’article n’est pas vraiment dupliqué, il n’est pas étonnant d’y trouver des morceaux ici.

Que tout cela ne nous empêche d’adresser tous nos remerciements à celles et ceux qui font de LibreOffice une suite bureautique si agréable à utiliser et si performante.

Post-scriptum : si vous voulez savoir comment modifier les couleurs de l’interface comme sur les captures d’écran, ça peut s’envisager, demandez gentiment, avec un peu de chance.


  1. The Document Foundation ou TDF est la fondation de droit allemand qui pilote le projet LibreOffice. 

  2. Il y a deux formats OOXML différents et donc deux formats XLSX différents, la version 2007 et la version actuelle depuis 2010. S’il vous est vraiment nécessaire d’enregistrer au format XLSX, il faut utiliser la version de 2010. 

  3. Notes de version. 

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Rétablissement de l'« auto-attestation » pour les logiciels de caisse, l'aboutissement d'une année de mobilisation

Avec l’adoption du projet de loi de finances pour 2026, les éditeurs de logiciels de caisse ont retrouvé la faculté d’attester eux-mêmes de la conformité de leur solution, un an après que la certification par un organisme tiers avait été rendue obligatoire. Une mesure salutaire pour la pérennité des logiciels libres de caisse.

La loi de finances pour 2025 avait supprimé la possibilité, pour les éditeurs, d’attester eux-mêmes de la conformité des fonctionnalités d’encaissement de leur logiciel. Ils étaient dès lors tenus de passer par la certification, une procédure lourde et très mal adaptée à la réalité des marchés informatiques et à l’innovation, en particulier pour les logiciels libres. Une réforme actée sans réelle consultation, sans étude d’impact préalable et sans que l’administration fiscale ait exprimé de problème avec le dispositif.

L’April s’est mobilisée, tout au long de 2025, au côté des membres de l’écosystème, pour revenir sur cette réforme.

C’est dans le cadre du projet de loi de finances pour 2026, adopté le lundi 2 février, après une longue procédure et dans un contexte politique tendu, que l’« auto-attestation » a finalement été rétablie. Une mesure salutaire pour la pérennité des logiciels libres de caisse, inscrite à l'article 125 du projet de loi.

Article 125 :

Le code général des impôts est ainsi modifié :

1° Le 3° bis du I de l’article 286 est complété par les mots : « ou par une attestation individuelle de l’éditeur, conforme à un modèle fixé par l’administration » ;
2° Au premier alinéa de l’article 1770 duodecies, après le mot : « production », sont insérés les mots : « de l’attestation ou ».

Il ne s’agit pas ici de se prononcer sur la procédure retenue, ni sur le reste du contenu de cette loi de finances. Quoi qu’il en soit, le rétablissement de l’« auto-attestation » est une très bonne nouvelle, tant pour celles et ceux qui développent ou proposent des prestations autour de ces solutions, que pour les personnes qui souhaitent utiliser des logiciels libres pour leurs encaissements. Même s’il est regrettable que de nombreux acteurs économiques du libre aient dû se lancer dans une fastidieuse et coûteuse procédure de certification ou bien envisager des modifications profondes de leur modèle.

Un grand merci à l’ensemble des membres des écosystèmes des logiciels libres proposant des solutions d’encaissement. Sans leur engagement, ce résultat n’aurait sans doute pas été possible. L’April restera vigilante pour que l’« auto-attestation » ne soit pas à nouveau remise en cause sans étude d’impact sérieuse.

Court résumé de la longue procédure qui a conduit à ce résultat :

  • Pour qu’une disposition soit adoptée, elle doit d’abord être votée de manière « conforme » par les deux chambres parlementaires, c’est-à-dire strictement dans les mêmes termes. Puis, le texte global doit être adopté pour que la mesure devienne loi.
  • En première lecture du projet de loi de finances pour 2026, l’Assemblée comme le Sénat ont voté pour le rétablissement de l’« auto-attestation », indiquant une volonté claire du législateur en la matière. La première chambre avait toutefois rejeté le texte dans son ensemble, la disposition n’étant pas encore « conforme ». À la reprise des travaux, en janvier, l’Assemblée est repartie de la version du Sénat qui contenait la disposition concernant le rétablissement. Le texte sur lequel le gouvernement a engagé sa responsabilité – article 49.3 de la constitution – reprenait une version « conforme » de la disposition. Les motions de censure ayant été rejetées, le texte a été adopté. Dès lors, il ne restait plus qu’au projet de loi d’être définitivement adopté pour que le rétablissement de l’« auto-attestation » soit acté. Chose faite le lundi 2 février, suite au rejet des motions de censure sur l’ultime recours du gouvernement à l’article 49.3.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

L'April propose le pacte du logiciel libre à l'occasion des élections municipales et communautaires de 2026

À l'occasion des élections municipales et communautaires des 15 et 22 mars 2026, l'April propose aux personnes candidates de signer le Pacte du Logiciel Libre afin de marquer leur engagement, si elles sont élues, à promouvoir et défendre une priorité aux logiciels libres et aux formats ouverts au sein de leurs collectivités.

Le pacte du logiciel libre est une initiative de l'April qui remonte à l'élection présidentielle de 2007. À l'occasion des élections locales à venir, le pacte a évolué pour être plus représentatif des enjeux actuels.

En complément du pacte, l'April propose une liste d'exemples d'actions concrètes que les collectivités peuvent mettre en place dans la poursuite de ces objectifs.

Le pacte est disponible sur le site de la campagne.

En plus du format PDF classique, Le pacte est également disponible en mode « brochure », de manière à pouvoir l'imprimer et le plier dans un format 4 pages, par exemple pour être distribué sur les marchés en échange d'un tract électoral ;).

Le pacte pour les élections municipales et communautaires de mars 2026 est construit autour de trois objectifs complémentaires :

  • Donner la priorité aux logiciels libres et aux formats ouverts, qui est l'ambition historique de l'April. Avoir recours à des logiciels privateurs doit rester une exception dûment justifiée, dans le respect d’une stricte procédure de définition des besoins. Une priorité qui est compatible avec le droit de la commande publique – chose confirmée par le Conseil d'État depuis 2011 – et matériellement possible puisqu'il existe à présent des logiciels libres en mesure de répondre à la majorité des besoins des collectivités.
  • Défendre et promouvoir une informatique émancipatrice. Le logiciel libre participe à la préservation des libertés fondamentales dans une société informatisée, au partage du savoir et à l'accès éclairé au numérique pour toutes et tous. Que ce soit dans les écoles dont elles ont la charge, comme dans l'ensemble des lieux d'accueil du public qu'elles peuvent être amenées à gérer, les collectivités ont un rôle important de sensibilisation et d’accompagnement à exercer.
  • Contribuer à la pérennité des logiciels libres utilisés. Les collectivités doivent contribuer au maintien, à la documentation et au développement des solutions qu’elles utilisent. Un travail et un investissement mutualisables, notamment avec d'autres collectivités, au bénéfice de toutes et tous, d’autant plus pertinent et durable qu’ils s’inscrivent dans une politique formalisée de contribution et de partage.

Le pacte s'adresse à l'ensemble des personnes candidates qui souhaitent marquer leur attachement à agir pour le logiciel libre au sein de leur collectivité et pour les libertés informatiques des habitantes et habitants. Il s'adresse également aux listes candidates qui souhaitent collectivement marquer, comme élément de leur programme, leur engagement à mettre en œuvre une politique en faveur du logiciel libre si elles obtiennent la majorité.

Nous invitons toutes celles et ceux qui le souhaitent à contacter leurs candidates et candidats, qui ont déjà pu se manifester, pour les encourager à signer le Pacte du Logiciel Libre et profiter de l'occasion pour les sensibiliser aux enjeux des libertés informatiques.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Grafik Labor 2026 – Appel à conférenciers et à stands

Création graphique, artistique et outils libres

GrafikLabor revient le samedi 4 avril 2026 à Rennes, dans les locaux d’Activdesign, pour sa huitième édition dédiée aux logiciels libres, aux pratiques créatives ouvertes et aux artistes, designers et développeurs qui les utilisent au quotidien. Issu du LibreGraphicsMeeting, l’esprit se veut ouvert aux diverses pratiques créatives, aux différents secteurs de création graphique pourvu qu’ils mettent en avant les outils, les licences ou du contenu libre.

À cette occasion, l’équipe d’organisation de l’AFGRAL lance un appel à conférenciers et à stands.

Pour rappel, GrafikLabor est un événement communautaire associatif. Il s’adresse aux personnes qui utilisent, développent ou promeuvent des logiciels libres dans leurs pratiques créatives : graphisme, illustration, jeux vidéos, édition, UX/UI, web, motion, 3D, typographie, etc.

L’événement met l’accent sur :

  • les retours d’expérience concrets
  • les choix d’outils et de workflows
  • la transmission de savoirs
  • les enjeux culturels et politiques du logiciel libre dans la création

Appel à conférenciers

Nous recherchons des propositions de conférences ou de présentations autour de, par exemple :

  • création graphique et artistique avec des outils libres (GIMP, Inkscape, Krita, Scribus, Blender etc.)
  • UX/UI, design web ou produit avec des stacks open-source
  • typographie, édition, illustration ou motion en environnement libre
  • jeux vidéo réalisés avec outils libres comme Godot
  • automatisation, scripts, bidouille et détournement d’outils
  • retours d’expérience d’artistes, studios, collectifs ou associations
  • réflexions sur l’autonomie, la pérennité et l’éthique des outils

Les formats peuvent être variés : talk, démo, étude de cas, retour d’expérience, atelier.

Modalités de participation

L’appel est ouvert, mais la programmation se fait sur sélection afin de garantir la cohérence de l’événement.

Les propositions se font en deux étapes :

  • un formulaire de prise de contact (nom, email, motivation)
  • après validation, l’envoi d’un lien vers le formulaire de proposition détaillée

L’événement est aussi ouverts aux sponsors ou aux associations qui aimeraient avoir un stand faire connaitre leur activité.

Informations pratiques

Date : vendredi 4 avril
Lieu : Activdesign, Rennes
Public : artistes, designers, développeurs, étudiants et personnes intéressées par le libre

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Profileur mémoire MALT 1.6.0 et support de Python

MALT c'est quoi ?

L'optimisation est une activité connue de bien des développeurs, fouiller, chercher dans son code, pour, peut être, gagner un peu de performance (beaucoup, parfois). Dans cette tâche ardue, face à des codes grandissants, massifs, utilisant de nombreuses bibliothèques externes, un outil central dans ce travail de fourmi : le profileur.

Le profileur fait partie des outils importants pour le développeur qui se soucie des ressources qu'il utilise. Il lui permet de chercher les points chauds dans son code, comprendre le cout de chaque fonction, chaque ligne implémentée. Bien des outils s'intéressent à une chose : bien utiliser votre processeur.

Mais que se passe-t-il si vous rencontrez des difficultés avec l'utilisation de votre mémoire ? Si vous pensez mal utiliser la fonction malloc() du C ou l'opérateur new du C++ ? Si vous avez oublié qu'une de vos variables globales occupe 10 Go (surtout en Fortran) ?

Publié il y a quelques années MALT (licence CeCILL-C) permet de répondre à la question en cherchant toutes les allocations mémoires faites par votre code. Cet outil avait fait l'objet d'un article sur LinuxFR en 2018 lors de sa mise en open source : Profileurs mémoire MALT et NUMAPROF.

Versions 1.6.0

Avancées

Depuis, cet outil fait son chemin avec l'ajout du support de Rust ainsi que nombreuses corrections et ajouts tels que la possibilité de dumper le profile mémoire juste avant que le système ne soit plein.

malt -o dump:on-sys-full-at=80% -o watch-dog=true ./mon_programme

# également :
#  -o dump:on-app-using-rss=10G
#  -o dump:on-app-using-virt=80%
#  -o dump:on-app-using-req=500M

La possibilité de suivre les appels à mmap, mremap, munmap si vous les appelez directement dans votre code au lieu de laisser malloc faire son travail.

Support de python

MALT a initialement été développé dans le contexte du calcul à haute performance — HPC (High Performance Computing) donc surtout pour le C / C++ / Fortran / Rust.

Dans la communauté scientifique, nous voyons dans les laboratoires de plus en plus fleurir l'usage d'un langage à priori bien éloigné de nos prérogatives de performances : Python.

Dans un cadre de calcul scientifique, il est souvent utilisé plutôt comme un wrapper permettant d'appeler et d'orchestrer des bibliothèques en C /C++ / Fortran, elles, performantes. Quoi que l'usage amène aussi à l'écrire de certaines parties du code en Python grâce à Numpy ou Numba pour accéléré la partie calcule sur des tableaux ou autres frameworks d'exploitation des GPU.

La version 1.6.0 de MALT vient d'ajouter le support (encore quelque peu expérimental) natif de Python permettant d'analyser un code pur python ou mix Python / C / C++…. Il s'agit pour l'instant de la première version avec ce support, il reste donc du travail.

Sont supportés les versions Python supérieures à 3.11 ainsi que les environnements Conda / Anaconda / Venv. À l'heure de rédaction de cet article, cela comprend les versions 3.11 à 3.14.

MALT étant orienté C / C++, il ne supporte que Linux comme système d'exploitation. (NdM: la causalité évoquée ici devrait faire réagir des développeurs d'autres systèmes libres notamment :))

Utilisation sur Python

Si la commande malt fonctionne parfaitement, il est recommandé d'utiliser le wrapper malt-python qui adapte quelques configurations spécifiques à Python non encore automatiques.

malt-python ./script.py

# équivalent à 
malt --profile python-default ./script.py

# liste des profiles
malt --profile help

# Afficher le profile
malt-webview ./malt-script-py-6889.json

Profilage rapide

Notons que l'overhead de MALT est important en Python du fait du large nombre d'allocations générées par ce langage et de la méthode de résolution des piles d'appels pour retrouver les lignes dans votre code. Ces détails d'analyse peuvent être désactivés via :

# Désactivé complète de l'analyse des piles
malt-python -p python-no-stack ./my_script.py

# Analyse des piles par "sampling"
malt-python -p python-sampling ./my_script.py

Nouvelle interface

La version 1.6.0 arrive également avec une nouvelle interface graphique avec un code remis à jour
par rapport à sa version originale vieillissante.

Capture annotation python

Profil statique

Pour ceux qui voudraient échanger les profils avec d'autres sur d'autres OS, il est possible depuis la 1.6.0 de générer une version statique des pages de l'interface (hors annotation des sources et arbre d'appel navigable) via :

# Toues les pages possible en statique
malt-webview -static ./report malt-progr-123456.json

# Seulement la page de résumé.
malt-webview -static-summary ./report malt-progr-123456.json

Installation

MALT n'est pas encore disponible dans les distributions classiques, vous devez donc le compiler et l'installer à la main. Le nombre réduit de dépendances obligatoires en fait un outil relativement facile à installer.

On trouvera la procédure dans la documentation du projet.

Documentation

La documentation a été complètement ré-écrite et disponible sur le site officiel : documentation.

Outils similaires pour Python

Découvrir un outil est aussi l'occasion d'en découvrir d'autres. Restons dans le monde du Python, si MALT ne vous convient pas vous trouverez peut-être votre bonheur avec les outils suivants et complémentaires à MALT et eux totalement dédiés au Python toujours pour la mémoire :

  • Memray (Apache Public License 2)
  • Scalene (Apache Public License 2)

MALT se positionne par rapport aux deux présentés en apportant une analyse fine en annotant tout le source code de l'application. Il offre également une analyse des variables globales et TLS coté C/C++/Fortran/Rust.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  
❌