Vue lecture

Nouvelles de Haiku - Printemps 2026

Haiku est un système d’exploitation pensé pour les ordinateurs de bureau. Il est basé sur BeOS mais propose aujourd’hui une implémentation modernisée, performante, et qui conserve les idées qui rendaient BeOS intéressant : une interface intuitive mais permettant une utilisation avancée, une API unifiée et cohérente, et une priorisation de l’interface graphique par rapport à la ligne de commande pour l’administration du système.

Ce compte-rendu liste les principales modifications survenues en février, mars et avril. Ces changements sont numérotés de hrev59356 jusqu’à hrev59671 dans le code source de Haiku, soit environ 320 changements ce trimestre.

Les grosses nouveautés sont la disponibilité d’une version ARM64, l’accueil de 3 participants au Google Summer of Code et l’approche de la version beta 6, très attendue puisque la dernière version publiée, la beta 5, date de septembre 2024.

Sommaire

Portage de Haiku pour les architectures ARM64 et RISC-V

C’est la grosse nouvelle de ce trimestre : la version ARM64 de Haiku parvient enfin à lancer le Tracker et permet donc d’avoir un environnement fonctionnel !

Ce travail repose bien entendu sur les efforts de nombreux contributeurs par le passé pour mettre en place cette nouvelle architecture. Ces derniers mois, le travail a été complété par smrobtzz avec des corrections pour pouvoir compiler Haiku depuis macOS, des pilotes pour le port série S5L utilisé par Apple, une correction de l’adresse de base du noyau, la remise à 0 du frame pointer lors du début d’exécution du noyau, des corrections dans la gestion de la mémoire physique, ainsi que quelques correctifs dans l’espace utilisateur. SED4906 a également participé avec des corrections dans la gestion des pages mémoire du bootloader, ainsi que dans les vérifications de taille de pages du runtime_loader.

smrobtzz ne s’est pas arrêté là, il a ensuite ajouté la possibilité d’utiliser plusieurs cœurs et threads de processeur (SMP) et corrigé des problèmes de compatibilité avec la version du firmware EFI EDK2 fournie par défaut avec QEMU, ainsi que, entre autres, des problèmes avec la fonction system_time.

Une fois le système de base stabilisé, le travail s’est poursuivi du côté de Haikuports où smrobtzz et waddlesplah ont travaillé ensemble pour corriger de nombreux problèmes, en particulier sur les recettes de compilation croisée et le processus de “bootstrapping” qui permet de générer le jeu de paquets initiaux permettant d’exécuter Haiku. Les téléchargements de “nightly builds” pour ARM64 fournissent donc maintenant un système utilisable sur les machines ARM64 au moins dans QEMU.

Un fil de discussion sur le forum de Haiku permet de suivre l’évolution de ces développements. La prochaine étape est la compilation de toutes les applications disponibles dans Haikuports, la correction des problèmes que cela va immanquablement dénicher, et la stabilisation du système. Ensuite, le travail pourra se poursuivre pour rendre cette version de Haiku utilisable hors de QEMU sur du matériel réel.

Du côté de RISC-V, le portage de Haiku est un peu plus avancé depuis quelques mois déjà, et fonctionne sur certaines machines sans virtualisation dans QEMU. Ce trimestre, on voit donc seulement une correction de TODO dans le code pour le thread-local storage concernant l’utilisation de variables atomiques (waddlesplash).

Applications

TextSearch

TextSearch est une application de recherche de texte dans le contenu de fichiers. C’est l’équivalent graphique de la commande grep.

Désactivation de vérifications de types de fichiers redondantes pour accélérer l’application (Philippe Houdoin).

HaikuDepot

HaikuDepot est à la fois un gestionnaire de paquets et un magasin d’applications.

apl continue d’améliorer l’application HaikuDepot.

  • Modification du code de vérification des schémas JSON, en particulier pour préparer son intégration avec le code traitant les requêtes REST et pouvoir ainsi valider les requêtes et les réponses.
  • Correction d’un problème d’affichage de l’onglet “Featured packages” (avec une correction dans BTabView).
  • Refonte du code d’affichage des données dans la liste des paquets.

Software Updater

Software Updater est l’application permettant de télécharger et d’installer des mises à jour de paquets logiciels.

Correction d’un crash lorsque l’on quitte l’application pendant une mise à jour (Nathan242).

Ajout d’une option (activée par défaut) de nettoyage automatique des points de restauration anciens pour éviter de remplir le disque système avec des paquets obsolètes. La règle retenue est de conserver toujours au moins 10 points de restauration, et tous ceux qui sont plus récents que 30 jours (waddlesplash).

DeskCalc

DeskCalc est une calculatrice.

Nettoyage et améliorations du code de calcul en précision arbitraire (John Scipione).

Mail

Mail est le client email de Haiku. Il propose seulement l’affichage et la rédaction de mails : l’envoi et la réception sont traités par un service indépendant (mail_daemon), tandis que l’affichage de la boîte de réception est réalisé par des requêtes directement dans Tracker.

Humdinger s’est penché sur la gestion des mails avec plusieurs corrections et améliorations :

  • L’attribut thread est correctement enregistré sur les messages envoyés, ce qui permet de facilement les regrouper avec les messages reçus dans la conversation correspondante.
  • Quelques fichiers du code source n’étaient pas scannés par les outils de localisation, donc certains termes restaient invariablement en anglais.
  • Implémentation de labels, permettant d’étiqueter les messages avec des chaînes de caractères arbitraires. Auparavant, l’attribut statut était détourné pour ça, mais cela pose des problèmes lors de la synchronisation avec les serveurs IMAP, pour lesquels le statut du message a une signification bien spécifique. Les labels sont pour l’instant entièrement locaux et ne sont pas synchronisés avec le serveur de messagerie. Cette fonctionnalité comprend également un nouvel add-on pour le Tracker, permettant de facilement étiqueter un fichier.

La couleur du texte pour le corps des messages se met à jour immédiatement lors d’un changement des préférences de couleur du système (John Scipione).

Tracker

Tracker est le gestionnaire de fichiers de Haiku.

John Scipione continue son travail sur le Tracker :

  • L’aperçu des fichiers en cours de glissé-déplacé affiche maintenant les fichiers avec leur apparence « sélectionnée » (texte blanc sur fond noir), ce qui permet de garder le texte plus facilement lisible (bien que ce soit peut-être moins joli).
  • L’icône de la corbeille s’affichait parfois pleine alors qu’elle est vide ou inversement, suite à des problèmes de synchronisation de cache et de collecte des informations de l’état de la corbeille de chaque disque monté.

John a également supprimé du code obsolète et corrigé de très nombreux problèmes, par exemple avec le tri des fichiers, la gestion des images de fond dans les fenêtres, le copier coller…

Nathan242 a quant à lui corrigé un plantage lorsqu’on annule le vidage de la corbeille ainsi que des problèmes de formatage de l’indicateur du nombre de fichiers sélectionnés.

Madmax a fait en sorte que les raccourcis claviers pour les add-ons se mettent à jour immédiatement (et pas lors de l’ouverture d’un menu pop-up) lorsque les add-ons sont modifiés.

Waddlesplash a également fait quelques corrections mineures, dont une mérite une mention : une optimisation pour réduire le nombre d’appels système pour le node monitring (réception de notifications lorsque des fichiers sont modifiés).

StyledEdit

StyledEdit est un éditeur de texte de type « bloc notes ». Il permet d’utiliser du texte formaté (polices, couleurs…)

Lors de la création d’un nouveau document texte, le nom « Sans titre 1 », « Sans titre 2 », etc. est généré avec le plus petit nombre non utilisé. Auparavant, les numéros s’incrémentaient même si certains fichiers avaient entretemps été renommés ou fermés (x512).

CharacterMap

CharacterMap permet d’explorer le jeu de caractères unicode et d’y piocher des caractères intéressants.

Correction d’un bug dans la recherche par nom de bloc unicode, amélioration de la disposition des caractères, et diverses autres petites améliorations (madmax).

DeskBar

DeskBar est la barre des tâches de Haiku, permettant de naviguer entre différentes fenêtres et applications.

Ajout dans la fenêtre des préférences d’un sélecteur de coin (similaire à celui déjà utilisé pour les coins actifs dans les préférences des écrans de veille). Ceci permet d’améliorer la découvrabilité de la possibilité de déplacer la DeskBar à différents endroits sur l’écran, et est plus facile à utiliser que le “grip” de déplacement de la DeskBar elle-même, qui est tout petit (PulkoMandy, basé sur un ancien patch de mmu_man).

Terminal

Ajout d’une initialisation manquante pour la couleur du curseur, en particulier lorsque le Terminal est utilisé comme réplicant dans une autre application (JackBurton79, suite à l’utilisation du Terminal dans l’IDE Genio).

Utilisation de _exit au lieu de exit dans les processus fils lancés par fork() sans exec(). L’utilisation de exit appelle les destructeurs globaux dont la destruction de certaines ressources partagées avec le processus parent. C’est une difficulté du mélange des API graphiques de BeOS avec un modèle POSIX complet (waddlesplash). Le même problème a été également corrigé dans l’application Expander.

LaunchBox

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

Simplification du mécanisme d’enregistrement des paramètres. Auparavant, l’enregistrement était fait après un délai d’inactivité, pour éviter d’enchaîner plusieurs écritures sur disque à chaque modification de réglages. Il semble plus simple d’enregistrer les modifications tout de suite, et de laisser le cache disque faire son travail pour décider d’écrire ces changements sur disque tout de suite ou un peu plus tard (nephele).

MediaPlayer

Optimisation du code de lecture des fichiers de playlist pour lire le contenu des fichiers ligne par ligne, et pas caractère par caractère (mohammedrattia, dans le cadre de sa candidature au Google Summer of Code).

ActivityMonitor

ActivityMonitor affiche des graphes avec différentes statistiques d’utilisation de la machine.

Correction d’un bug lors de l’affichage des températures du système dans les cas où le pilote ne fournit pas de nom pour la température mesurée (OscarL).

WebPositive

WebPositive est le navigateur web de Haiku. Il utilise le moteur WebKit qui est un projet libre co-développé principalement par Apple (Safari), Sony (PlayStation), et Igalia (versions GTK et WPE).

Pour les téléchargements dont la taille est inconnue, affichage d’un « barber pole » au lieu d’une barre de progression bloquée à 100 % (YashSuthar983 dans le cadre d’une candidature au Google Summer of Code).

Lorsque WebPositive est quitté en fermant le dernier onglet ouvert, il ne restaure pas ce même onglet lors du prochain démarrage (nipos).

Suppression de code obsolète dans la barre d’onglets (nipos).

Devices

Devices affiche une liste du matériel présent sur la machine.

Les premiers patchs développés par Aquamatic dans le cadre de sa candidature au Google Summer of Code ont été intégrés ce trimestre :

  • Les périphériques peuvent être triés par bus (PCI, USB…) en complément des autres options déjà disponibles.
  • Nettoyage du code pour prendre en compte certains « TODO » listés dans le code de l’application.
  • Investigation et correction d’une fuite de mémoire.

Préférences de localisation

Modification de la localisation dans plusieurs applications pour s’assurer que le comportement de l’option « traduire les noms des applications » est respecté partout lorsque le nom de l’application est mentionné dans un autre texte (humdinger).

Préférences d’apparence

Retrait d’espacements inutiles et disgracieux dans la fenêtre (humdinger).

Outils en ligne de commande

Remplacement des fonctions fork et exec dans time_stats pour utiliser posix_spawn (waddlesplash). L’utilisation de fork et exec pour lancer des processus enfants est la méthode traditionnelle, la première mise en place dans UNIX. Elle pose des soucis de performance et cause des comportements problématiques. En particulier, de nombreuses ressources du processus parent sont conservées (descripteurs de fichiers ouverts, sémaphores…) alors qu’ils ne sont pas toujours nécessaires. La fonction posix_spawn permet un meilleur contrôle de ces comportements, tout en étant beaucoup plus rapide et plus simple à implémenter. Le sujet a conduit à plusieurs modifications dans d’autres parties du code, dont on reparle plus loin dans la dépêche.

pkgman propose maintenant une sous-commande cleanup pour le nettoyage des points de restauration. Contrairement à SoftwareUpdater, ce nettoyage n’est pas automatique, car cela rendrait l’utilisation de pkgman potentiellement trop destructrice. Cependant, un message s’affiche après l’installation de mises à jour indiquant le nombre de points de restauration qui peuvent être nettoyés (waddlesplash).

Amélioration de la commande ltrace, mais celle-ci est toujours un travail en cours et pas encore utilisable (waddlesplash).

Kits

Les APIs de programmation de BeOS et de Haiku sont implémentées en C++. Elles sont organisées en “kits” regroupant des fonctionnalités liées.

Application Kit

L'application kit comporte toutes les fonctions d’échange de messages entre applications et au sein d’une application.

Meilleure gestion d’un cas d’erreur dans BInvoker pour remonter l’erreur à la fonction appelante (korli).

Support Kit

Le support kit contient toutes sortes de fonctions utilitaires basiques : gestion des chaînes de caractères, parser JSON…

Ajout de tests unitaires pour la classe BStopWatch (priyanshu-gupta07).

La famille de fonctions string_for_size change d’unité lorsque la valeur atteint 1000 et pas 1024. Par exemple on affichera “0.9 Gio” plutôt que “1,000 Mio” (korli). Elles pré-initialisent certaines données au démarrage de l’application plutôt que de les recalculer à chaque appel, ce qui rend l’utilisation de ces fonctions beaucoup plus rapide (waddlesplash).

Les fonctions de géolocatisation BGeolocation utilisent maintenant les services de Beacon DB, suite à la fermeture de Mozilla Location Services (PulkoMandy).

Suppression des objets BLocker alloués statiquement à plusieurs endroits. Ils sont problématiques lors d’un fork : par défaut, les objets BLocker dans les deux processus résultants pointent vers le même verrou système, mais si l’un des deux processus s’arrête, il détruit le verrou et laisse l’autre dans un état incohérent. Dans ce cadre, ajout également de vérifications pour empêcher le processus fils de continuer à utiliser l’interface utilisateur ou même d’appeler la fonction exit() (waddlesplash).

Refonte des classes BBlockCache, BTokenSpace et BLooperList utilisées pour gérer des ressources diverses, en particulier dans BMessage : utilisation de locks moins lourds, suppression de sémaphores qui n’était pas nécessaires, optimisation des performances (waddlesplash).

Modernisation des tests unitaires du support kit, pour rendre plus facile l’ajout de tests supplémentaires (KapiX).

Optimisation des méthodes de recherches de BString (pour trouver un caractère, une sous-chaîne…) en utilisant les fonctions C prévues à cet effet dans la libc plutôt que des boucles écrites à la main (waddlesplash, avec des corrections de madmax).

Interface Kit

L'interface kit contient toutes les classes nécessaires à la réalisation d’interfaces graphiques.

Correction de l’utilisation de la touche “Suppr” dans une zone d’édition de texte lorsqu’il y a également un raccourci clavier de menu (même désactivé) associé à cette même touche (nathan242).

Optimisation des méthodes BView::FillStroke et FillPolygon dans leur variante recevant directement un tableau de points pour éviter de recopier ce tableau dans un objet temporaire (x512).

Correction d’incompatibilités avec BeOS dans le format d’enregistrement de BPicture (x512) :

  • pour l’enregistrement d’images bitmap,
  • le “cisaillement” (shear) des polices de caractères,
  • les sous-pictures,
  • les transformations affines,
  • les “échappements” (espacement des caractères) de texte,
  • et d’autres petits problèmes.

Ce format permet de stocker une suite d’instructions de dessin pour afficher quelque chose à l’écran. Il est parfois utilisé par certaines applications pour stocker des ressources dans un format vectoriel compact, c’est pourquoi le respect du format défini par BeOS est important.

Ajout d’une taille minimale pour les barres de défilement, pour qu’elles gardent une taille raisonable même si l’utilisateur choisit une taille de police de texte en dessous de 12pt. La taille de toute l’interface s’adapte automatiquement à ce choix, mais pas de façon linéaire (nipos).

Suppression d’une valeur présente en double dans le message « mouse idle » envoyé aux applications lorque la souris cesse de se déplacer (x512).

Correction du code de dessin des cases à cocher pour restaurer l’état initial de la vue dans laquelle le dessin est fait. Ce problème était visible en particulier dans WebPositive lors de l’affichage de cases au sein d’une page web (nephele).

Correction de la façon dont BButton initialise ses couleurs, pour correspondre au comportement de BeOS et corriger des problèmes avec les applications utilisant liblayout, en particulier Wonderbrush (PulkoMandy).

Deux modifications sur la gestion des raccourcis clavier :

  • Vérification des changements de raccourcis seulement lorsque c’est vraiment nécessaire. Cela est particulièrement visible dans Tracker où la plupart des raccourcis sont dynamiques (par exemple, actifs seulement si un fichier est sélectionné) (jscipione)
  • Remplacement du tableau simple utilisé pour stocker les raccourcis par un arbre binaire de recherche, permettant de trouver rapidement si une combinaison de touches est associée à un raccourci clavier (waddlesplash).

Storage Kit

Le storage kit permet l’accès aux systèmes de fichiers.

Ajout de la nouvelle macro _DEPRECATED pour signaler au compilateur de déclencher un avertissement si certaines fonctions sont utilisées (via l’option -Wdeprecated). Les premières méthodes à recevoir ce traitement sont dans BMimeType et BResources (waddlesplash).

Grosse optimisation du « renifleur MIME » qui analyse le contenu des fichiers pour déterminer leur type MIME. L’utilisation de fonctions POSIX optimisées (memmem entre autres) et d’autres améliorations rendent l’étape « mimeset'ing package contents » de la compilation de Haiku ou de paquets HaikuPorts au moins 10 fois plus rapide (waddlesplash).

Network Kit

Le network kit permet la programmation d’application communiquant en réseau.

Correction d’un bug dans BSecureSocket qui ne validait plus les certificats SSL suite à une erreur lors d’une modification précédente (Horizons).

Media Kit

Le media kit se charge des médias audio et vidéo.

Réparation de l’add-on média « mixeur vidéo » qui est maintenant disponible dans l’image de base. Il est surtout utile comme démonstration des possibilités du media kit (x512).

Serveurs

Les serveurs sont des applications lancées en tâche de fond et qui rendent différents services. Ils sont similaires aux “daemons” de UNIX.

app_server

app_server est le serveur graphique de Haiku.

Correction d’un crash lors de l’utilisation d’un dégradé de couleurs ne comportant aucune couleur (KapiX).

La taille indiquée aux accelerants pour les curseurs matériels n’était pas la bonne (Goldfish64).

Intégration de commits de versions plus récentes de AGG pour corriger des typos dans quelques fonctions (Coldfirex).

Correction de fautes de frappe détectées par codespell, un outil de vérification orthographique pour le code (korli). Ces modifications font suite à une mise à jour des règles de codage de Haiku pour spéficier que c’est l’orthographe américaine qui est préférée lorsqu’il y a des divergences avec l’anglais européen.

Ajout d’un nouveau mode de fonctionnement pour les accélerants où le framebuffer n’est accessible que par l’espace utilisateur. Pour l’instant, seuls les pilotes VESA et framebuffer sont concernés, mais les autres pilotes devraient être modifiés de la même façon, car il n’y a pas de raison pour le noyau d’accéder directement au framebuffer à part dans le cas d’un kernel panic, ce qui se fait de toutes façons par une autre méthode (waddlesplash).

launch_daemon

launch_daemon est l’application “init” qui se charge du démarrage des autres services et des sessions utilisateurs. Il joue un rôle proche de celui de systemd pour Linux ou de launchd pour Mac OS.

Retrait des utilisations de fork+exec dans net_server et launch_daemon au profit de posix_spawn. Amélioration du code qui interprète les variables d’environnement (waddlesplash).

Bluetooth

Le serveur bluetooth centralise toutes les opérations concernant les périphériques Bluetooth.

Les premiers patchs des candidats au Google Summer of Code font que les choses bougent à nouveau du côté du serveur Bluetooth !

Vighnesh Sawant a corrigé le traitement du message “inquiry result” lorsqu’un appareil fournit plusieurs réponses d’un coup (ce qui est possible d’après la spécification du Bluetooth). Il a également implémenté le traitement de nouveaux types de réponses contenues dans ce message, terminé le code nécessaire pour la procédure d’appairage basique, corrigé l’apparition de périphériques bluetooth en double, et encore d’autres problèmes. Il a aussi déplacé tout le code concernant l’appairage basique dans un fichier source séparé.

Mohammed Rattia a quant à lui nettoyé les fonctions de recherche du périphérique Bluetooth local, et réparé la compilation des tests unitaires liés au Bluetooth.

Enfin, shivamsinghydv a ajouté une validation de l’adresse MAC des périphériques lors de leur activation par le serveur Bluetooth et corrigé un crash.

Mail

Le serveur de mail se charge de l’envoi et de la réception de courrier électronique (POP, IMAP et SMTP). Les messages sont mis à disposition du reste du système sous forme de fichiers avec des attributs étendus.

Philippe Houdoin a fait quelques changements sur le client IMAP :

Vérification des informations CAPABILITY retournées directement en réponse à une commande IMAP LOGIN. Les capacités étaient récupérées séparément, mais dans certains cas le serveur envoie cette liste dès le début de la connection, afin de pouvoir informer de capacités qui influent le processus de login, par exemple.

Modifications de la réponse à la commande ID pour identifier clairement le client mail de Haiku lorsque le serveur demande qui on est.

Media

Le serveur média permet l’interfaçage avec la carte son, et les entrées et sorties vidéo s’il y en a.

Le mélangeur de sons n’est démarré que lorsqu’une application a besoin de jouer du son pour la première fois. Cela économise du CPU et de la batterie (puisque la sortie de la carte son peut être laissée en veille jusqu’à ce moment. Pour l’instant il n’y a pas encore d’arrêt du mixeur et de mise en veille de la carte son lorsque la lecture de son est finie, cela pourra être ajouté plus tard. Cela corrige également certains problèmes conduisant à l’erreur « performance time too large ! » suite à une vérification ajoutée il y a environ deux ans pour détecter des utilisations incorrectes du media kit (waddlesplash).

Pilotes matériels

Stockage

Le pilote virtio_block a été temporairement désactivé en préparation de la publication de la version beta 6 de Haiku. En effet, il semble causer des problèmes de corruption disque dans certains cas, sans que les développeurs de Haiku aient pu identifier pour l’instant la source du problème. Si vous utilisiez virtio_block, vous pouvez le remplacer par virtio_scsi qui fournit des fonctionnalités équivalentes mais avec un protocole de communication avec la machine hôte différent. Il faut donc par exemple modifier la ligne de commande de démarrage de QEMU (waddlesplash).

Ajout de paramètres manquants dans les APIs permettant de détecter les fonctionnalités disponibles pour les disques NVMe (feature management) (korli).

Amélioration de l’initialisation des périphériques connectés à un contrôleur SDHCI : désactivation des cartes dont la tension d’alimentation n’est pas compatible, et mise en place des premières étapes pour la communication avec les périphériques eMMC (Mahmoussam, dans le cadre d’une candidature au GSoC qui n’a pas pu être acceptée).

Réseau

Synchronisation des pilotes réseau avec la dernière version d’OpenBSD (waddlesplash).

Correction d’un bug dans le pilote USB ethernet qui causait un plantage de certains adaptateurs USB lors de la lecture de l’adresse MAC (smrobtzz).

Ajout de l’USB dans la couche de compatibilité avec FreeBSD, ce qui a permis de remplacer le pilote ASIX-USB développé spécifiquement pour Haiku par celui de FreeBSD, qui permet d’utiliser une plus large gamme d’adaptateurs utilisant un chipset ASIX (waddlesplash et smrobtzz).

Import du pilote zyd de FreeBSD sous le nom zydzifi1211 avec l’ajout des fonctions nécessaires dans la couche de compatibilité. Ce pilote est à la recherche de testeurs pour confirmer son bon fonctionnement (waddlesplash).

Affichage

Ajout des identifiants PCI pour une nouvelle génération de contrôleurs GART Intel, permettant de gérer le partage de la mémoire entre le CPU et le GPU (OscarL).

USB

Désactivation d’une optimisation « zéro copie » dans le pilote EHCI (USB 2). Cette optimisation semble déclencher des plantages ou des corruptions sur certaines machines (waddlesplash).

Virtualisation

Intégration d’une série de pilotes pour le virtualiseur Hyper-V : souris, heartbeat pour confirmer que le système virtualisé est toujours vivant, synchronisation de l’heure, pilote SCSI, et diverses couches basses nécessaires à tous ces pilotes (Goldfish64).

Gestion d’énergie

Correction de messages de debug dans le pilote AMD P-States. Correction de la compilation du pilote audio HDA lorsqu’il est compilé sans les logs de debug. Ce pilote émet de très nombreux logs au démarrage pour identifier la carte son et toutes ses capacités, il est donc parfois utile de désactiver ces logs pour travailler sur autre chose (OscarL).

Systèmes de fichiers

Les systèmes de fichiers semblent être une cible appréciée des contributeurs au Google Summer of Code : le périmètre est bien maîtrisé, et le gros du travail se situe au niveau des structures de données, qui sont enseignées dans la plupart des cursus scolaires en informatique.

Ceci explique une activité inhabituellement élevée dans ce domaine lors de la période de candidature. Cependant, les tâches les plus abordables ont déjà toutes été traitées, et aucun des dossiers de candidature reçus cette année dans ce domaine n’a été jugé de qualité suffisante pour embaucher un nouveau contributeur.

Packagefs

Packagefs est un système de fichier virtuel permettant d’accéder aux contenus des paquets installés sur le système. Cette approche permet d’utiliser les paquets logiciels sans avoir besoin de les extraire, et accélère considérablement l’installation et la désinstallation de logiciels.

Amélioration de la gestion du manque de mémoire RAM, pour favoriser un ralentissement du système plutôt que de déclencher des erreurs de lecture (waddlesplash).

NTFS

NTFS est le système de fichier utilisé par Windows.

Correction d’un crash lors de certaines erreurs de montage de partitions (waddlesplash).

BTRFS

BTRFS est un des systèmes de fichiers utilisés par Linux. Il offre de nombreuses fonctionnalités avancées dont le pilote pour Haiku ne sait que faire. Seule la lecture de fichiers classiques est possible.

Lecture des fichiers compressés avec ZSTD (Abdullah Zulfiqar).

Corrections de warnings du compilateur et de bugs potentiels (grep-name).

Ajout de vérification de validité et traitement des collisions de hash dans les recherches de fichiers dans des dossiers ; vérification que la taille des partitions est suffisante avant de formatter un disque en btrfs ; amélioration de certains cas de gestion d’erreur ; nettoyage et amélioration de commentaires (Anuj Billore).

XFS

XFS est un système de fichiers initialement développé pour IRIX mais dont le développement continue dans Linux. Il est une alternative populaire à ext4 pour ce dernier.

Plusieurs corrections par sleipbyte :

  • Correction d’une erreur de compilation
  • Implémentation de rewind_dir, qui permet au Tracker d’afficher le contenu des dossiers,
  • Correction d’erreurs SMAP (accès à la mémoire utilisateur par le noyau sans validation de pointeurs)
  • Amélioration de la détection des partitions
  • Reconnaissance de nouveaux drapeaux indiquant des fonctionnalités additionnelles dans XFS (le système de fichier continue d’évoluer dans son implémentation pour Linux)
  • Traitement d’un cas particulier pour la gestion des attributs étendus : leur absence peut être indiquée par un pointeur NULL ou une taille à 0.

NFS v2

NFS est un système de fichiers permettant d’accéder à des fichiers stockés sur un autre ordinateur.

Amélioration des logs d’erreur lorsqu’un volume NFS ne peut pas être monté (kallisti5).

Il existe un deuxième pilote plus récent mais qui reconnaît uniquement NFS version 4, malheureusement, certains NAS n’implémentent que la version 3…

FAT

FAT est un ancien système de fichiers utilisé par Microsoft, pour DOS et les premières versions de Windows. Il reste populaire sur certains périphériques de stockage amovible et comme dénominateur commun entre beaucoup de systèmes.

Correction d’un plantage qui pouvait survenir lors du formatage d’une image disque au format FAT (nathan242).

BFS

BFS est le système de fichiers de BeOS et de Haiku. Il a la particularité d’avoir une gestion poussée des attributs étendus, et la possibilité d’effectuer des requêtes sur ces derniers à la manière d’une base de données.

Corrections et améliorations par Waddlesplash :

  • Un plantage pouvait survenir lors de la vérification d’un système de fichiers corrompu,
  • Une division par zéro dans le parseur de requêtes (utilisé aussi par packagefs et ramfs),
  • Un break manquant qui pouvait déclencher un plantage du noyau (assertion ou même utilisation de mémoire libérée) lors de la suppression de plusieurs fichiers en parallèle,
  • Ajout de notifications de renommage et déplacement pour les requêtes “live” en même temps que celles envoyées pour le « node monitoring », afin que les résultats de requêtes restent bien synchronisés avec l’état du disque.

RAMFS

RAMFS est un système de fichiers stockant les données directement en RAM. Il permet un accès très rapide aux fichiers, mais il est non persistant, les données sont perdues en cas de coupure ou de redémarrage du système.

Réorganisation du code par waddlesplash :

  • Nettoyage du code pour tracer la taille des allocations,
  • Consolidation de la logique do « node monitoring »,
  • Correction des évènements « node monitor » sur les fichiers simples.

RAM disque

Le ramdisk n’est pas un système de fichiers, mais un périphérique de stockage de masse. Il peut être formaté avec n’importe quel système de fichiers.

Retrait de l’utilisation de l’ordonnanceur I/O et traitement direct des requêtes à la place. Cela contourne un bug de l’ordonnanceur dans le cas où la taille des secteurs du disque est plus large que les blocs du système de fichiers, ce qui force à écrire plusieurs blocs sur un secteur d’un seul coup. Ce problème ne se produit habituellement pas sur d’autres supports de stockage (la taille des secteurs étant habituellement de 512 octets dans les autres cas). L’ordonnanceur sera tout de même corrigé plus tard, pour permettre son utilisation dans d’autres cas où il est pertinent et dans ce cas de figure, comme les flash NAND accessibles sans contrôleur de haut niveau (nathan242).

Réseau

Correction d’une fuite de sockets dans la pile Bluetooth (Vighnesh Sawant).

Activation du code permettant de charger des modules pour le résolveur DNS nsswitch dans libnetwork. Cela permettra par exemple de charger le module mDNS (aussi connu sous le nom de Avahi pour Linux ou Bonjour pour Mac OS) pour la résolution des noms de machines sur le réseau local (Philippe Houdoin).

Vighnesh Sawant a également ajouté la possibilité d’utiliser l’option AI_V4MAPPED au résolveur DNS.

Ajout de la notification de l’erreur B_SELECT_DISCONNECTED (correspondant à l’erreur POSIX POLLHUP) dans les notifications sur les sockets, corrigeant ainsi un cas de test de compatibilité BSD (waddlesplash).

libroot

libroot est l’implémentation de la librairie C standard de POSIX. Elle regroupe les fonctions habituellement réparties entre les libc, libm et libpthread sur les systèmes UNIX classiques.

Remise en place de code spécifique par architecture dans printf qui avait été incorrectement enlevé. Cela corrige des plantages dans certains cas spécifiques (waddlesplash).

Ajout de la définition de GETENTROPY_MAX qui était manquante dans limits.h (korli).

Implémentation de la réservation d’espace d’adresse pour le tas du runtime_loader. Ceci évite la fragmentation de l’espace mémoire et améliore les performances, en particulier lorsque l'ASLR est désactivé (Amir Ramez, dont c’est la première contribution).

Réécriture de l’implémentation de pthread_barrier pour utiliser moins d’appels systèmes, corriger des problèmes de synchronisation, et au final éliminer un blocage qui survenait dans des applications utilisant OpenGL (waddlesplash).

Remplacement de l’implémentation de strchr et de strcpy par des versions plus optimisées venant de la bibliothèque musl (waddlesplash).

Correction d’un plantage lors de l’utilisation des allocateurs mémoire “debug” ou “guarded” dans libroot, qui était causé par des changements sur l’ordre d’initialisation des données de localisation (waddlesplash).

Correction d’incompatibilités dans l’implémentation de kqueue, en particulier, la fermeture d’un descripteur de fichier surveillé déclenchait une notification alors que ce n’est pas le cas dans les implémentations BSD (waddlesplash).

Renommage de PTHREAD_RECURSIVE_MUTEX_INITIALIZER pour ajouter le suffixe _NP. La constante porte ainsi le même nom que dans glibc par exemple, indiquant clairement qu’il s’agit d’une extension non-POSIX (waddlesplash).

Remise en place d’une prise en charge multi-plateforme pour le type long double de 128 bits. Le code de glibc pour cela avait été supprimé lors d’un précédent nettoyage car les plateformes x86 utilisent un format à 80 bits. Cela devrait corriger des plantages sur ARM64 et RISC-V lors de l’utilisation de ce type de valeurs (waddlesplash suite à l’investigation de smrobtzz). Bien que le problème eût déjà été signalé lors de la suppression du code concerné, à l’époque il n’y avait pas d’architecture fonctionnelle permettant de prouver la présence du problème.

Ajout d’un wrapper pour la fonction sigaction dans le « POSIX error mapper », qui permet de faire fonctionner des applications dépendant du fait que les valeurs de errno sont positives (contrainte apparue dans les versions récentes de POSIX, mais impossible à satisfaire tout en conservant la compatibilité avec BeOS) (korli).

Réparation de POSIX_SPAWN_SETSID, qui ne fonctionnait pas (waddlesplash).

Noyau

Le noyau de Haiku est un noyau monolithique assez classique. Il offre la possibilité de charger des modules, et une attention particulière est apportée à conserver le mieux possible l’API définie entre le noyau et les modules, rendant assez facile le développement de modules (tels que des pilotes de périphériques) indépendamment du noyau.

Gestion des hôtes Hyper-V : calibration TSC spécifique et pilote VMbus (Goldfish64 dont c’est la première contribution).

Amélioration du suivi des mutex de l’espace utilisateur dans le noyau, pour rendre les problèmes moins faciles à déclencher et plus faciles à rattraper (waddlesplash).

Korli a corrigé des problèmes détectés par les tests du langage Go :

  • Lors de la création d’un fichier qui impose de traverser un lien symbolique vers un dossier qui n’existe pas encore,
  • Dans la gestion des paquets réseaux, où une gestion de taille de tampon mémoire utilisait des valeurs incohérentes.

Retravail en profondeur des messages SMP (à la base de toute la mécanique de synchronisation de l’exécution du code entre différents threads et cœurs de CPU) : réduction des attentes actives en utilisant rw_spinlock au lieu de spinlock simples, envoi de messages à seulement certains cœurs plutôt qu’en broadcast, traitement des messages reçus par un cœur avant d’attendre la réception des messages envoyés aux autres, suppression d’opérations atomiques inutiles, etc. (waddlesplash). Ces changements ne semblent pas régler les gros problèmes de performance observés avec ce code lors de l’utilisation de Haiku dans VirtualBox, qui reste donc non recommandé pour utiliser Haiku.

Activation de l’utilisation de certaines fonctions “builtins” du compilateur dans le noyau. Le noyau est compilé avec l’option -freestanding pour indiquer au compilateur qu’il ne s’agit pas d’un environnement d’exécution standard, en espace utilisateur et avec une bibliothèque C. Cette option empêche le compilateur de supposer qu’une fonction nommée memcpy (par exemple) a un comportement spécifique et peut être remplacée par une implémentation accélérée. Cela limite les possibilités d’optimisation. Pour éviter ce problème, il faut appeler explicitement les fonctions built-in du compilateur qui implémentent ces opérations, ce qui se fait via des manipulations du préprocesseur C. Les noyaux Linux et FreeBSD ont déjà mis en place cette solution, et maintenant Haiku applique la même solution (waddlesplash).

Correction d’un problème d’initialisation de IO-APIC sur certains systèmes avec un bus PCIe (Goldfish64).

Optimisation de fonctions liées à la gestion de la swap (waddlesplash). Retravail de la gestion des allocations pour améliorer la stabilité et les performances lorsque la mémoire swap est utilisée (ce patch était en test depuis plusieurs mois afin de trouver un maximum de bugs avant de le fusionner, et de ne pas trop déstabiliser les nightly builds). Nettoyage du code vérifiant les permissions d’accès à la mémoire et la protection (en lecture ou en écriture).

Modification de l’initialisation des tas d’allocation mémoire du noyau pour permettre d’activer les modes “debug” ou “guarded” avec une option du menu de démarrage (sans devoir recompiler le noyau). Ainsi les utilisateurs peuvent facilement activer ces options pour aider à l’investigation de problèmes de corruption de mémoire qui ne se reproduisent que sur leur machine (waddlesplash).

Correction de problèmes de synchronization entre le cache de mémoire virtuelle et les opérations sur le système de fichiers, qui pouvait aboutir à un blocage complet du système. Ajout d’un test unitaire pour ce cas particulier (waddlesplash).

Réorganisation de la mémoire allouée pour le SMP (multiprocesseurs), pour éviter d’allouer un grand nombre de variables atomiques dans la même ligne de cache CPU (problème de "false sharing »). (waddlesplash)

Découpage des fichiers de code “VM” (gestion de la mémoire virtuelle) dans des fichiers de taille raisonable, par exemple pour le code d’initialisation et le « page writer ». Déplacement du code de notification de page occupée, suppression d’un champ inutile dans les page queues. Waddlesplash poursuit ce travail avec une refonte du page writer, qui n’est pas encore mergée pour l’instant.

Gestion des ASIDs dans les TLB

Ce sujet avait été discuté il y a quelques années dans le cadre d’un début de participation au Google Summer of Code qui n’avat pas abouti. Il est revenu à la surface suite à une série d’article « The Gerrit Code Review Iceberg », qui explore les patchs et changements abandonnés par leurs auteurs respectifs sur la plateforme de revue de code Gerrit (plus de 300 changements en attente). L’un des changements listés a attiré l’intérêt de SED4906 qui s’est penché sur les ASIDs. Le sujet est un peu technique et mérite quelques explications.

Pour gérer la mémoire virtuelle, on utilise une structure appelée TLB. C’est cette structure qui permet de faire correspondre une adresse en mémoire physique à une adresse en mémoire virtuelle, et également de gérer les permissions d’accès (lecture, écriture ou exécution) sur cette mémoire. Ces informations sont stockées en RAM et, pour gérer les vastes quantités de mémoire sur les machines modernes, peut comporter jusqu’à 5 niveaux d’indirection.

Si chaque accès mémoire devait traverser ces 5 niveaux pour trouver l’adresse physique à accéder, le système serait extrêmement ralenti. Le processeur inclut donc un cache spécifique dans lequel sont stockées les entrées TLB les plus récemment utilisées. Ainsi, la plupart des accès sont résolus très rapidement à l’aide de ce cache et l’impact de la mémoire virtuelle sur les performances est faible.

Cependant, ce cache crée un autre problème : lors d’un changement de contexte (exécution d’un autre processus par le processeur par exemple), il faut prendre garde à vider ce cache. Sans quoi, le nouveau processus pourrait accidentellement accéder aux données de l’ancien, suite à la mise en cache des mauvaises données. La solution traditionnelle à ce problème est de vider ce cache à chaque changement de contexte, c’est-à-dire plusieurs centaines de fois par seconde. Un processus interrompu, même brièvement, va donc se retrouver lorsqu’il reprend son exécution avec un cache vide, et les premiers accès à la mémoire seront donc fortement ralentis.

Une solution plus récente est l’utilisation d'ASIDs dans la table des pages. Cela signifie que, dans le cache TLB, chaque entrée va stocker non seulement l’adresse physique et les permissions, mais aussi un identifiant du processus auquel ces informations sont associées. Ainsi, lors d’un changement de contexte, il n’est plus nécessaire de vider le cache. Le nouveau processus disposant d’un ID différent, il ne va pas utiliser les entrées présentes pour un autre processus. Et si le processus initial reprend son exécution, il trouvera une partie du cache déjà préchargée avec ses informations.

Des identifiants spéciaux peuvent également être utilisés, par exemple pour l’espace mémoire du noyau. Cela permet de conserver dans le cache TLB toutes les entrées correspondant au noyau, qui sont utilisées lors des appels système peu importe le processus en cours d’exécution.

Le patch implémentant les ASIDs pour les processeurs x86 est encore en cours de développement. Mais la discussion autour de ces changements a déjà conduit à l’intégration de deux modifications plus simples:

  • Lors de la synchronisation entre CPU : par exemple si plusieurs threads (partageant le même espace mémoire) s’exécutent sur des cœurs de processeur différents, il est nécessaire de synchroniser les caches TLB des cœurs de processeur correspondants. Pour ce faire, les processeurs s’envoient des messages s’informant mutuellement de la nécessité de vider le cache TLB. Ce message peut être reçu alors que le processus en cours d’exécution a déjà changé, et dans ce cas, il déclenchait inutilement une vidange du cache supplémentaire (waddlesplash).
  • Il y avait d’autres problèmes dans l’implémentation spécifique aux processeurs x86. Les mesures de performances sur le patch avec activation des ASIDs (dans plusieurs versions) ont conduit à récupérer certains correctifs améliorant les performances sans nécessiter l’activation des ASIDs (SED4906 et waddlesplash).

Sur les processeurs x86, l’utilisation d’ASIDs est entièrement optionnelle. Ce n’est pas le cas sur d’autres architectures comme SPARC, où leur intégration dans le processeur est beaucoup plus profonde, avec par exemple des instructions permettant de travailler avec plusieurs espaces d’adressage simultanément.

Chargeur de démarrage

Correction d’un problème avec la fonction pour “bloquer” des fichiers (par exemple désactiver des pilotes de périphériques empêchant le démarrage) pour traiter correctement les noms de fichiers contenant des espaces (madmax).

Correction d’une fuite de mémoire dans le code affichant l’écran de démarrage. La mémoire était bien libérée lors du démarrage du noyau, mais seulement après avoir été tranférée du bootloader vers le noyau ce qui complique et rallonge inutilement la procédure de démarrage (waddlesplash). Augmentation de la taille de la zone de mémoire contenant les arguments du noyau, qui pouvait se remplir dans certains cas particuliers comme les images “bootstrap”.

Système de build

Forçage de la compatibilité C89 lorsqu’on compile GCC 2 avec les versions récentes de GCC. GCC 2 est toujours utilisé dans Haiku pour assurer la compatibilité avec BeOS. Il n’est pas possible de le compiler avec un compilateur s’attendant à trouver du code compatible avec les versions actuelles du langage C (korli, waddlesplash, kallisti5). La plateforme d’intégration continue a ensuite pu être mise à jour vers une version de Linux qui fournit GCC 14.

Activation de l’option de compilation -Werror pour un plus grand nombre de dossiers, en particulier netfs, et les pilotes graphiques radeon et s3 (fruitdelapassion). Cette option demande au compilateur de déclencher une erreur de compilation, plutôt qu’un simple avertissement, pour un certain nombre de problèmes. Ainsi, on s’assure que les développeurs ne passent pas à côté d’un problème qui aurait pu être détecté tout de suite. La prochaine étape sera d’inverser la logique pour cette option : l’activer par défaut pour tous les dossiers, et la désactiver explicitement lorsque c’est absolument nécessaire, par exemple pour du code importé d’autres projets pour lequel il est préférable de limiter les modifications.

KapiX a démarré un chantier d’amélioration du système de tests unitaires afin de rendre plus facile l’ajout de nouveaux tests, réduire la quantité de code à écrire pour faire fonctionner un test, et encourager les autres développeurs à écrire des tests :

  • Correction de la compilation des tests existants (kernel, app_server, libroot…)
  • Définition d’un nouveau type d’image “test” contenant les tests unitaires et un serveur SSH. Cette image peut être générée par la CI, puis démarrée dans une machine virtuelle pour lancer les tests
  • Désactivation des tests qui ne fonctionnent pas au point de provoquer un plantage irrécupérable.

Ajout d’un fichier de prédéfinition des paramètres POP/IMAP pour l’hébergeur disroot.org (humdinger).

Correction de la compilation de libroot avec le compilateur clang (nephele).

Nettoyage des Jamfiles, où du code exécuté en espace utilisateur employait les en-têtes normalement réservés au noyau. Les fichiers qui étaient souvent utilisés dans les deux espaces ont été déplacés dans un dossier commun (waddlesplash).

Modification de la gestion de errno dans libroot_build (la couche de compatibilité qui implémente des fonctions spécifiques à Haiku sur un système hôte utilisé pour la compilation croisée). Dans certains cas, la valeur de errno n’était pas bonne, ce qui créait des problèmes de comportement dans mimeset et dans d’autres outils utilisés lors de la compilation (waddlesplash).

Ajout d’un harnais fs_shell pour le système de fichiers ExFAT. Cela permet de tester le code du système de fichiers hors de Haiku, dans une interface en ligne de commande permettant de réaliser des opérations simples (Halonix).

Ajout d’un message d’avertissement dans la sortie de ./configure si certaines bibliothèques nécessaires à la compilation de Haiku ne sont pas disponibles (nephele).

Correction de diverses mauvaises orthographes pour le mot “unknown” un peu partout dans le code (SED4906).

Suppression d’un fichier temporaire qui était accidentellement laissé en place lors de la génération d’une image “MMC” (contenant un chargeur de démarrage pour une platforme ARM). Certains utilisateurs ont confondu ce fichier avec l’image finale et ont eu du mal à démarrer Haiku à cause de ce problème (waddlesplash).

Documentation

La documentation de Haiku est séparée en 3 parties:

  • Un guide de l’utilisateur, présentant les différentes applications, raccourcis clavier…
  • Le « Haiku Book », une référence des API pour les développeurs d’applications,
  • Une documentation “interne”, pour les développeurs qui travaillent sur le système d’exploitation lui-même.

La première est traduite dans plusieurs langues, tandis que les deux autres sont actuellement disponibles uniquement en anglais.

Haiku Book

Le Haiku Book est actuellement à utiliser en complément du Be Book, son équivalent rédigé pour BeOS. Haiku a obtenu l’autorisation de distribuer des copies du Be Book, mais avec une license n’autorisant pas les modifications. Cela veut dire que le Haiku Book doit être réécrit de zéro. Les efforts ont donc été mis en priorité sur les nouveautés de Haiku, et la documentation des parties reprises de BeOS arrive petit à petit.

Ajout de documentation pour B_QUERY_WATCH_ALL qui devient une API publique. Ce flag permet de générer une requête sur le système de fichier et de recevoir des notifications du node monitor lorsque les fichiers trouvés par la requête sont modifiés, même si la modification n’entraîne pas un ajout ou une suppression du fichier des résultats de la requête. C’est l’équivalent de B_WATCH_ALL qui existait déjà pour le node monitoring sur un dossier classique (waddlesplash).

Ajout de documentation pour des classes liées à l’utilisation du réseau : BCertificate, BProxySecureSocket, BSecureSocket et BSocket (cafeina).

Gros nettoyage et amélioration de la documentation de BEntry et BStatable. Ajout d’une remarque sur MenusBeginning dans la documentation de BWindow (John Scipione).

Documentation pour les développeurs

La documentation interne est un projet plus récent. Elle est construite à partir de documents, d’articles et de messages de mailing list écrits au cours du temps par les développeurs de Haiku, dans le but de mieux structurer ces connaissances et de décharger le site web principal du projet, qui avait initialement accueilli ce type de documents au début du projet. Aujourd’hui, il serait plus intéressant d’avoir un site web plus centré sur l’utilisation de Haiku que sur son développement, mais il ne faudrait cependant pas perdre ces informations, soit pour leur intérêt technique, soit pour leur intérêt historique et la vision qu’elles donnent sur les débuts du projet.

Clarification d’un paragraphe incompréhensible dans la documentation du device manager (OscarL).

Mise à jour de la documentation sur l’implémentation de la mémoire swap et suppression de vieux documents sur la VM (gestion de la mémoire virtuelle) qui ne correspondait plus du tout à l’implémentation actuelle (waddlesplash).

C’est pour quand la bêta 6 ?

Waddlesplash inclut ce paragraphe dans les rapports d’activités mensuels. Le mieux pour se rendre compte des avancées est de reprendre tel quel les commentaires des 3 derniers mois :

Février

On s’approche !

Un gros changement sur la gestion de la mémoire qui corrige une méchante régression est en attente de revue depuis plus d’un mois mais aucun développeur ne semble disponible pour le relire.

Du côté du Tracker, la plupart des régressions sont corrigées, mais il en reste encore quelques-unes.

En dehors de ces deux gros sujets, il n’y a plus que 5 ou 6 bugs et régressions qui doivent absolument être corrigées, mais certaines d’entre elles promettent d’être des sujets compliqués qui vont demander un peu de temps.

Mars

C’est pas pour tout de suite !

Il y a un problème de rafraîchissement de l’affichage dans WebPositive qui bloque le processus de release. Une bonne partie des autres problèmes sont corrigés.

Avril

Pas encore !

Le problème dans WebPositive (dans HaikuWebKit, en fait) a été corrigé, mais il y a maintenant un problème pour télécharger les sources de HaikuWebKit depuis son nouvel hébergement sur Codeberg depuis les machines de build de Haikuports (le fichier est assez gros et déclenche un timeout du côté de Codeberg).

Et de toutes façons, il reste encore quelques bugs du côté de Haiku lui-même à traiter aussi.

On peut également jeter un oeil sur l'outil de suivi des bugs pour voir où on en est. Au moment de la rédaction de ce rapport, il reste 25 tickets ouverts dans le jalon beta 6, dont 3 de priorité critique :

  • Un problème de texte illisible lorsqu’on fait un glisser-déplacer d’un grand nombre de fichiers dans le Tracker,
  • Le mode « économie d’énergie » du scheduler empêche le fonctionnement de certains claviers et trackpads,
  • La fenêtre de sauvegarde de fichiers a des problèmes de mise en page, parfois les contrôles de la fenêtre sont superposés

Google Summer of Code

Haiku fait de nouveau partie des organisations sélectionnées cette année pour encadrer quelques participants au Google Summer of Code.

Une quarantaine de candidatures ont été reçues, dont une grande partie ont été assez rapidement éliminées : hors sujet, ne respectant pas le format demandé ou ne comprenant pas une contribution au code par exemple. Le projet Haiku s’en sort plutôt bien, là ou d’autres organisations plus reconnues ont reçues plusieurs centaines de propositions.

Finalement, étant donné le petit nombre de “mentors” disponibles pour encadrer les participants, seulement 3 participants ont été retenus cette année grâce à leur travail de très bonne qualité avec plusieurs patchs déjà intégrés avant même la fin de la période de candidature.

Aquamatic sera encadré par KapiX et Korli, et va améliorer l’application “Devices” (gestionnaire de périphériques), en particulier pour indiquer clairement les périphériques pour lesquels un pilote est disponible ou non.

Mohammed R. Attia et Vighnesh Sawant seront encadrés par Waddlesplash, Scottmc et PulkoMandy. Ils vont poursuivre l’implémentation du Bluetooth dans Haiku. Mohammed se concentre sur les périphériques HID (claviers et souris sans fil) tandis que Vighnesh se chargera du profil audio HFP et, si le projet avance bien, des autres profils audio de meilleure qualité.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Rencontres Scenari 2026 à Aix-en-Provence du 22 au 26 juin 2026

Bandeau des Rencontres Scenari 2025

Comme chaque année, l'association Scenari organise ses Rencontres Scenari.

Scenari, c'est un ensemble de logiciels libres dédiés à la création collaborative structurée, et publication/diffusion de contenus multimédias et multisupports. Ils sont très utilisés dans le domaine de la formation et de la documentation, mais servent aussi pour l'audiovisuel, la qualité, ou même la biologie, …

Les Rencontres Scenari 2026, c'est l'occasion de découvrir ces outils et comment ils peuvent améliorer vos contenus et vous faire gagner du temps dans leur création. C'est aussi l'occasion de connaître de nouvelles fonctionnalités et de nouveaux usages grâce à des ateliers, des conférences, et bien sûr les moments "informels".

Cette année c'est l'ENSAM Aix-en-Provence 🌞 qui reçoit la communauté, du 22 (après-midi) au 26 (matin) juin 2026.

🤔 Vous avez entendu parler de Scenari et souhaitez en savoir plus ?
💪 Vous utilisez Scenari et souhaitez parfaire votre connaissance ?
💡Vous voulez piocher de bonnes idées et rencontrer des gens travaillant sur les mêmes problématiques que vous ?

➡️ Alors rejoignez-nous aux Rencontres Scenari 2026, du 22 au 26 juin, à Aix-en-Provence !

⚠️ Tarif spécial "prévente" jusqu'au 24 mai !!

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Nouvelle version du Bureau Agnostep pour les 35 ans de GNUstep

Comme vous le savez sans doute, cette année est marquée par les 35 ans de GNUstep, qui est à la fois un cadre logiciel qui permet de développer en objective-C des applications portables sur Windows, MacOS et GNU/Linux, mais aussi un environnement d’exécution (runtime) de ces mêmes applications.

Plusieurs projets de bureau compatibles avec GNUstep existent depuis quelques années: après les défunts Simply-GNUstep et Étoilé, citons les actifs GSDE développé par Ondrej Florian ou encore le plus ambitieux NEXTSPACE de Sergii Stoïan, qui tend à reproduire fidèlement l’ergonomie d’OPENSTEP sur BSD ou GNU/Linux. Plus récemment, dans un style plus proche de MacOS, citons également les prometteurs bureaux Gershwin (pour Xorg) ou Ambrosia (pour Wayland) développé par James Carthew.

Le bureau Agnostep propose sa version BETA 2.0.0, dans un style plus classique, avec des menus verticaux à la NeXT, combinant Window Maker et GWorkspace, ainsi que le runtime classique de GNUstep.

Il n’en propose pas moins un thème moderne inspiré par le jeu d’icônes du projet Papirus. Bien que fondé sur une distribution Debian Lite, il ne fournit pas de paquets, mais un principe d’installation proche des ports BSD. Un assistant facilite l’installation initiale comme l’ajout d’applications supplémentaire afin de fournir les versions les plus récentes des applications de la communauté GNUstep, compilées depuis les sources. En effet, contrairement à d’autres projets qui divergent parfois tellement des sources originales, qu’il devient impossible de les reverser dans le lot commun, la philosophie d’Agnostep est d’échanger patiemment avec la communauté des développeurs afin que les problèmes constatés et les améliorations bénéficient à tout le monde.

De plus, ayant résolu certains problèmes de la version précédente, il présente une meilleure stabilité. Outre les applications notoires de l’écho-système GNUstep, comme GNUMail, SimpleAgenda, etc., il offre également une nouvelle collection d’applications GNUstep originales créées dans ce but afin de proposer une expérience utilisateur plus cohérente:

  • Meteo.app : une application dockée qui affiche aussi la date courante. Basée sur l’API wttr.in API d’Igor Chubin.
  • UpMem.app : affiche la durée d’exécution l’usage de la mémoire.
  • Updater.app : une application dockée avec un badge de notification pour alerter en cas de paquets Debian susceptibles de mise à jour. Ce qui permet aussi d’effectuer la mise à jour effective à partir de la liste affichée de ces paquets
  • Birthday.app : une application dockée avec un badge pour informer des événements familiaux. Un incontournable pour le grand-père de nombreux petits-enfants.
  • OpenDisk.app : ouvre les dossier media où sont montés les disques amovibles : un compagnon de wmudmount et de udisks2, en se dispensant d’afficher le bureau de GWorkspace.
  • Launcher.app : un moyen rapide d’afficher le dossier des applications dans une nouvelle fenêtre.
  • ScreenLock.app : un simple verrouilleur d’écran fondé sur xtrlock.
  • Pass.app : une interface GNUstep au programme Unix Password Manager donnant accès au coffre local des mots de passe.
  • Mixer.app : une version simplifiée et compatible ALSA du mixer dérivé de VolumeControl.
  • AgnostepManager.app : un assistant dans la compilation et l’installation d’applications supplémentaires : applications courantes, utilitaires, jeux, outils de développement.
  • Dico.app : un service et un outil de recherche dans un Dictionnaire français fondé sur le DVLF de l’Université de Chicago.
  • SaveLink.app : un gestionnaire de raccourcis Internet. Voyez le dossier des Favoris.

À partir de cette version, les manuels d’aide (format .help) seront fournis avec chaque application concernée grâce aux améliorations récentes de l’application HelpViewer. Autre exemple qui illustre les fructueux échanges avec la communauté.

Bureau Agnostep en version 2

Agnostep est initialement développé sur un Raspberry Pi 500, mais son code permet de l’installer sur n’importe quel ordinateur susceptible d’accueillir la distribution GNU/Linux Debian : d’où son nom. Agnostep est un téléscopage de agnostique et GNustep.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Fedora Linux 44 est dans les bacs

En ce mardi 28 avril, les utilisateurs du Projet Fedora seront ravis d'apprendre la disponibilité de la version Fedora Linux 44.

Fedora Linux est une distribution communautaire développée par le projet Fedora et sponsorisée par Red Hat, qui lui fournit des développeurs ainsi que des moyens financiers et logistiques. Fedora Linux peut être vue comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.

Bureau GNOME

Sommaire

Expérience utilisateur

L'environnement de bureau GNOME est proposé dans sa version 50.

Après avoir introduit lors de la version précédente un moniteur du temps d'écran dans le panneau de configuration, ce menu s'étoffe avec la possibilité de configurer un réel contrôle parental. Ainsi il est possible de verrouiller l'écran automatiquement après un temps passé dans la journée sur l'ordinateur ou après une certaine heure. Il reste possible d'étendre l'usage de l'ordinateur manuellement en cas de besoin après validation par l'administrateur.

Côté accessibilité, le lecteur d'écran Orca se dote d'un rafraîchissement de son outil de configuration pour être aligné avec l'apparence des autres applications GNOME. Par défaut ses paramètres sont également globaux, évitant de devoir reconfigurer le lecteur d'écran pour chaque application bien que des personnalisations précises restent possibles application par application si nécessaire. Il est aussi possible de réduire les animations dans l'interface de GNOME pour éviter les distractions pour ceux qui en souffriraient.

Le lecteur de documents se dote, enfin, d'une possibilité d'annoter les documents autrement qu'en ajoutant un champ de texte dans une zone précise. Il est possible de surligner ou de tracer des lignes au sein du document et de varier le style de l'ensemble au gré des besoins.

Le navigateur de fichiers quant à lui continue dans l'amélioration des performances et de la stabilité, que ce soit un chargement des miniatures et icônes de documents plus rapide, ou une consommation moindre de mémoire pour l'application en général. Côté fonctionnel, le renommage de fichiers en masse a une interface plus claire et il est possible lors de la recherche de fichiers de sélectionner simultanément plusieurs filtres.

En terme de performances, pour ceux qui utilisent une session distante de GNOME la carte graphique de la machine qui reçoit le flux vidéo est sollicitée pour le décodage ce qui rend l'expérience bien plus fluide tout en consommant moins d'énergie. Pour ceux utilisant une carte graphique Nvidia l'expérience devrait être également plus stable par rapport aux versions précédentes. Il est possible de coupler l'accès distant avec une authentification Kerberos, de même il peut être exploité même si la session a été démarrée depuis un ordinateur sans écran tel un serveur.

Il y a eu de nombreuses améliorations pour l'affichage à fréquence variable et l'affichage avec mise à l'échelle fractionnée. Si ces fonctions étaient déjà activées dans Fedora, pour ceux bénéficiant d'un matériel compatible, elles bénéficient d'une plus grande stabilité. Les possesseurs d'une carte graphique Nvidia devraient également noter une plus grande fluidité dans l'interface. Le partage et la capture d'écran peuvent prendre en compte l'affichage HDR pour avoir le même rendu que sur l'écran physique. Enfin GNOME prend en charge le protocole des couleurs v2 de Wayland afin d'être compatible avec les évolutions futures des applications graphiques qui peuvent en faire un usage fin comme un éditeur d'images.

Le calendrier continue sa mutation. Dans un contexte professionnel, il permet maintenant de voir, pour un événement donné, qui a reçu l'invitation et parmi ces invités, lesquels doivent obligatoirement être présents. L'interface pour ajouter rapidement un nouvel événement a été revue pour être plus intuitive. Il est dorénavant possible d'exporter un calendrier complet avec le format ICS au lieu d'un événement seulement. L'interface prend en compte maintenant les paramètres régionaux concernant le premier jour de la semaine.

D'ailleurs il est possible au niveau de GNOME de changer ce paramètre du premier jour de la semaine. Pour les paramètres, les entrées et sorties sonores sont dissociées pour identifier clairement si on contrôle le volume d'une entrée ou d'une sortie audio.

Bureau Plasma

Les variantes de Fedora reposant sur l'environnement KDE Plasma utiliseront le configurateur Plasma Setup pour la post installation de manière analogue à GNOME avec GNOME init setup. Cet utilitaire a été récemment introduit avec KDE Plasma 6.6. Les étapes redondantes au niveau d'Anaconda sont supprimées pour une plus grande cohérence. Ainsi les images Live comme non Live fourniront la même expérience ce qui sera particulièrement visible pour ceux utilisant la variante KDE Plasma Mobile. Et comme pour GNOME, il devient possible d'installer Fedora en mode OEM, où le système peut être installé et le premier utilisateur peut créer son compte et le configurer à sa guise sans nécessiter un compte factice à l'installation.

De même ces variantes utiliseront Plasma Login Manager (PLM) comme gestionnaire de connexions au lieu de SDDM. Ce changement a également été introduit dans KDE Plasma 6.6 pour avoir un contrôle total du projet KDE dans l'expérience utilisateur. L'objectif de Fedora est de suivre la décision du projet pour améliorer la maintenance et l'expérience utilisateur en ayant un tout intégré. Cependant — même si PLM dérive de SDDM — il reste légèrement moins personnalisable à ce stade. Ce changement n'affecte par défaut que les nouvelles installations. Pour ceux qui veulent en bénéficier après une mise à niveau, voici les commandes à exécuter :

$ sudo dnf install plasma-login-manager kcm-plasmalogin

$ sudo systemctl enable --force plasmalogin.service

L'environnement de bureau Budgie passe à la version 10.10 et tourne avec Wayland au lieu de X11. Il utilise labwc comme compositeur qui permet de définir des raccourcis claviers globaux, l'accélération du curseur de la souris, d'adapter le thème des applications en fonction de la configuration de l'environnement. La variante spin utilisera SDDM comme gestionnaire de connexions pour avoir une expérience native Wayland de bout en bout. Outre cela, l'environnement fournit un nouvel utilitaire pour configurer les écrans.

La variante Games Lab est remaniée pour passer de Xfce à KDE Plasma et ainsi utiliser Wayland pour avoir une couche graphique plus moderne. En effet Wayland permet de plus en plus d'exploiter le matériel moderne ce qui est particulièrement utile dans ce contexte. La liste des jeux fournis par défaut a été revue, la documentation autour rafraîchie pour rendre compte des progrès dans le domaine et une tentative de fournir certains correctifs pour gérer le matériel des jeux aux projets d'origine plutôt que de les garder dans Fedora ou d'autres distributions dérivées comme Bazzite.

Le module noyau NTSYNC est activé quand les paquets Steam ou WINE sont installés pour améliorer les performances et la compatibilité des applications Windows et en particulier les jeux. Cela passe par l'ajout du paquet ntsync-autoload qui une fois installé remplit ce rôle en écrivant ntsync dans le fichier /usr/lib/modules-load.d/ntsync.conf afin de charger ce module automatiquement.

Ce module noyau améliore les performances car globalement les applications Windows, mais en particulier les jeux, pouvaient synchroniser leurs fils d'exécution avec des sémaphores, mutex et événements via des primitives noyau Windows. Mais comme ces mécanismes ne sont pas disponibles dans le noyau Linux, WINE les émulait dans l'espace utilisateur ce qui a des performances moindre. Le module noyau fournit cette abstraction au sein du noyau Linux lui-même ce qui reproduit la conception originale de Windows à ce niveau.

Le spin MiracleWM remplace l'environnement nwg-shell avec Dank Material Shell (qui est basé sur QuickShell). En effet le premier était difficile à maintenir et à stabiliser avec des mises à jour qui cassaient fréquemment la compatibilité. L'expérience devrait donc être plus stable pour les utilisateurs et ils devraient disposer de plus de fonctionnalités également.

Le gestionnaire de paquets universel PackageKit, utilisé par GNOME Logiciels entre autre, exploite dorénavant dnf5 au lieu de la version précédente. Cela permet d'avoir une expérience unifiée quel que soit l'outil employé pour utiliser DNF dans l'arrière coulisse. En particulier, les bases de données internes ne seront plus dupliquées et l'historique des actions est ainsi unique. Les notifications de mise à jour et la réalisation des mises à niveau devrait être également plus fiables et efficaces.

L'installateur Anaconda ne fournira plus de configuration réseau par défaut pour les interfaces filaires mais uniquement pour les installations n'utilisant pas une image Live. Jusqu'ici, à l'installation il y a la possibilité de configurer les interfaces réseaux mais pour les interfaces filaires non configurées (pour l'être avec des outils dédiés plus tard, par exemple) une configuration par défaut basique et potentiellement inadaptée était installée. Cela pouvait poser des problèmes à certains utilisateurs, mais c'était aussi un effort de maintenance pour que les valeurs par défaut correspondent à celles de NetworkManager par exemple. Ce changement permet également d'ouvrir la voie à la réutilisation du module de configuration réseau de Cockpit dans le futur.

La suite TeXLive nouveau millésime 2025 est proposée. Fedora en profite pour revoir l'empaquetage passant d'un SRPM unique pour le millier de modules à une cinquantaine. Ainsi mettre à jour un seul composant ne nécessite pas de reconstruire l'ensemble de ces paquets avec la tonne de mises à jour que cela implique pour les utilisateurs. Le découpage des SRPM suit celui du projet officiel pour avoir du sens en terme de dépendances. Cependant le nombre de sous-paquets générés ne change pas.

Outre cela, cette mise à niveau permet l'usage du format PDF 1.7 par défaut. Changer l'échelle des polices au-delà de 2048 points génère une erreur propre plutôt qu'un problème silencieux en arrière plan. LuaTeX comme pdfTeX sont améliorés.

Le paquet d'intégration avec la bibliothèque Qt5 pour LibreOffice est supprimé, les environnements de bureaux utilisant Qt6 maintenant.

Bureau Budgie

Gestion du matériel

Pour les systèmes Aarch64 avec un EFI, la sélection du device tree sera automatique au démarrage de l'image Live pour les ordinateurs portables Windows ARM. En effet une problématique dans le monde ARM, contrairement à l'univers PC avec l'architecture x86, la table ACPI et les protocoles avec une énumération des périphériques dynamiques tels que USB / PCIe ne suffisent pas à décrire le matériel de manière suffisamment complète pour démarrer la machine. Il est nécessaire pour cela de fournir un fichier additionnel, le device tree, qui est en général maintenu au sein du noyau Linux.

Et dans le cadre d'une image Live, il faut une image unique qui peut démarrer sur n'importe quelle machine. Pour les ordinateurs portables ARM, jusqu'ici il était nécessaire de personnaliser l'image Live à la main pour permettre un tel démarrage afin de fournir et de sélectionner le bon device tree à employer. La nouvelle procédure rend l'ensemble bien plus simple pour les utilisateurs. Cela repose sur une image noyau unifiée sans initrd mais avec systemd-stub et hardware-id pour identifier le bon device tree pour cette machine. Ainsi un initrd adapté et la ligne de commande pour charger le noyau Linux final seront générés et fournis à GRUB pour lancer le démarrage avec l'ensemble des informations nécessaires.

Internationalisation

L'outil d'aide à la saisie IBus évolue à la version 1.5.34. Il prend en charge le protocole des méthodes de saisie de Wayland ce qui permet de tirer profit de deux changements pour les environnements Wayland non basés sur GNOME (qui ne le prend pas en charge à ce jour). Il peut en effet automatiquement supprimer le texte environnant suivant le contexte, comme par exemple retirer un caractère ayant servi à la composition d'une autre ou de corriger le placement de la ponctuation dans un texte. Il peut également adapter la couleur du texte et du surlignage lors de la pré-édition pendant l'aide à la saisie en fonction du contexte (comme la prédiction complète d'un mot, la détection d'une faute d'orthographe, etc.). Enfin les annotations des émojis sont affichées dans la table de sélection.

Le module Ibus pour la transcription vocale est mis à jour à la version 0.7.0 qui propose un module pour utiliser la famille de modèles Whisper d'OpenAI en plus du modèle Vosk déjà employé. Il est possible de choisir le modèle souhaité dont les variantes exécutées en local ou ceux disponibles en ligne via la plateforme Hugging Face. Le module essaye de trouver automatiquement le modèle adapté à la langue employée mais il reste possible de définir cela manuellement en cas de besoin. Normalement la qualité du rendu de la transcription vocale devrait être améliorée tout en ayant la flexibilité dans le choix du modèle.

Administration système

Les images Fedora Cloud n'ont plus une partition /boot dédiée mais utilisent un sous-volume btrfs à la place. Cela ne s'appliquera cependant pas aux images UEFI-UKI ou pour l'architecture s390x à cause des limitations de ces systèmes. L'objectif est de réduire la taille de l'image initiale car il n'est plus nécessaire de fournir de l'espace libre dédié à cette partition. Et par conséquent, cela permet au reste du système de pouvoir utiliser plus d'espace librement sans devoir tenir compte de cette dite réserve.

L'émulateur QEMU n'aura plus de paquets compatibles avec l'architecture 32 bits i686 car cette architecture n'est plus maintenue par le projet officiel. Par ailleurs cette architecture posait quelques soucis de maintenance par le passé avec des échecs de compilation à gérer pour un paquet très peu utilisé sur de tels systèmes. Mais exécuter un système 32 bits depuis un QEMU 64 bits reste évidemment toujours possible.

Le gestionnaire de paquets nix est introduit dans Fedora Linux. Ce gestionnaire de paquets connu pour être celui de NixOS peut en effet être utilisé sur d'autres environnements Unix sans problèmes ce qui permet ici de bénéficier ou de contribuer à son écosystème de paquets pour ceux qui le souhaitent. Il est possible de s'en servir au niveau système (mode multi-utilisateur) ou pour un utilisateur spécifique. Cependant le projet Fedora ne souhaite pas s'en servir comme gestionnaire de paquets officiel, de la même façon que npm ou pip peuvent être utilisés depuis Fedora Linux pour récupérer des utilitaires JavaScript ou Python sans utiliser dnf.

Le gestionnaire de paquets Kubernetes Helm utilise la version 4 dorénavant tandis que la version 3 reste disponible avec le paquet helm3. En effet cette nouvelle version brise la compatibilité ascendante et comme il est très employé dans un contexte d'intégration continue ou de gestion de systèmes de conteneurs, la migration peut prendre du temps d'où la conservation de l'ancienne version qui sera retirée probablement pour Fedora Linux 45.

En terme de nouveautés, il prend en charge des extensions écrites en WebAssembly, il prend en charge également les OCI digest ou des arguments en format JSON. Son architecture a été revue pour utiliser des paquets versionnés et restructurer l'empaquetage. Le format Chart v3 est également pris en charge.

Le gestionnaire de bases de données MariaDB passe par défaut de la version 10.11 à la version 11.8. La version 11.8 était déjà proposée dans les dépôts, elle remplace juste la version 10.11 en tant que version de base. Cette dernière reste disponible via le paquet mariadb10.11.

L'outil Ansible est mis à jour à sa 13e version. Depuis la précédente version proposée dans Fedora Linux, Ansible 11, il fournit majoritairement des améliorations de sécurité et une plus grande robustesse dans le moteur de templates. De nombreux comportements invalides ignorés auparavant peuvent générer des erreurs et doivent être corrigés. D'ailleurs la gestion des erreurs a été également améliorée. Les modules plus spécifiques ont été mis à jour ce qui peut nécessiter une adaptation des playbooks existants.

Les paquets pour le gestionnaire de bases de données MySQL avec le nom community-mysql sont supprimés. L'objectif est de simplifier la maintenance et de rendre la situation plus claire pour les utilisateurs qui peuvent se référer uniquement aux paquets nommés mysql et dérivés.

Les paquets rust-coreutils et rust-nu qui vont respectivement de la version 0.0.27 à 0.5.x et de la version 0.99.1 à 0.109.2. Cette implémentation des outils de base de système en Rust gagnent en popularité et en maturité, étant utilisés par défaut dans Ubuntu maintenant. Cette version apporte une meilleure compatibilité avec les outils GNU. Son évolution très rapide jusqu'alors gênait les possibilités de mettre à jour ses dépendances telles que le shell Nu qui peut maintenant être mis à jour plus souvent. Les utilitaires GNU restent toujours les versions de référence dans Fedora Linux.

GNOME Bien-être

Développement

La chaine de compilation GNU progresse avec GCC 16.1, binutils 2.46, glibc 2.43 et gdb 17.1.

Le compilateur GCC a beaucoup travaillé sur la prise en charge initiale de la nouvelle version du langage C++26, mais des améliorations notables concernant C++23 sont également de la partie. Concernant le langage Ada, des extensions GNAT sont ajoutées et qui diffèrent du standard pour simplifier l'écriture du code ou se rapprocher des autres langages comme de nouvelles méthodes de constructions et de finalisation des objets. Côté matériel, les derniers processeurs Intel ont leurs optimisations spécifiques disponibles pour ceux qui le souhaitent tandis que le surcoût d'utiliser une carte graphique AMD avec les technologies OpenMP et OpenACC a été drastiquement réduit. OpenMP peut utiliser l'allocateur mémoire de l'API CUDA pour les cartes graphiques Nvidia afin d'améliorer les performances.

Les utilitaires binutils, outre la prise en charge de matériel plus moderne, il gère le format SFrame version 3 ce qui permet notamment de charger des sections .text de plus de 2 Gio.

La bibliothèque C glibc quant à elle, s'occupe d'améliorer la prise en charge de la version du langage C23. Elle peut gérer des caractères Unicode 17.0 et optimise certaines fonctions mathématiques comme acosh, asinh ou atanh pour les fonctions trigonométriques et la famille de fonctions fma pour le calcul de fonctions affines. Elle prend en charge les nouveaux appels systèmes mseal et openat2, le premier permettant de protéger une zone mémoire d'un changement de permissions ou de taille ultérieurement tandis que le second ajoute de nombreuses options supplémentaires à openat pour l'ouverture de fichiers.

Enfin le débogueur GNU peut gérer sur des architecture x86_64 une shadow stack avec des pointeurs 32 bits. Dans le protocole Debugger Adapter il accepte les requêtes pour la complétion d'une commande. Il devient plus simple de changer le style des couleurs de la sortie dans le terminal en fonction de ses préférences. Il peut également tirer parti des espaces de nom de l'éditeur de liens pour afficher cette information lors du débogage, notamment lors de l'affichage des informations concernant les bibliothèques partagées utilisées par le programme en cours d'analyse.

La chaine de compilation LLVM version 22 est proposée. Comme souvent l'alter égo de la chaine de compilation GNU n'est pas en reste avec la prise en charge initiale de la future version du langage C nommée C2y à ce jour. Plus d'optimisations matérielles peuvent être exploitées avec les expressions constantes de C++. comme les instructions SSE, AVX, et AVX-512. De même plus de micro architectures sont prises en charge pour des optimisations supplémentaires pour le matériel récent.

L'outil de configuration de l'environnement de compilation CMake passe à la version 4.2. Cela entraîne une rupture de compatibilité pour les projets ayant besoin de la version 3.5 ou inférieure. Outre l'évolution de son File API, il prend en charge la copie d'arborescence, via l'option -E copy_if_newer, basée sur la valeur de la date du dernier changement plutôt que celui de la différence de contenu pour être plus rapide. Une nouvelle option de ligne de commande --project-file permet d'utiliser un fichier alternatif à CMakeLists.txt à des fins de développement pour des tests temporaires. Le préfixe LINKER: peut être ajouté à différentes variables et commandes. Enfin, la variable CMAKE_FIND_REQUIRED peut être employée pour forcer toutes les commandes de recherche d'un fichier, d'une bibliothèque ou d'un programme d'émettre une erreur par défaut s'il n'est pas trouvé, au lieu de devoir le préciser à chaque commande. Le projet Fedora a dû proposer beaucoup de correctifs aux paquets compilés avec CMake pour permettre leur bonne compilation.

La bibliothèque C++ Boost passe à la vitesse supérieure avec la version 1.90. C'est la première mise à jour de ce composant depuis Fedora Linux 40, entre temps de nombreuses sous-bibliothèques sont apparues comme Charconv, Cobalt, Hash2, MQTT5, OpenMethod, Parser, Redis et Scope. La plupart des sous-bibliothèques ne prennent plus en charge C++03 et nécessitent au moins C++11 voire C++14 maintenant ce qui peut impacter la compatibilité des vieux projets.

Le langage de programmation Ruby prend de la valeur avec sa version 4.0 carats. Les opérateurs logiques binaires utilisés dans des conditions sont dorénavant compatibles en multi-lignes pour simplifier la lecture. En cas d'erreurs concernant les arguments pour appeler une fonction, un extrait du code de l'appelant et de l'appelé est affiché pour simplifier le débogage. Concernant les compilateurs juste à temps proposés, RJIT est retiré tandis que ZJIT est introduit. Il n'est pas encore recommandé de se servir de ce dernier en production, l'objectif est d'en faire une référence pour la prochaine version, quand il sera plus performant que la référence actuelle YJIT. Enfin Ractor comme mécanisme d'exécution parallèle a vu ses performances améliorées en ayant moins de données partagées et en utilisant moins de verrous globaux, l'objectif est — pour lui aussi — d'en retirer son statut expérimental pour la prochaine version.

Le paquet ruby-build est d'ailleurs scindé en plusieurs sous paquets pour rendre son utilisation plus modulaire. Ainsi au lieu de tirer l'ensemble des composants pour permettre de compiler n'importe quelle implémentation de Ruby, uniquement ceux nécessaires peuvent être téléchargés et installés ce qui peut éviter de devoir télécharger la chaine de compilation Rust ou OpenJDK et ainsi passer de 400 Mio de paquets à obtenir à quelques Mio seulement. Donc maintenant les dépendances essentielles pour cela sont regroupées dans le paquet ruby-build-core, si l'objectif est de compiler JRuby, le paquet ruby-build-jruby peut être installé, pour PicoRuby c'est ruby-build-picoruby, etc.

Le langage Go saute vers sa version 1.26. Le langage permet maintenant de spécifier une expression comme valeur par défaut pour une nouvelle variable en construction, comme par exemple une référence vers un champ JSON à parser. Il permet aussi de spécifier des contraintes de type pour des paramètres d'une fonction, qui réfère à un type générique, qui se réfère à lui même. Niveau outillage, la commande go fix permet de facilement porter un code existant vers une construction plus moderne à l'aide de moderniseurs qu'il fournit. Le ramasse miettes Green Tea est activé par défaut et doit fournir une réduction de son impact de 10 à 40% dans des programmes classiques. Pour les architectures x86_64, par défaut l'adresse mémoire du tas est initialisée à une adresse aléatoire au lancement de l'application pour réduire le risque d'attaques. Les appels de code C sont aussi 30% plus rapides.

Le langage PHP passe à la version 8.5. Parmi les nouveautés, il propose une nouvelle classe URI pour faciliter la manipulation des liens, il introduit également le concept de pipe avec |> pour enchainer les opérations sans nécessiter de variables intermédiaires ce qui simplifie l'écriture et la relecture du code. Il devient également possible de cloner un objet tout en éditant des propriétés à la volée ce qui est particulièrement utile pour les objets avec des champs en lecture seule. Une fonction peut ajouter la propriété #[\NoDiscard] pour générer une alerte si un appelant ne récupère pas la valeur de retour de cette fonction, ce qui permet d'améliorer la conception et l'utilisation des APIs. Les erreurs fatales fournissent aussi une trace d'appel pour mieux déboguer le programme. Et bien d'autres changements encore.

Le langage Haskell devient plus fonctionnel avec son compilateur GHC version 9.10 et sa suite de paquets Stackage 24. Le langage dispose de quelques petites améliorations comme la possibilité pour la boucle forall d'avoir le qualificatif visible afin de spécifier le type de l'objet employé dans la boucle sans inférence. Ou encore de déprécier une instance de classe afin de générer une alerte en cas d'utilisation. Sinon le compilateur dispose de la possibilité pour le backend JavaScript de se lier à du code C grâce à l'usage de WebAssembly, tandis que le backend WebAssembly permet d'appeler du code JavaScript et inversement du code JavaScript qui peut appeler du code Haskell.

Le projet Fedora en profite pour supprimer les paquets de profilage ghc-*-prof pour les architectures non x86_64 et aarch64, sauf pour la bibliothèque standard, car leur usage était probablement rare et le coût de maintenance trop important pour les empaqueteurs.

La boîte à outils web pour Python nommé Django serpente à la version 6. Le changement majeur est l'introduction de la prise en charge interne du Content Security Policy pour facilement bloquer les attaques par injection de contenu comme XSS. Il faut déclarer dans ce cas les ressources externes, comme les scripts ou images, auxquelles le navigateur peut accéder et bloquer ainsi les autres. Il intègre aussi la gestion des templates partiels qui étaient auparavant dans un module externe. Il propose également le concept de tâche pour exécuter des actions potentiellement longues en arrière plan en dehors du cycle de requête-réponse HTTP tel que l'envoi d'un courriel suite à un appel particulier. Enfin il adopte l'usage de l'API Python moderne pour la gestion des courriels. Cette version présente de nombreuses incompatibilités, l'usage de Django 5 reste possible par l'installation du paquet python3-django5.

Des paquets nodejsXX-bin et nodejsXX-npm-bin sont fournis pour créer les fichiers /usr/bin/node et /usr/bin/npm sans nom de versions qui pointent vers la version voulue par l'utilisateur. Ils ne peuvent pas être installés en parallèle ce qui permet de garantir l'unicité de ces fichiers dans un système. Cela signifie qu'il n'y a plus vraiment de version de NodeJS de référence dans Fedora Linux et qu'il est aisé de passer d'une version à une autre selon ses besoins. Pour les mainteneurs, c'est plus facile également de gérer les changements de versions car il n'y a pas la question de gérer la transition d'une version de référence à une autre.

Cette propriété signifie également que passer d'une version à une autre nécessite d'utiliser la commande dnf swap. Par exemple : dnf swap --allowerasing nodejs24-bin nodejs22-bin

La bibliothèque rust-bindgen pour lier du code Rust avec du code C ou C++ est empaquetée à la version 0.72. Avant les versions de 0.68 à 0.72 étaient proposées, mais la nouvelle version LLVM 22 décrite plus haut casse la compatibilité pour représenter l'AST ce qui rend ces anciennes versions non compatibles. Cela a impliqué des adaptations pour les dépendances impactées.

La bibliothèque d'édition des métadonnées des fichiers audio taglib passe à la version 2.0. Cette version ne préserve pas la compatibilité de son ABI et API ce qui a nécessité une adaptation pour ses dépendances comme Ardour et Easytag. Beaucoup de fonctions obsolètes ont été supprimées pour avoir une API plus propre. Le code a été modernisé avec beaucoup de correctifs et un usage de C++17. La prise en charge des propriétés des formats MP4 et RIFF a été également étendue.

Le parseur et moteur de rendu de CommonMark cmark progresse vers la version 0.31.

La machine virtuelle Java OpenJDK 21 n'est plus proposée dans les dépôts. Cela permet de concentrer les ressources sur OpenJDK 25 et 26 qui sont plus utilisées. Ce temps économisé peut être alloué dans la finition de la compatibilité avec Eclipse Temurins.

Le paquet python-mock a été supprimé des dépôts. Son retrait prochain avait été annoncé avec Fedora 34 mais de nombreux paquets en avaient encore besoin jusqu'ici.

GNOME Documents avec annotations

Projet Fedora

Les paquets avec des fichiers identiques utilisent des liens physiques par défaut au sein du répertoire /usr. Notamment certains paquets Python peuvent avoir des contenus générés automatiquement qui sont dupliqués avec la macro %__os_install_post_python. Mais la manière de faire n'était pas toujours cohérente entre les paquets et des effets de bord existaient car il pouvait y avoir une différence de date d'édition de fichiers entre deux liens physiques ce qui nuisait à la reproductibilité de la génération des paquets. Maintenant cela est géré de manière uniforme via la macro %__os_install_post qui effectue cette tâche pour tous les fichiers dans %{buildroot}%{_prefix}, que les fichiers soient dans le même paquet ou sous-paquet. Uniquement ce répertoire est pris en compte car les fichiers en son sein sont en général en lecture seule ce qui évite les problèmes liées à l'édition ultérieure du contenu. Un autre aspect positif est une légère réduction de la taille de certains paquets et que différents utilitaires de recherche ou de sauvegarde des fichiers peuvent éviter de parcourir inutilement plusieurs fois le même contenu.

Les systèmes atomiques ne fournissent plus de bibliothèques et de binaires FUSE 2. Les paquets fuse et fuse-libs sont retirés de l'image de base pour permettre l'usage exclusif de FUSE 3, FUSE 2 n'étant plus maintenu. Ces paquets étaient maintenus depuis Fedora Linux 40 car le format AppImage s'en servait dans la première version de son format mais l'ajout d'une seconde version qui exploite FUSE 3 permet de s'en affranchir.

Pour les images Kinoite et Kinoite Mobile, cela signifie que les backends EncFS et CryFS ne sont plus accessibles, si vous êtes concernés vous pouvez les convertir avant ou alors installer les paquets fuse-encfs et cryfs avec rpm-ostree.

Cela ne concerne pas pour l'instant les autres versions de Fedora Linux qui ont un usage plus général et qui peuvent très facilement l'installer en cas de besoin pour ceux qui le souhaitent. Les systèmes atomiques sont quant à eux orientés pour des systèmes minimaux en lecture seule où cet utilitaire n'est plus indispensable par défaut comme expliqué.

Ces systèmes bureautiques atomiques ne prennent plus en charge les règles obsolètes pkla polkit. Les autres systèmes atomiques de Fedora avaient déjà supprimé par défaut ces règles de leur image de base car c'est un format obsolète qui est d'ailleurs peu à peu retiré des autres distributions Linux telles qu'Ubuntu ou Debian.

Les variantes non atomiques ne sont pas concernées à ce stade pour la même raison que le changement précédent, d'autres paquets peuvent en dépendre ce qui rend la suppression totale définitive difficile à ce jour. Les systèmes atomiques n'ont plus de tels composants dans l'image de base ce qui permet une telle transition.

Packit remplace Fedora CI et Zuul pour démarrer les instances d'intégration continue pour compiler et exécuter les tests des paquets après un pull request. En effet le premier est développé par Red Hat et est plutôt bien maintenu avec plus de fonctionnalités que les seconds qui n'avaient pas assez de personnes pour s'en occuper et fournir une bonne stabilité. Cela permet de simplifier la gestion de cette partie de l'infrastructure en se concentrant sur l'intégration plutôt que le développement. Il offre par exemple la possibilité de ré-exécuter certains tests seulement ou d'utiliser des étiquettes associées à une tâche pour définir quels tests doivent être exécutés ou non, afin de gagner du temps lors du développement d'un paquet. Il fournit de fait une interface unique pouvant aller de dist-gist en passant par Koji et Bodhi pour ces différentes tâches. Il est également indépendant de la forge git employée grâce à une API unifiée. À ce jour Gitlab et Pagure sont gérées et Forgejo sera ajoutée plus tard, qui sera à priori la future forge logicielle de Fedora ce qui facilitera la transition à ce moment là.

Koji ne prend plus en charge le service distant Red Hat Image Builder Service, uniquement les instances locales peuvent être utilisées. En effet depuis la version précédente de Fedora Linux, toutes les images peuvent être produites localement. Fedora IoT et Minimal étaient construites via l'infrastructure Red Hat Image Builder, Koji ne servant que d'orchestrateur côté Fedora. Cela posait quelques soucis dont la possibilité d'intervenir en cas de problèmes mais aussi le fait qu'il était impossible de geler les changements de l'infrastructure aux moments adéquats pour l'élaboration des nouvelles images. En plus de s'affranchir du service de Red Hat, cela autorise aussi de supprimer le plugin Koji qui permettait une telle opération. Il devient également possible de réallouer les ressources matérielles associées pour d'autres tâches.

Les labels des images pour conteneurs passent à org.opencontainers.image.title et org.opencontainers.image.licenses pour suivre la spécification OpenContainers. Cela simplifiera l'outillage pour récupérer cette information de manière générique en ayant une nomenclature standard pour toutes les images.

Par ailleurs CMake utilisera le générateur ninja au lieu de make par défaut pour compiler un projet. En effet CMake permet d'utiliser les deux en fonctions des préférences, avec la mise à niveau de CMake décrite plus haut, la prise en charge de ninja est encore meilleure ce qui le rend plus intéressant. Ninja est plus moderne et rapide pour effectuer la compilation d'un projet ce qui est intéressant pour le projet Fedora qui en compile beaucoup. Il prend également mieux en compte le concept récemment introduit des modules C++. C'était d'ailleurs déjà le choix effectué manuellement par certains paquets, maintenant tous les utilisateurs de la macro cmake en bénéficieront par défaut.

Les paquets autour du langage R ont de nouvelles macros et une meilleure uniformisation des bonnes pratiques pour simplifier leur maintenance. Cela représente 400 paquets dans la distribution qui avaient jusqu'ici une gestion assez artisanale et demandait beaucoup de temps pour gérer des situations similaires. De nouvelles macros dédiées ont été ajoutées dans R-rpm-macros tandis que les macros R-srpm-macros ont été ajoutées à la config globale redhat-rpm-config pour permettre leur réutilisation.

Ces macros simplifient beaucoup la maintenance, maintenant la génération de la version et des URLs des projets empaquetés sont gérés de manière uniforme. De même, la procédure d'installation et de la vérification des fichiers est faite de manière identique. Enfin, cela permet de rendre ces paquets reproductibles également.

La communauté francophone

L'association

Logo de Borsalinux-fr

Borsalinux-fr est l'association qui gère la promotion de Fedora dans l'espace francophone. Nous constatons depuis quelques années une baisse progressive des membres à jour de cotisation et de volontaires pour prendre en main les activités dévolues à l'association.

Nous lançons donc un appel à nous rejoindre afin de nous aider.

L'association est en effet propriétaire du site officiel de la communauté francophone de Fedora, organise des évènements promotionnels comme les Rencontres Fedora régulièrement et participe à l'ensemble des évènements majeurs concernant le libre à travers la France principalement.

Si vous aimez Fedora, et que vous souhaitez que notre action perdure, vous pouvez :

  • Adhérer à l'association : les cotisations nous aident à produire des goodies, à nous déplacer pour les évènements, à payer le matériel ;
  • Participer sur le forum, les listes de diffusion, à la réfection de la documentation, représenter l'association sur différents évènements francophones ;
  • Concevoir des goodies ;
  • Organiser des évènements type Rencontres Fedora dans votre ville.

Nous serions ravis de vous accueillir et de vous aider dans vos démarches. Toute contribution, même minime, est appréciée.

Si vous souhaitez avoir un aperçu de notre activité, vous pouvez participer à nos réunions mensuelles chaque premier lundi soir du mois à 20h30 (heure de Paris). Pour plus de convivialité, nous l'avons mis en place en visioconférence sur Jitsi.

La documentation

Depuis juin 2017, un grand travail de nettoyage a été entrepris sur la documentation francophone de Fedora, pour rattraper les 5 années de retard accumulées sur le sujet.

Le moins que l'on puisse dire, c'est que le travail abattu est important : près de 90 articles corrigés et remis au goût du jour.
Un grand merci à Charles-Antoine Couret, Nicolas Berrehouc, Édouard Duliège, Sylvain Réault et les autres contributeurs et relecteurs pour leurs contributions.

La synchronisation du travail se passe sur le forum.

Si vous avez des idées d'articles ou de corrections à effectuer, que vous avez une compétence technique à retransmettre, n'hésitez pas à participer.

Comment se procurer Fedora Linux 44 ?

Logo de MediaWriter

Si vous avez déjà Fedora Linux 43 ou 42 sur votre machine, vous pouvez faire une mise à niveau vers Fedora Linux 44. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.

Autrement, pas de panique, vous pouvez télécharger Fedora Linux avant de procéder à son installation. La procédure ne prend que quelques minutes.

Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.

De plus, pour éviter les mauvaises surprises, nous vous recommandons aussi de lire au préalable les bogues importants connus à ce jour pour Fedora Linux 44.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Le jeu vidéo destiné à devenir de moins en moins libre et performant ?

Pour qui s’intéresse au jeu vidéo, il y a quelques menus détails qui ont changé ces dernières années.

On ne va pas parler du prix des composants — GPU et RAM notamment — qui a littéralement flambé avec l’avènement de l’IA, devenant une véritable valeur refuge au même titre que l’or ou le palladium ; non, on va s’intéresser à la partie technique des jeux (ou du moins de leurs moteurs de rendu).

Sommaire

Raytracing / Path tracing

Il doit être difficile en 2026 de ne pas avoir entendu les termes Raytracing et Path tracing. Mais concrètement, qu’est-ce que c’est et en quoi cela affecte les jeux vidéos ?

Pour en parler, il faut déjà revenir aux fondamentaux, c’est-à-dire la Rastérisation.
En modélisation 3D on a besoin d’afficher en deux dimensions (nos écrans) des objets en 3 dimensions. Étant loin d’être un expert de ces sujets, je dirais au doigt mouillé que ça doit remonter aux premiers rendus 3D.

Dans le contexte de la rastérisation, les objets à l’écran sont créés à partir d’un maillage virtuel de triangle ou de polygones (un mesh). Les coins de nos triangles sont appelés des vertices, et contiennent un paquet d’informations, comme leur position dans l’espace, ou bien leur couleur ou encore des données dite de « normale » qui permettent de déterminer la façon dont les faces d’un objet se présentent.

L’ordinateur convertit ensuite les triangles et les données des vertex en pixels affichés en 2D.

C’est la base de la rastérisation, on peut ensuite chaîner d’autres modifications sur nos pixels (des shaders : des programmes spécialisés qui fonctionnent en parallèles sur un GPU) pour modifier le rendu. C’est à cette étape que l’on fera de la magie noire pour simuler des effets de lumière, de réfraction, de réflexion, d’occlusion et j’en passe.

Pour les ombres il y a différentes techniques, la plus commune est la carte d’ombrage, qui permet de pré-calculer ou de calculer en temps réel ce qui est dans l’ombre (et doit donc être assombri) et ce qui ne l’est pas. Mais ces ombres sont dites « dures », pour des ombres diffuses (dites « soft ») il faut procéder un peu autrement.

On s’en sort en pratique fort bien, et d’autres techniques viennent compléter le tableau comme :

  • les lightmaps,
  • l’occlusion ambiante (SSAO, GTAO, etc.),
  • les sondes de réflexions,
  • les réflexions planaires qui — bien que gourmandes — donnent des réflexions claires comme le cristal en rendant la scène deux fois,
  • le SSR qui tente de reconstruire des réflexions à partir des informations déjà affichées,
  • les systèmes d’illuminations globales (SDFGI, Lumen)
  • les systèmes d’antialiasing
  • et une véritable myriade de joyeusetés toutes plus complexes et délicates les unes que les autres.

OpenMW avec les données de Morrowind
Source : OpenMW

Avec pour chaque technique des limites et inconvénients avec lesquels le développeur devra composer pour atteindre son objectif.

Ces liens donnent des informations pertinentes et compréhensible sur ces sujets :

Aussi, ce journal de small_duck est particulièrement intéressant et facile à lire, en plus de présenter l’évolution des techniques de rendue antérieures à la rastérisation.

Et ce sera fait pour chaque pixel de l’écran. Pour un rendu en 4K on a 8 millions de pixels, et on cible de 30 à 90 images par seconde en moyenne. Mais les GPU modernes sont très forts à ce jeu-là.

Bon très bien, et le raytracing me direz-vous ? Attention à ne pas confondre avec le Raycasting, dont nous parlait jtremesay dans son journal en 2022.

On l’a vu avec la rastérisation, on procède de la manière qui nous a parue la plus efficace avec les moyens donnés. Mais si on visait des rendus plus réalistes, et par réaliste j’entends physiquement réaliste, il y a d’autres approches.

Dans le domaine de l’illumination globale citée plus haut, le raytracing (« lancer de rayon »), permet de remplacer quantité d’effets simulés par les autres techniques et ce avec une qualité et une fidélité supérieure. Le ray tracing est conçu dans les années 60 par Robert Goldstein, Roger Nagel de MAGi et Arthur Appel d’IBM.

Turner Whitted introduit le raytracing récursif dans un papier en 1980. Il décrit comment l’information de rendu est stockée dans un arbre, se propageant vers les surfaces puis vers les sources lumineuses, permettant de simuler fidèlement réflexions, ombres et réfractions.

Cette technique de rendu procède différemment de la rastérisation. Il faut imaginer que depuis chaque pixel de l’écran, un rayon va être envoyé dans le monde 3D, et quand ce rayon va toucher une surface, on va récupérer sa couleur. On pourra ensuite en fonction des données de la surface, lancer d’autres rayons, qui iront toucher d’autres surface et ainsi affiner la couleur de notre pixel.

C’est très similaire dans l’idée à l’ancienne théorie de la vision émissive.

Image d’une scène 3D constituée de trois sphères, obtenue par path tracing

Source : Path tracing sur Wikipedia

De ce fait, on calcule par un seul moyen, non seulement les couleurs des surfaces, mais aussi leur émission, leurs réflexions, leur ombrage et ce en tenant compte d’objets en dehors de l’espace visible à l’écran. C’est un moyen extrêmement puissant de rendre un monde en 3D, et ce n’est ainsi pas pour rien qu’il est utilisé pour le rendu des films d’animation par Pixar et Dreamworks dès les années 80 (avec une approche hybride) et plus généralement dans les années 2000.

Car il faut dire, et je pense qu’on peut s’en douter, que le raytracing est horriblement peu performant. Le lancer de rayon à lui seul est un goulot d’étranglement monstrueux.

Mais pourquoi s’arrêter en si bon chemin ? Le Path tracing, introduit par James Kajiya en 1986, plus moderne, est une forme de raytracing. À chaque rebond, au lieu de lancer plusieurs rayons déterministes, on tire une seule direction aléatoire selon une distribution statistique. Cela permet de simuler fidèlement la lumière indirecte, les caustiques, les surfaces translucides, au prix d’un bruit important.

D’apparence moins performante et complexe, cette méthode permet toutefois un résultat plus granulaire, en changeant le nombre de rayons initiaux. Le pathtracing doit accumuler suffisamment d’échantillons aléatoires pour que la moyenne converge vers une image propre. Avec peu d’échantillons, l’image est bruitée. Pour réduire ce bruit il faut soit plus d’échantillons (plus lent), soit un bon débruiteur.

Certaines parties d’une scène comme les miroirs ou les surfaces en verre nécessiteront plus de rayons pour rester cohérentes, se rapprochant de la version raytracing plus classique.

Un rendu en pathtracing sur le blog de nVidia
Source: nVidia

Dans le domaine du jeu vidéo, il a ainsi fallu attendre jusqu’à récemment pour que cette technique devienne viable pour du rendu temps réel. C’est nVidia qui a ouvert le bal en 2018 avec une conférence pour le lancement de leurs cartes RTX. AMD suivra avec les RX6000 et surprenamment, Intel avec les Arc.

Cette démo de THREE.js tourne dans le navigateur et affiche une boite de Cornell avec du Path Tracing.

Ces nouvelles cartes utilisent des unités matérielles dédiées au lancer de rayon, opération autrefois purement logicielle. Mais ça ne suffit pas à atteindre la vitesse suffisante pour une expérience fluide.

Ces cartes embarquent donc également une autre technologie, au moins aussi importante que le raytracing. Le DLSS.

Histoire de se faire une idée rapidement, ce mod de DOOM 2 supporte le raytracing et ça change vraiment, avec un rendu atmosphérique !

Capture du mod Doom 2: RAY TRACED

Source : Le mod Doom 2: RAY TRACED sur moddb par shirokii

DLSS, FSR, XeSS, Reflex, Anti-Lag

nVidia présente donc en février 2019 le Deep Learning Super Sampling (DLSS) ou Super Échantillonnage en Apprentissage Profond. C’est une technologie de redimensionnement visant à produire une image plus grande à partir de la sortie du pipeline graphique.

Le défi étant de fabriquer ou de retrouver des détails à partir de pas grand-chose. Le DLSS utilise un réseau de neurones pour produire un résultat plutôt convaincant, surtout à mesure que les versions du DLSS se sont enchaînées. À tel point que le DLSS affiche parfois un meilleur rendu que le rendu natif.

En effet, si le but premier du DLSS et des autres technologies concurrentes est de réduire la résolution de rendu pour gagner en performance, le traitement du réseau de neurones peut être si bon qu’il parvient à reconstituer des détails plus fins que ce que produit le rendu natif.

Pour cela, il se base sur les images affichées, mais également sur des données fournies par le moteur, comme le vecteur de mouvement de l’image.

Il permet également de produire un rendu qui a virtuellement une résolution supérieure au natif qui est ensuite réduit à la résolution native. À la manière d’un Oversampling, mais sans le surcoût occasionné par le fait de rendre en 2 ou 4 fois plus grand.

Le DLSS est une technologie propriété de nVidia, qui utilise (sauf pour les premières versions) des éléments matériels pour fonctionner, des accélérateurs d’IA dédiés appelés Tensor Cores.
Les cœurs Tensor et autres accélérateurs IA peuvent entre autre utiliser des données de type FP16, INT8, INT4 et INT1, retenez-les bien, ça sera important.

Il n’a pas fallu longtemps avant qu’AMD ne se lance également sur le sujet avec son FidelityFX Super Resolution. Avec une approche différente, leurs cartes Radeon n’embarquant pas d’unités dédiées contrairement aux RTX de nVidia.

La première version du FSR est plus proche d’un shader d’upscalling comme ceux utilisés dans l’émulation retro que de ce que fait le DLSS.
Mais il a le mérite d’exister et de s’exécuter sur pratiquement n’importe quoi. Il a aussi le bon goût d’être libre. Il faudra attendre la version 2 pour voir quelque chose de plus intéressant, toujours agnostique du matériel utilisé et libre, et utilisant cette fois les vecteurs de mouvement également.

Cette fois-ci, si on est pas à la hauteur du DLSS on a quand même un gain de qualité par rapport à une résolution inférieure. Aux prix d’une image plus instable. Le FSR 3 (toujours libre et agnostique) améliorera un peu cette situation, mais sans régler tous les problèmes.

DLSS vs FSR 2 vs Native)

Sources : Notebook Check et Digital Foundry

Mais, car il y a un mais. Mais, donc, ces technologies ont un coût. En effet, même en faisant le rendu à une résolution plus faible que le natif et donc plus rapidement, il n’en reste pas moins que la mise à l’échelle prend du temps. Accélérateurs dédiés ou non. Dans un cas où on essayait de ramener des performances perdues lors de l’activation du Raytracing, on se retrouve à augmenter la latence.

Mais, car il y a de nouveau un mais, à chaque nouveau problème technologique, une solution (technologique elle aussi) existe ! nVidia se fend alors de la technologie Reflex, là ou AMD saupoudre son Anti-Lag et distille son Anti-Lag +. Ces solutions logicielles, propriétaires, fonctionnent uniquement sous Windows et à peu près de la même manière. Apparemment de base, le CPU peut préparer plus d’images que le GPU ne peut en afficher, remplissant alors un tampon ou une liste d’attente de rendu.
Plus il y a d’images dans la liste, plus la latence augmente, l’idée est donc de mieux synchroniser le rendu CPU et GPU, pour minimiser la taille de cette liste et donc la latence.

Suffisant ? Je ne sais pas.

Dans le même temps, Intel, qui se tâtait à se relancer sur le marché des GPU dédiés, se fend d’une première gamme de cartes graphiques, les Arc. Les cartes sont en dessous matériellement et logiciellement par rapport à leurs concurrentes, mais parviennent tout de même à faire tourner la plupart des jeux du moment. Si les pilotes ont des soucis de jeunesse, la prise en charge de Linux est de base très bonne et libre.

De manière générale, ces dernières années, le pilote libre des cartes Intel et AMD sous Linux est très bon et celui de nVidia s’améliore et s’ouvre un peu plus très peu mais reste basé sur un socle qui bien que performant est propriétaire.

Bref, Intel à la sortie de ses premières cartes (depuis un bail) les lance avec la gestion du raytracing et un équivalent aux DLSS et FSR : le XeSS. Il est plus proche du DLSS que du FSR, mais est agnostique du matériel comme le FSR. Il n’utilise d’accélérateur IA que sur les cartes Arc (cœur XMX), sur les autres il bascule sur les instructions DP4a pour exécuter son réseau de neurones. Il est souvent meilleur que le FSR en termes de stabilité, parfois pire. Si un SDK est disponible, il n’expose que des bibliothèques compilées. Le code reste donc fermé.

En parallèle de tout ça, arrive la génération d’image.

Maintenant, en plus d’augmenter la taille d’une « vraie » image générée virtuellement à l’ancienne, on va intercaler 1, 2, voir 3 images interpolées. Générées soit de façon analytique, soit via un réseau de neurones. C’est vendu sous le nom de Frame Generation par nVidia et AMD.

Côté AMD, il faut attendre le FSR 4 pour voir une utilisation d’un réseau de neurones.

Comparatif FSR3 et FSR4
Sources : Notebook Check et Digital Foundry

Le FSR fournit alors de bons résultats, et s’il reste légèrement moins qualitatif que le DLSS 4, il représente un saut appréciable par rapport au FSR 3. AMD ferme cette technologie aux cartes RX9000 en RDNA4, évoquant lui aussi l’usage d’instructions dédiées (FP8). Le code source n’est pas officiellement disponible, mais suite à une erreur de publication, le code d’une version du FSR 4 est publié en août 2025.

C’est plutôt ballot et cocasse pour AMD, car en plus de ne pas être voulu, cette version libérée comporte une implémentation fonctionnant sur INT8 du FSR 4. Or, nul besoin de la dernière génération de carte AMD pour les avoir. Ce qui veut dire, et les joueurs vont vite le démontrer en compilant eux-mêmes leur version, qu’il fonctionne en fait sur les cartes d’anciennes générations. Les cartes RDNA2 par exemple, plus vieilles de deux générations que les RX9000 en RDNA4, l’exécutent sans problème. Les cartes RTX 30 de nVidia également. Et si le gain en performance est inférieur aux cartes plus récentes, il reste présent et la qualité — surtout — augmente.

On peut d’ailleurs se demander si cette version du FSR 4 n’est pas la base technique du PSSR de Sony, développé par AMD à destination de la Playstation 5 qui embarque une architecture proche des cartes RDNA2 (elle est hybride). AMD est de son côté resté très silencieux sur le sujet.

On peut imaginer une décision court-termiste pour tenter de gonfler les ventes de la génération 9000, l’avenir dira si c’est un pari payant ou si les joueurs perçoivent cela comme une grossière insulte.

Il en reste la sensation d’un rendez-vous manqué, où le FSR4 aurait pu devenir de fait la méthode de mise à l’échelle universelle, car libre et indépendante de l’architecture. Mais sans qu’on sache exactement pourquoi, elle restera propriétaire et fermée à une gamme de carte.

Bref, à l’heure actuelle, seul les FSR 1, 2 et 3 sont libres et intégrables dans les moteurs de rendu libres comme Godot. Le DLSS et le XeSS restent utilisables pour qui en a la volonté. Le projet J.E.N.O.V.A qui permet notamment de coder en C++ sans passer par les GDExtenssions, utilise le DLSS par-dessus Godot et implémente le raytracing via le kit RTX de nVidia, mais cette portion est propriétaire pour le moment.

Ah ! Et bien entendu, à l’exception des FSR 1, 2 et 3, toutes ces technologies ne gèrent que DirectX. Sous Linux il faut donc passer par Wine / Proton / DXVK pour les exécuter.

DLSS 5

Annoncé en 2026, le DLSS 5 n’est pas une itération du DLSS au sens classique du terme, ce n’est ni de l’upscaling ni de la génération d’image. Le DLSS 5 prend en entrée la couleur et les vecteurs de mouvement d’une image, et utilise un modèle d’IA pour y injecter un éclairage et des matériaux photoréalistes, de façon déterministe et stable temporellement d’après nVidia.

Le système est a l’état de preuve de concept, nécessitant deux RTX 5090 : l’une pour jouer, l’autre exclusivement pour faire tourner le DLSS 5. L’utilisation d’une seule carte reste l’objectif pour la sortie prévue à l’automne 2026. On bascule d’une amélioration de rendu, à une génération de rendu. Ce changement de paradigme est loin de faire l’unanimité. Si l’image que vous voyez est en grande partie inventée par un réseau de neurones, s’agit-il encore du jeu que les artistes ont conçu ?

Dira-t-on bientôt à un assistant dans Unreal : « Voilà mon niveau de test fait de boîtes simples, transforme-le en cathédrale. » ? Cela mènera-t-il à une uniformisation des graphismes ? À une crise pour les artistes 3D ?

Présentation du DLSS 5 par nVidia
Source : nVidia

Tout est possible. Il est également possible que les joueurs ne veuillent pas de cette technologie. Mais si actuellement les rendus peuvent se trouver dans la vallée dérangeante, il y a fort à parier que ça va rapidement devenir indiscernable d’un rendu classique de très haute qualité. Une fois la boîte ouverte, difficile de la refermer.

Reste le problème de confier la direction artistique à une machine, et le fait que cette technologie est encore une fois propriétaire.

Et ça c’est un problème plus important qu’on ne le penserait, car il concerne en fait plus d’utilisateurs que les libristes convaincus. En effet, si nVidia avec son DLSS 5 altère à ce point le rendu des jeux avec un réseau de neurones, il y a fort à parier qu’AMD et Intel vont suivre.

Mais pas avec le même modèle, pas avec la même technique. Et donc produiront un résultat différent. On peut donc craindre que selon la carte de l’utilisateur, le rendu soit variable.

La méthode enjolive l’image à un tel point qu’on peut également imaginer se passer de toute autre technique d’illumination pour revenir à de la pure rastérisation. Le raytracing étant alors relégué aux oubliettes des méthodes de rendu. Beaucoup de questions et peu de réponse, on verra bien.

Après cette première présentation du DLSS 5 qui a laissé les joueurs assez mitigés, nVidia a tenu à montrer d’autres usages du rendu neural, avec une présentation au GDC 2026 faisant la démonstration du NTC (Neural Texture Compression). Un système de compression de texture basé sur un réseau de neurone.

Implémentation par moteurs

L’intégration des technologies d’upscaling et de rendu avancé dans un moteur est une tâche qui peut être complexe.

Sur les moteurs propriétaires, Unreal Engine 5 intègre nativement le raytracing, le DLSS, le FSR et le XeSS. Epic a les moyens pour maintenir ces intégrations à jour et a un soutien de nVidia, AMD et Intel.

Unity les gère également. Ne les utilisant pas je ne saurais en parler avec pertinence, ça a l’air de très bien fonctionner. Il est intéressant de noter qu'Intel ne publie plus son plugin Xess pour Unity, pendant que le DLSS est implémenté au travers du High Definition Render Pipeline

Pour les moteurs libres comme Godot, la situation différente.

Le raytracing n’était pas forcément une technologie très pertinente ni très facile à implémenter pour des jeux indépendants il y a quelques années. Il n’y a donc pas eu de vrai volonté de l’implémenter, d’autant que d’autres techniques plus classiques existent et fonctionnent sur toutes les cartes, permettant un rendu très qualitatif.

Mais cette situation qui est restée au point mort pendant quelques années a changé assez rapidement, avec une PR pour « mettre en place la plomberie nécessaire au raytracing ». Elle a été intégrée début 2026 dans la version 4.7, et dans la foulée nVidia a publié un fork de Godot supportant le pathtracing et le DLSS. Cette expérimentation ne prend en charge actuellement que les cartes nVidia, mais se base sur la PR mentionnée plus haut, et devrait à terme permettre un pathtracing agnostique de la carte utilisée.

À voir cependant si elle sera intégrable en l’état, ayant été codée avec l’aide de Claude et de Cursor. Elle permet en tout cas de montrer ce qui est actuellement possible en utilisant les briques bas niveaux de Godot, et permet d’espérer voir le tracé de rayon officiellement utilisable avec le moteur dans un avenir proche. Pour rester indépendant d’un vendeur de carte, il faudra aussi intégrer un débruiteur en remplacement de celui utilisé, spécifique à nVidia. Cette vidéo de Leroy Sikkes de chez nVidia au GDC 2026 présente toute la méthodologie du projet.

Le FSR 3 (le dernier à être resté libre et agnostique) est intégrable, mais actuellement seul le FSR2 est disponible sans compiler une PR. Le DLSS et le XeSS le sont aussi techniquement, via des greffons communautaires ou officiels, mais requièrent une acceptation de licences propriétaires. Ils ne seront certainement jamais intégrés directement dans le moteur, pas sans changement de licence. Le FSR 4 tombe dans la même catégorie pour le moment du fait de l’incertitude sur sa licence, même si l’implémentation publiée par erreur par AMD était utilisable, elle concerne DirectX, et non Vulkan, et ne pourrait être exécutable que sous Windows (ou éventuellement via Wine/Proton/DXVK).

Si on regarde du côté de Bevy, des contributeurs ont proposé des implémentations du DLSS, du FSR et même un début d’implémentation du raytracing avec Solari. Les articles rédigés par l’auteur de Solari sont d’ailleurs fabuleux.

Au-delà de tout ça, dans le but de réduire l’impact sur les performances et de produire un meilleur résultat, les technologies de raytracing se voient souvent complétées par des dé-bruiteurs et une pelletée de technologies propriétaires assistées par IA.

Comparaison raytracing et debruiteur
Source : Dépôt NRD

L’image brute d’un rendu par lancer de rayon est un champ de points colorés aléatoires. Pour en faire une image propre, il faut la débruiter, et c’est là que l’écosystème de technologies se remet à foisonner.

On peut les classer en deux familles : les débruiteurs analytiques (qui utilisent des algorithmes et du filtrage) et les débruiteurs neuraux (qui utilisent des réseaux de neurones entraînés sur des données de rendu). Les premiers ne nécessitent généralement par une carte particulière alors que les seconds ne sont compatibles qu’avec certaines gammes de cartes.

L’écosystème construit par nVidia est le plus propriétaire de tous, mais c’est de loin le plus complet et le plus documenté. C’est le RTX Kit, il propose le NRD — NVIDIA Real-time Denoiser, un débruiteur analytique qui fonctionne par accumulation temporelle de pixels sur plusieurs frames, et interpolation spatiale entre pixels voisins. Le NRD (une fois n’est pas coutume) est disponible en source ouverte, agnostique de l’API (DX12 et Vulkan), et peut donc être intégré dans n’importe quel moteur.

nVidia fournit également le Ray Reconstruction, un débruiteur neural. Il reconnaît les différents types d’effets raytracing pour prendre de meilleures décisions sur l’utilisation des données temporelles et spatiales, et conserve des informations haute fréquence que les débruiteurs classiques ont tendance à lisser.

Enfin le NRC (Neural Radiance Cache) utilise des réseaux de neurones pour estimer la lumière indirecte avec plus de précision. Extrapolant un éclairage indirect avec moins de lancer de rayons.

AMD a longtemps été en retard sur toute cette gamme de techniques de débruitage et d’amélioration, de même qu’avec l’implémentation et les performances en raytracing. La situation s’améliore avec FSR Redstone, qui veut agréger les technologies dévelopées par AMD dans le but de proposer un équivalent au RTX Kit, mais le retard reste mesurable.

Ainsi l’équivalent AMD du Ray Reconstruction de nVidia est le FSR Ray Regeneration. Un débruiteur basé sur un réseau de neurones qui prédit et restaure les détails raytracing. Il ne nécessite pas d’être lié à un framework de rendu spécifique, ce qui est un avantage pratique. La qualité est apparement en dessous de ce que propose nVidia.

Le FSR Radiance Caching est conceptuellement proche du NRC de nVidia, mais AMD est encore en phase de déploiement — la mise en production était prévue pour 2026.

AMD n’a pas de débruiteur analytique grand public équivalent au NRD, ce qui laisse encore un trou dans sa raquette pour les cartes qui ne peuvent pas utiliser le FSR Redstone.

Intel est le moins avancé des trois sur ce front. Son offre se concentre autour de XeSS 2.

XeSS 2 comprend trois technologies : XeSS Super Resolution (la mise à l’échelle AI), XeSS Frame Generation (interpolation de frames), et Xe Low Latency (XeLL), qui s’intègre au moteur de jeu pour réduire la latence d’entrée.

Intel n’a pas de débruiteur neural dédié au raytracing comparable au Ray Reconstruction ou au FSR Ray Regeneration. Pour le débruitage, les jeux utilisant les cartes Arc sont tributaires des débruiteurs intégrés aux moteurs (NRD si le développeur l’a intégré, débruiteurs propriétaires des moteurs comme Lumen, etc.).

Il faut mentionner que depuis des années, Intel et la communauté open source proposent Open Image Denoise (OIDN), un débruiteur libre basé sur des réseaux de neurones, utilisé notamment dans Blender et d’autres applications de rendu offline.

Également des algorithmes comme ReSTIR visent à réutiliser les tracés d’une image précédente pour réduire le temps de rendu.

Impact sur les performances

Pour se faire une bonne idée de l’impact du raytracing, il peut être intéressant de comparer des titres usant de cette technologie et de la rastérisation plus classique.

Cyberpunk 2077 est par exemple une vitrine du raytracing et du pathtracing.

Cette vidéo donne un bon aperçu technique, pour un rendu en 1440p, avec DirectX12 et en qualité utra. Une RTX 4070 Ti passe ainsi de 100 IPS en rastérisation à 80 en raytracing puis à 51 en pathtracing. La RX 7900 XTX d’AMD elle part de 134 IPS, puis 59 en raytracing et 20 en pathtracing. Et les deux carte utilisent DLSS/FSR pour atteindre ces chiffres.

La perte d’IPS est abyssale chez AMD, la faute à une première implémentation du raytracing alors que nVidia en était déjà à sa troisième itération. La situation s’est un peu améliorée avec les générations suivantes.

Techspot propose un comparatif très complet, avec non seulement l’écart de performance entre rastérisation pure et raytracing mais aussi avec les visuels pour constater (ou non) l’apport du raytracing.

Ce qu’on voit immédiatement c’est que dans beaucoup de jeux, la différence visuelle est minime. Les techniques classiques sont en effet terriblement efficaces pour imiter les effets de lumières, d’occlusion ambiante, d’éclairages indirects, etc. Sur d’autres titres (comme Cyberpunk), l’impact est beaucoup plus visible. Il y a donc une différence liée à l’utilisation du raytracing. La plupart des jeux présentés dans le comparatif utilisent le lancer de rayon dans une approche hybride, en complément de la rastérisation.

L’impact sur les performances est réduit, de même que la différence visuelle. Par ailleurs, la direction artistique change également la donne. Si un niveau ne comporte aucune surface réflective, on aura du mal à constater l’apport du raytracing.

De manière générale, si le lancer de rayon est pleinement utilisé, on table sur environ 30-50% de performances en moins. Et c’est déjà fantastique si on se rappelle d’où on vient.

Dans sa publication THE RENDERING EQUATION, Kajiya présente deux images qui font 256 × 256 pixels, générées sur un IBM-4341. La première ayant pris 401 minutes de temps CPU et la seconde 533 minutes.

On arrive aujourd’hui, 40 ans plus tard, à rendre des images en 4K avec une fluidité suffisante pour le temps réel. En outre, il est probable de voir les performances de rendu augmenter dans les prochaines années.

Impact sur le développement

Le raytracing et le pathtracing, c’est génial, mais pour le développeur qui doit sortir un jeu, ça représente un sacré paquet de nouvelles contraintes.

Déjà, le matériel supporté. Si vous développez un jeu avec le pathtracing comme pilier central, vous excluez de fait une bonne partie de votre audience potentielle. Les cartes avec des unités matérielles dédiées au lancer de rayon restent, en 2026, loin d’être universelles. D’après les enquêtes de Valve, la moitié des cartes les plus utilisées ne le gère pas ou pas très bien.

Les joueurs sur des machines plus modestes, ou sur des cartes trop anciennes, ne pourront pas jouer à votre jeu — ou joueront dans des conditions dégradées. Pour un studio qui vise la plus large audience possible, c’est compliqué.

C’est d’ailleurs pourquoi la plupart des jeux qui utilisent le raytracing le font de manière hybride. On conserve la rastérisation comme base, et assaisonnent avec du lancer de rayon sur certains effets précis : les reflets, les ombres, l’occlusion ambiante. Le raytracing est un bonus visuel pour ceux qui ont le matériel pour en profiter, pas une fondation sur laquelle repose tout le rendu. Mais certains jeux comme Indiana Jones et le Cercle Ancien utilisent explicitement et uniquement le lancer de rayon, rendant leur utilisation impossible sans une carte récente au grand dam des joueurs les moins bien lotis.

Pour le développeur, cela signifie qu’il faut souvent maintenir deux méthodes de rendu en parallèle : la rastérisation (et toutes ces techniques raffinées), et le raytracing. Deux approches très différentes, deux séries de bugs potentiels, deux validations distinctes. Conduisant inévitablement à un surcoût appréciable.

Le raytracing a besoin d’accéder à l’intégralité de la géométrie de la scène pour fonctionner, y compris ce qui n’est pas visible à l’écran. Là où la rastérisation peut se permettre d’ignorer allègrement tout ce qui est hors champ (autant que faire se peut). Le lancer de rayon, lui, doit potentiellement rebondir sur n’importe quelle surface. Cela implique de gérer des structures d’accélération (les BVH, Bounding Volume Hierarchies) qui doivent être mises à jour à chaque image pour les objets en mouvement. Un coût supplémentaire, là encore, même si c’est ce qui permet notamment d’afficher des réflexions complètes.

Du côté des artistes 3D, le passage au raytracing change aussi les habitudes de travail. Une part fascinante de ce métier consiste justement à tricher habilement : placer des sources de lumière pour compenser l’absence d’illumination globale, peindre à la main des cartes de lumière, jouer avec des sondes de réflexion, développer des shaders en araméen à la limite de la prestidigitation et du pacte diabolique. Des techniques qui demandent de l’expérience et un certain sens artistique du bricolage et de l’adaptation.

Avec une propagation de la lumière physiquement réaliste, certaines de ces astuces deviennent complètement inutiles — ce qui peut être un soulagement — mais certaines habitudes et flux de travail doivent être abandonnées ou repensées. Une lumière placée à un endroit étonnant pour une raison purement artistique va se comporter différemment dans un moteur qui simule la physique réelle de la lumière.
D’un autre côté, le fait de pouvoir visualiser le comportement réaliste de la lumière et des réflexions dans une scène permet aussi de s’en approcher plus finement avec les techniques classiques.

Le raytracing peut simplifier certains aspects du travail (plus besoin de calculer à l’avance des lightmaps, les réflexions et les ombres se génèrent automatiquement; tout ceci avec un coût en termes de performance. Un coût d’autant plus pesant que le prix des composants s’est envolé à cause de l’intelligence artificielle.

La question du DLSS 5 et plus généralement du rendu neural mentionnée plus haut ajoute une couche de complexité supplémentaire. Si le rendu peut être altéré (voir complètement généré) par un réseau de neurones, la notion même de direction artistique devient discutable.

Les artistes conçoivent une ambiance, une intention visuelle. Disent des choses au travers les images, la musique. Mais si tout passe ensuite dans une boîte noire qui réinterprète différemment ses entrées selon la carte du joueur, qui est vraiment responsable du résultat final ?

Sera-t-il encore satisfaisant pour les créateurs et les joueurs de concevoir des mondes virtuels dans ces conditions ?

C’est une question que l’industrie commence à peine à se poser sérieusement, et elle se pose pour toutes les œuvres artistiques depuis l’avènement de l’IA.

Enfin, si le développement se fait avec un moteur libre comme Godot ou Bevy, la situation est encore un peu particulière. On l’a vu plus haut, l’écosystème du raytracing et ce qui gravite autour est aujourd’hui dominé par des technologies propriétaires. Et les moteurs libres, par définition, ne peuvent pas les intégrer directement sans franchir des lignes qui iraient à l’encontre de leurs principes — et au moins de leur licence.

Concrètement, ça veut dire que le développeur qui choisit Godot aujourd’hui pour faire un jeu avec du raytracing va défricher un territoire sauvage. Les briques de base existent mais rien n’est prêt à être utilisé sans se retrousser les manches sérieusement.

Pour la mise à l’échelle, le FSR 2 est disponible, le FSR 3 intégrable. Les DLSS ou XeSS peuvent être implémentés, mais avec des licences à accepter, ce qui rend improbable toute intégration officielle dans le moteur. Le développeur qui veut tout ça devra donc assembler lui-même sa chaîne, en acceptant de dépendre de solutions tierces dont la maintenance n’est pas garantie par l’équipe de Godot.

Le plugin Solari de Bevy est pour le moment réservé aux cartes nVidia également, ça changera certainement rapidement.

Si on regarde du côté de Wicked Engine par contre on a bien un moteur supportant le raytracing et fonctionnant sur toutes les cartes. Il est un peu plus niche que Godot ou Bevy mais très impressionnant.

Pour revenir à Godot, ce n’est pas forcément un drame. Il dispose de techniques d’illumination globale très capables comme le SDFGI, le VoxelGI, les sondes de reflexion, etc, qui permettent d’atteindre des rendus très convaincants sans lancer un seul rayon. Et pour beaucoup de styles artistiques (jeux stylisés, pixel art, low poly) la différence entre raytracing et rastérisation ne se justifie pas vraiment.

Il y a eu d’autres approches ces dernières années qui ont eu un impact sur les moteurs, les techniques de géométrie virtuelle par exemple. Nanite, disponible dans l’Unreal Engine en est un bon exemple.

Les maillages sont découpés en hiérarchies de clusters de triangles lors de l’import, puis ces clusters sont échangés à la volée selon la vue caméra, sans couture visible. Remplaçant les techniques plus communes de LOD. En pratique, ça veut dire qu’on peut importer directement des scans photogrammétriques de plusieurs millions de polygones, sans passer par les étapes habituelles de re-topologie et d’optimisation. Permettant de ne plus se soucier du budget de polygones et des LODs.

Du moins dans certaines limites. Si cette approche permet d’avoir des transitions inexistantes entre différents niveaux de détails, il n’en reste pas moins que dans beaucoup de cas, une utilisation des LODs et un bon travail d’optimisations des ressources et du maillage permet d’atteindre de meilleures performances. Importer les yeux fermés des object 3D de plusieurs millions de polygones sans même s’en soucier implique forcément des cas sous optimisés. Mais la technologie est là et mature tranquillement.

Introduction To Modern Rendering présente d’une façon digeste et intéressante les technologies du raytracing et des mesh shader.

Du côté des moteurs libres, c’est en chantier. La proposition pour Godot date de 2021, ouverte peu après l’annonce d’Unreal Engine 5, et est toujours ouverte. Rien de concret n’a atterri dans le moteur à ce jour. Bevy est plus avancé sur le sujet : son contributeur JMS55 (encore lui, c’est la personne derrière Solari) travaille activement sur une implémentation, et son article sur la version 0.16 détaille les avancées récentes — notamment l’amélioration de la qualité du DAG (la hiérarchie de clusters). C’est encore une fois très agréable de lire ces articles riches de détails et accessibles.

Bref, pour qui veut être à la pointe de la technique sans passer par du code propriétaire, la route est encore longue. La bonne nouvelle, c’est qu’elle est libre.

De nouveaux venus (Moore Threads, Lisuan Technology)

Le marché des GPU est depuis très longtemps un duopole de fait entre nVidia et AMD, avec Intel en troisième position encore fragile. Bon, ok, nVidia rafle l’essentiel du marché. Mais AMD tire son épeingle du jeu (et sous Linux ils jouissent d’une réputation bien plus reluisante que nVidia).

Mais depuis quelques années, avec le contexte géopolitique tendu, la Chine a accéléré le développement de ses propres fabricants de cartes graphiques. Les restrictions américaines à l’exportation de composants avancés vers la Chine, qui concernent notamment les GPU nVidia les plus puissants, n’y sont pas pour rien.

Deux sociétés font parler d’elles : Moore Threads et Lisuan Technology.

Moore Threads est la plus ancienne des deux, fondée en 2020 par Zhang Jianzhong, ancien vice-président de nVidia Chine. Ses cartes actuelles, les MTT S80 et S90, existent depuis quelques années déjà, mais sont restées assez loin derrière la concurrence. Pour la prochaine génération, basée sur l’architecture Huagang, Moore Threads annonce pour sa puce Lushan des gains de 15x en performance dans les jeux AAA, 50x en raytracing, et 16x en traitement géométrique. Des chiffres spectaculaires, mais sans spécifications ni données de benchmarks à l’appui pour l’instant. Et bien sûr, tout dépend d’où on part.

À prendre avec des pincettes donc, mais l’ambition est là et les moyens aussi. La MTT S90 serait au coude à coude avec la RTX 4060.
Ce qui n’est pas une mince affaire pour un fabricant qui n’existait pas il y a 6 ans.

Lisuan Technology est un peu plus récente encore puisque fondée en 2021. Aucune carte n’est encore sortie (même si les envois auraient commencé).

La carte gaming LX 7G106, fabriquée par TSMC en 6nm, est prévue pour le 18 juin 2026 en Chine. En termes de performances synthétiques, elle se situerait dans les parages d’une RTX 4060.

En revanche, la carte ne supporte pas le raytracing.

Ce qui est notable pour nos sujets, c’est que ces deux acteurs, à des stades différents de maturité, arrivent dans un écosystème où les technologies de rendu avancé sont dominées par des standards propriétaires. Pas de DLSS, pas de FSR 4, pas de Ray Reconstruction. Ils devront soit implémenter leurs propres équivalents, soit s’appuyer sur les technologies agnostiques comme le FSR 2/3 ou le NRD d’nVidia.

Leur impact sur le marché mondial restera sans doute limité à court terme, les joueurs ayant de solides alternatives. Mais pour le marché chinois, qui représente une part considérable des joueurs PC mondiaux, ces alternatives domestiques ont une pertinence réelle, et représente des enjeux en termes d’autonomie. Si l’un d’eux parvient à produire une carte compétitive avec des pilotes stables, ce sera un signal fort que le quasi-monopole de nVidia n’est pas éternel.

Espérons que les pilotes seront libres et les technologies développées aussi, ce serait bien.

Et les performances dans tout ça

On a vu défiler beaucoup de technologies dans cet article. Des acronymes abscons, des architectures, des promesses de gains en tous genres. Mais si on prend un peu de recul : est-ce que tout ça rend les jeux plus agréables à jouer ?

Non. Bien sûr. Évidemment.

Attention, je suis aussi sensible que n’importe qui à de beaux graphismes, mais le nerf de la guerre n’est pas là. Surtout quand on voit que le prix des GPU, du stockage, de la RAM et par effet de bords, de tous les éléments d’un PC, ont flambé ces dernières années. Sous l’effet de la demande apparemment infinie de l’industrie de l’IA. Les cartes qui permettent de profiter correctement du raytracing et des technologies qui l’accompagnent se situent dans des gammes de prix de plus en plus élevées.

Leur consommation ne cesse de grimper (une RTX 5090 est une grosse brique tant son radiateur est gros), de même que leur impacte écologique. On parle tout de même de composants PC tellement énergivores qu’ils forcent à changer toute l’alimentation de la machine et amènent avec eux une nouvelle norme de connecteur d’alimentation (qui n’a pas forcement très bonne presse).

Et même à des niveaux plus raisonnables, une carte milieu de gamme récente représente un investissement conséquent pour un résultat qui, on l’a vu, n’est pas toujours spectaculairement supérieur à ce qu’on obtenait avant.

L’augmentation des prix est telle que la demande pour des cartes mère en DDR3 poussent certains fabriquant à renouveler leurs stocks.

Ensuite, le Raytracing, les DLSS, FSR, débruiteurs neuraux, la génération d’images, la géométrie virtuelle. Chacune de ces technologies a été conçue pour résoudre un problème (parfois causé par la technologie qui le précède), et chacune en a introduit de nouveaux. Des artefacts visuels, de la latence, des incompatibilités entre fabricants, des exigences matérielles toujours plus élevées, des licences propriétaires. L’empilement de solutions finit par former une pile fragile, le jeu vidéo est un assemblage hétéroclite de techniques barbares et sauvages depuis ses débuts, mais on commence — avec ces nouvelles technologies biberonnées à l’IA — à s’éloigner de la recherche algorithmique pure, de cet esprit MacGyver qui caractérise si bien le développement de jeux vidéos, pour arriver sur une logique de boîte noire.

Ou bien c’est dans la droite ligne de l’héritage des pionniers du jeu vidéo, et ce sentiment n’est en fait qu’une incompréhension face à une révolution trop rapide pour être assimilée correctement.

Face à ça, aller à contre-courant est non seulement possible, mais peut être couronné de succès. Des jeux comme Celeste, Hollow Knight, Vampire Survivor ou plus récemment Balatro, n’ont aucun raytracing, géométrie virtuelle ou débruiteur neural. Ils tournent sur des machines modestes, parfois vieilles de dix ans ou plus, et se jouent avec un plaisir non moins vif.

À l’autre bout du spectre, des productions AAA ultra-techniques ont déçu leurs joueurs malgré — ou parfois à cause de — leur sophistication technique. Comme Pokémon Legends: Z-A qui (au-delà son contenu vidéoludique) souffre d’un manque flagrant d’optimisation, ce qui est un comble quand on parle de la licence Pokemon. Une licence dont les premiers jeux repoussaient les limites de leur support physique.

La technique se remarque essentiellement quand elle est mauvaise. Une conception ancienne mais bien réalisée sera souvent plus agréable qu’une autre plus récente mais à l’implémentation faillible.

De plus en plus de joueurs en ont marre de devoir investir dans des composants toujours plus puissants et réclament des jeux plus optimisés. Mais les grandes compagnies ont apparemment d'autres préoccupations.

La rastérisation bien maîtrisée, avec les techniques classiques évoquées en début d’article, permet encore en 2026 de produire des rendus magnifiques et des expériences fluides sur le parc matériel le plus large. Des moteurs comme Godot, même sans SDFGI ou sondes de réflexion, permettent d’atteindre des résultats visuellement très convaincants sans toucher les limites du matériel.

Je ne doute pas que le raytracing apporte énormément au jeu vidéo, ses qualités sont indéniables. Seulement dans le contexte actuel, je ne cracherais pas sur plus d’optimisation.

Possédant un Steam Deck de Valve, j’aime le fait de pouvoir baisser la consommation du SOC de la console à 3 ou 5 watts.
Ça rend la machine silencieuse, efficiente, et la batterie tient plus longtemps.

Jouer à Batman: Arkham Knight dans ces conditions permet d’atteindre 60 image par secondes quasiment tout le temps. Ce qui est impressionnant, car en plus le jeu est vraiment très beau.
Il a déjà 11 ans, mais reste magnifique. On pourra se rappeler qu’en 2015 il avait souffert de sa mauvaise optimisation.

La grogne des joueurs poussant Rocksteady Studios à mettre la distribution en pause, le temps de résoudre les problèmes techniques avec l’aide d’AMD et nVidia. Problèmes qui auraient évidemment pu être remontés et corrigés en phase de test.

Aujourd’hui on voit des jeux sortir sans la prise en charge de certaines cartes, comme Crimson Desert (qui recevra finalement plus tard la gestion d’Intel), des performances désastreuses à l’image de Borderlands 4 qui semble avoir réussi à transformer ses joueurs en bêta-testeurs, ou bien découpés à la tronçonneuse pour le vendre petits bouts par petits bouts : (Les Sims 4 on parle de toi).

Alors, quand en plus de ces problèmes que les industriels du jeu vidéo nous ont apportés, on ajoute du raytracing uniquement pour surfer sur la vague, ça ne fait qu’enfoncer le clou dans le cercueil de nos machines.

D’un autre point de vue, et en mettant de côté le raytracing, les technologies comme le DLSS et le FSR permettent de prolonger la durée de vie d’un matériel vieillissant. En tout cas, si ce n’est pas utilisé comme un pansement pour palier des performances passables.

Heureusement, des productions comme Resident Evil 4 ou Red Dead Redemption 2 montrent qu’il est encore possible de faire des jeux visuellement magnifiques (et surtout de bons jeux) qui tournent avec trois fois rien. Split Fiction (qui possède un gameplay en perpétuelle évolution), est visuellement superbe et tourne au poil sur une RX580.

Capture d’écran de Split Fiction, qui n’utilise pas le raytracing
Source : The Gamer

On aura sûrement le meilleur des deux mondes un jour ! Enfin j’espère, sinon on pourra toujours se réfugier dans le jeu de rôle papier.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

ÉducaLibre 2026 sera ce que nous en ferons ensemble. À bientôt à Bruxelles.

ÉducaLibre 2026 : appel à propositions d'ateliers, conférences et tables rondes

Bruxelles, 4-6 juillet 2026—Université libre de Bruxelles

Un rendez-vous européen qui manquait

Partout en Europe, des enseignants innovent avec des logiciels libres, des développeurs créent des outils pédagogiques ouverts, des makers fabriquent, des chercheurs explorent, des artistes partagent. Ces initiatives foisonnent—mais restent trop souvent isolées, ignorées les unes des autres, condamnées à réinventer sans cesse la même roue.

ÉducaLibre veut changer cela.

Du 4 au 6 juillet 2026, l'Université libre de Bruxelles accueille la première édition de ce rendez-vous européen des communs éducatifs : trois jours pour croiser les regards, partager les expériences, tisser des collaborations durables, et construire ensemble les ressources pédagogiques libres de demain.

L'événement est organisé par l'ASBL EduCode, qui avait déjà porté les éditions EduCode 2018 (1200 participants au BOZAR), 2019 et 2020, et dont certains membres ont contribué à l'organisation des RMLL 2013 à Bruxelles. Le lieu—le bâtiment U de l'ULB, domicile du FOSDEM depuis plus de vingt ans—n'a pas été choisi par hasard.

Ce qu'on y fera

Cinq pistes thématiques en parallèle :

  • politiques publiques et souveraineté numérique
  • pédagogie et pratiques de classe (GeoGebra, Moodle, Python, NumWorks, LaTeX, …)
  • administration et déploiement technique dans les établissements
  • innovation, IA et recherche en éducation
  • économie et entrepreneuriat du libre éducatif

Et une piste transversale : art, musique, création, poésie—parce que l'éducation se nourrit aussi de culture et de sensibilité.

En parallèle : des ateliers pratiques, des hackathons, des démonstrations, des tables rondes, des stands de projets. Le tout sous licences libres, avec captation vidéo publiée en CC-BY-SA.

Public attendu : 500 à 800 participants de toute l'Europe, enseignants du primaire au supérieur, développeurs, décideurs politiques, chercheurs, artistes, entrepreneurs.

L'appel à propositions est ouvert

C'est là que vous entrez en scène.

Vous utilisez un outil libre en classe et vous avez envie de le faire découvrir ? Vous avez mené une migration réussie dans votre établissement ? Vous développez un projet éducatif libre que le monde devrait connaître ? Vous avez des choses à dire sur la souveraineté numérique dans l'éducation, sur les modèles économiques du libre, sur l'IA et ses enjeux pédagogiques ?

Proposez une intervention : https://propositions.educalibre.eu

Formats acceptés :

  • atelier pratique (1h30)
  • conférence ou présentation (45 min)
  • table ronde ou débat (1h15)
  • démonstration de projet ou d'outil (30 min)
  • hackhaton
  • et toute autre forme que vous imaginez

Les langues de l'événement sont le français, le néerlandais, l'anglais et l'allemand—mais toute proposition dans une autre langue européenne sera examinée avec bienveillance.

La date limite pour soumettre une proposition est fixée au 14 avril 2026.

Pourquoi ça compte

L'éducation européenne est à un tournant. Le Schleswig-Holstein migre massivement vers le libre. La France structure ses politiques publiques autour de solutions souveraines. Des expériences remarquables existent au Kerala, en Catalogne, dans de nombreuses communes belges et françaises. Mais ces expériences ne se parlent pas assez.

ÉducaLibre n'est pas une conférence de plus où l'on écoute passivement des experts. C'est un espace horizontal, construit par et pour ses participants. Le programme sera ce que la communauté en fera.

Parmi les intervenants déjà pressentis :
1. Alexis Kauffmann (direction du numérique éducatif, ministère de l'éducation nationale français),
2. Frank Karlicheck (Nextcloud),
3. Tristan Nitot,
4. Pierre Pezzardi (Dinum)
5. Emmanuel Zimmert (ladigitale.dev)
6. des représentants de Framasoft, April, Aful, la FSFE, et des décideurs politiques belges et européens.

Pour aller plus loin

Tous les contenus produits seront publiés sous licence CC-BY-SA 4.0.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  
❌