From Fedora Project Wiki
(Created page with "En ce mardi 14 mars, la communauté du Projet Fedora sera ravie d'apprendre la disponibilité de la version Beta de Fedora Linux 38. Malgré les risques concernant la stabilité d’une version Beta, il est important de la tester ! En rapportant les bogues maintenant, vous découvrirez les nouveautés avant tout le monde, tout en améliorant la qualité de Fedora Linux 38 et réduisant du même coup le risque de retard. Les versions en développement manquent de testeur...")
 
mNo edit summary
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
En ce mardi 14 mars, la communauté du Projet Fedora sera ravie d'apprendre la disponibilité de la version Beta de Fedora Linux 38.
En ce mardi 18 avril, les utilisateurs du Projet Fedora seront ravis d'apprendre la disponibilité de la version Fedora Linux 38.


Malgré les risques concernant la stabilité d’une version Beta, il est important de la tester ! En rapportant les bogues maintenant, vous découvrirez les nouveautés avant tout le monde, tout en améliorant la qualité de Fedora Linux 38 et réduisant du même coup le risque de retard. Les versions en développement manquent de testeurs et de retours pour mener à bien leurs buts.
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 vu comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.


La version finale est pour le moment fixée pour le 18 ou 25 avril.
Cette 38e édition propose principalement une mise à jour de son interface principale GNOME 44 et de l'environnement de bureau plus léger Xfce 4.18. Notons l'arrivée d'images officielles pour les environnements Sway, Budgie et Phosh, ce dernier étant l'interface de GNOME pour mobile !
 
[[File:GNOME-Bureau-F37.png|thumb|center|Bureau de GNOME]]


== Expérience utilisateur ==
== Expérience utilisateur ==


* Passage à GNOME 44 ;
'''Passage à GNOME 44.''' Cette version apporte comme d'habitude de nombreuses fonctionnalités pour l'interface par défaut de Fedora Workstation.
* La petite souris Xfce est mise à jour après 4.18 tours de roue ;
 
* Le gestionnaire de connexions SDDM (utilisé par KDE par exemple) utilise Wayland par défaut ;
Tout d'abord le sélecteur de fichiers permet de voir les fichiers en grille avec prévisualisation, ce qui simplifie la sélection pour l'envoi de photos ou de vidéos par rapport à la vue en liste qui était jusqu'à présent la seule disponible.
* L'image Fedora Linux avec le bureau Budgie devient une image Spin officielle ;
 
* De même pour l'image Fedora Linux avec le gestionnaire de fenêtre Sway ;
Le panneau de configuration bénéficie d'améliorations diverses. Il est possible de partager un mot de passe Wifi par un simple QR code affiché à l'écran. Concernant le réseau les VPN Wireguard sont officiellement pris en charge. La page ''sécurité de l'appareil'' est plus simple à comprendre, permettant de savoir en un clin d’œil si la vérification a échoué ou réussi, et le résultat de cette vérification. Le résultat détaillé peut facilement être copié / collé pour l'envoyer sur des forums par exemple.
* L'utilitaire ''initial-setup'' n'est plus fourni dans l'image KDE et l'image Kinoite ;
 
* Flathub n'est plus filtré par défaut lors de l'installation de Fedora Linux, tous les paquets proposés sont donc accessibles ;
La page ''accessibilité'' a été remaniée également pour être plus simple d'accès. Quelques nouvelles options ont été ajoutées comme la possibilité de sur-amplifier le son au détriment de sa qualité en cas de déficit auditif. Il y a un champ de test pour la configuration du clignotement du curseur de souris ou encore la possibilité de toujours voir la barre de défilement sur le côté.
* Le timer systemd pour l'extinction de la machine passe de 2 minutes à 45 secondes, envoyant un signal SIGABRT si jamais des services n'ont pas réussi à s'arrêter dans ce délai ;
 
* Les images Live sont modernisées, abandonnant l'usage important de ''Kickstarts'' pour les générer afin d'être plus flexible, notamment en créant automatiquement une partition de sauvegarde si de l'espace libre est détecté sur la clé USB par exemple ;
La page ''son'' permet de désactiver le son d'alerte, la liste des alertes a d'ailleurs été déplacée dans une fenêtre popup. La page de test du son s'adapte mieux aux différentes tailles d'écran.
* cups-filters passe à la version 2.0b ;
 
* Dans le domaine de l'impression le paquet ''ipp-usb'' devient une dépendance faible de ''cups'' ou de ''sane-airscan'' pour proposer la prise en charge des imprimantes USB par défaut sans installations supplémentaires de la part de l'utilisateur ;
La page ''souris et pavé tactile'' a été entièrement réécrite. Des vidéos montrent la direction du défilement pour rendre l'explication plus claire à l'utilisateur. De même pour les tests des paramètres, la page a été refaite pour être plus simple et complète.
* La distribution LaTeX TeXLive version 2022 est proposée, qui est la dernière version avec une prise en charge longue durée ;
 
* L'utilitaire ImageMagick tire profit de sa 7e version.
Pour le reste, le menu principal affiche la liste des applications en arrière plan, pour l'instant seules les applications Flatpak sont concernées. L'application ''Logiciels'' est plus réactive et elle supprime automatiquement les runtimes Flatpak quand ils ne sont plus nécessaires. Le logiciel ''Fichiers'' quant à lui réintroduit la vue ''expansion de dossiers'' qui avait été brièvement supprimée lors du passage à GTK4. Il est maintenant possible de déplacer un onglet vers une autre fenêtre.
 
Le navigateur Web de GNOME passe d'ailleurs à GTK4 ce qui améliore la cohérence de l'interface avec le reste de l'écosystème et sa réactivité. Une fenêtre popup surgit pour enregistrer ou non un mot de passe lors de la connexion à un site web.
 
'''La petite souris Xfce est mise à jour après 4.18 tours de roue.''' Cette version apporte aussi de nombreux changements pour sa communauté comme l'amélioration du renommage des fichiers dans ''Thunar'' pour remonter des erreurs ou avoir de long noms de fichier. Ce dernier comme le terminal ou l'éditeur de texte peuvent voir leur raccourcis clavier personnalisés dans leurs préférences. Les miniatures de fichiers sont générées plus rapidement.
 
Le navigateur de fichiers affiche le nombre de fichiers dans un répertoire lors d'une vue en liste, la colonne de date de création d'un fichier est également disponible. Les dix dernières opérations sur les fichiers peuvent être annulées ou effectuées à nouveau. Chaque fichier peut être mis en évidence avec une couleur spécifique en fond. Sa barre des tâches peut être personnalisée. Elle bénéficie d'une vue scindée au sein d'une même fenêtre pour voir deux dossiers différents en même temps. Par ailleurs, elle permet la recherche récursive dans les dossiers ou de voir les derniers fichiers récemment utilisés.
 
Le tableau de bord fusionne ''DateTime'' et l'horloge pour les préférences concernant l'heure et le calendrier pour supprimer des doublons. L'horloge dispose par ailleurs d'un affichage alternatif en ''binaire''.
 
Le gestionnaire de configuration comme pour GNOME bénéficie de certains changements. Il est possible de décider quelle action effectuer quand un nouvel écran est branché.
 
Enfin, le gestionnaire de fenêtres permet la synchronisation verticale de son affichage. Une meilleure mise à l'échelle de l'interface est également proposée.
 
'''Le gestionnaire de connexions SDDM (utilisé par KDE par exemple) utilise Wayland par défaut.''' Cela signifie que le spin KDE Plasma et Kinoite ont fini leur transition vers Wayland par défaut. Cela a été rendu possible grâce au travail en amont pour le permettre au sein de SDDM, mais aussi aux changements opérés dans Fedora Linux 36 qui a remplacé fbdev par simpledrm pour la gestion de l'affichage en cas d'absence de pilote vidéo dédié.
 
'''L'image Fedora Linux avec le bureau Budgie devient une image Spin officielle.''' Cela permet de simplifier la découverte de ce bureau moderne d'une part en le mettant en avant et en facilitant son installation. Sa communauté pourra également l'installer plus rapidement tout en n'ayant pas des composants inutiles par ailleurs.
 
'''De même pour l'image Fedora Linux avec le gestionnaire de fenêtres Sway.''' Cela fourni les mêmes avantages que pour Budgie, avec en plus le bénéfice que Sway, en tant que ''i3 sous Wayland'', peut être exploité sur des machines très minimalistes en puissance ce qui rend son installation directe plus pertinente encore.
 
'''L'utilitaire ''initial-setup'' n'est plus fourni dans l'image KDE et l'image Kinoite.''' Cette application est centrée sur GNOME pour permettre la création de l'utilisateur et quelques paramètres après l'installation, en particulier pour les installations OEM. L'objectif sera de le remplacer plus tard par un utilitaire plus adapté à l'interface de KDE Plasma, en attendant c'est Anaconda qui prend en charge ces paramètres lors de l'installation.
 
'''Flathub n'est plus filtré par défaut lors de l'installation de Fedora Linux, tous les paquets proposés sont donc accessibles.''' Depuis Fedora Linux 35, Flathub est proposé comme un dépôt tiers facilement activable pour récupérer des paquets Flatpak provenant de ce dépôt sans manipulations supplémentaires. Cependant il y avait un filtrage pour supprimer les applications propriétaires, ou les doublons, etc. Cependant cela rendait confus les utilisateurs qui n'avaient pas accès à tout le dépôt et rendait plus difficile la tâche de ceux qui voulaient accéder à ce dépôt en entier.
 
Le filtre est donc supprimé, pour éviter les effets de bords GNOME Logiciels doit proposer dans l'ordre les Flatpak de Fedora, les paquets RPM de Fedora puis les Flatpak de Flathub (ou autre dépôts) par défaut si un logiciel est disponible sous ces formats là. GNOME Logiciels doit garantir de rendre clair le fait que le logiciel à installer est propriétaire ou libre.
 
Pour rappel, ce dépôt Flathub n'est pas actif par défaut.
 
'''Le timer systemd pour l'extinction de la machine passe de 2 minutes à 45 secondes''', envoyant un signal SIGABRT puis un SIGKILL si jamais des services n'ont pas réussi à s'arrêter dans ce délai. En effet un service bloqué dans cette procédure pouvait bloquer le redémarrage ou l'extinction de la machine pendant 2 minutes ce qui est particulièrement long et souvent dû à un problème comme le service PackageKit qui est souvent concerné par cette problématique.
 
Il a été suggéré de baisser cela à 15 secondes, mais cela a été jugé trop agressif pour une première baisse de la durée. L'objectif est d'observer le résultat avec 45 secondes avant d'envisager une baisse supplémentaire. Les services pouvant être longs à s'éteindre dans leur comportement normal peuvent de toute façon désactiver ce temps d'attente ce qui est le cas de PostgreSQL ou de virt-manager pour éviter de mauvaises surprises pour des systèmes qui en ont besoin. Les utilisateurs qui en ont besoin sur leurs services peuvent se renseigner au sujet de ''XDG inhibit'' pour les applications ou de ''systemd inhibit'' pour les services.
 
'''cups-filters passe à la version 2.0b.''' Cette nouvelle version est essentiellement un redécoupage des composants avec ''cups-filters'', ''libcupsfilters'', ''libppd'', ''braille-printer-app'' et ''cups-browsed''. L'objectif est de rendre la prise en charge du format PPD indépendant du reste pour une éventuelle suppression future quand il ne sera plus pris en charge ce qui est planifié pour CUPS 3.X. Les applications spécifiques des constructeurs seront dès lors nécessaires, mais l'avènement de l'impression sans pilotes rend cette contrainte future de moins en moins gênante en pratique.
 
'''Dans le domaine de l'impression le paquet ''ipp-usb'' devient une dépendance faible de ''cups'' ou de ''sane-airscan'' pour proposer la prise en charge des imprimantes USB par défaut sans installation supplémentaire de la part de l'utilisateur.''' En effet de nombreuses imprimantes proposent de nos jours une prise en charge sans pilotes spécifiques pour l'impression via le réseau, mais aussi par USB via le protocole ''IPP over USB'' ce que prend en charge le paquet en question. Par conséquent un utilisateur qui souhaite imprimer ou scanner (et même faxer) aura par défaut une possibilité supplémentaire de s'en servir sans devoir chercher les paquets manquants éventuels. Ceux qui n'en veulent pas pourront toujours supprimer ce paquet dans ce cas précis.
 
'''La distribution LaTeX TeXLive version 2022 est proposée, qui est la dernière version avec une prise en charge longue durée.'''
L'ancien cache personnel devrait être supprimé pour s'assurer du fonctionnement, à savoir supprimer le répertoire `~/.texlive2021`.


== Gestion du matériel ==
== Gestion du matériel ==


* L'installateur Anaconda utilise ''mdadm'' au lieu de ''dmraid'' pour la prise en charge des stockages RAID reposant sur un firmware ou un BIOS ;
'''L'installateur Anaconda utilise ''mdadm'' au lieu de ''dmraid'' pour la prise en charge des stockages RAID reposant sur un firmware ou un BIOS.''' En effet ce dernier n'est plus très maintenu ce qui pose des soucis pour la correction de bogues ou de failles de sécurité. D'ailleurs mdadm est plus utilisé par les logiciels de gestion des configurations RAID de nos jours. Cependant mdadm ne prend en charge que deux formats de RAID : ''Common RAID Disk Data Format'' (DDF) par SNIA et ''Intel Matrix Storage Manager''. Cela signifie que les formats RAID gérés matériellement les plus anciens ne seront pas forcément pris en charge par Anaconda.
* L'image LXQt est proposée pour l'architecture aarch64 ;
 
* Fourniture d'une image avec Phosh, GNOME Shell pour mobile, à destination des téléphones ou des tablettes pour l'architecture x86_64 et aarch64 ;
'''L'image LXQt est proposée pour l'architecture aarch64.''' Le bureau étant particulièrement léger, cela le rend pertinent de le proposer pour cette architecture directement.
* L'architecture s390x utilise les processeurs de la génération z13 comme base, les plus anciens ne seront plus forcément compatibles ;
 
* Les implémentations du serveur X (Xorg et Xwayland) refusent à des clients ayant un boutisme différent du serveur de s'y connecter ;
'''Fourniture d'une image avec Phosh, GNOME Shell pour mobile, à destination des téléphones ou des tablettes pour l'architecture x86_64 et aarch64.''' Cette interface proposée par l'entreprise Purism peut tourner sur des téléphones ou tablettes si les noyaux classiques permettent une telle prise en charge native. Proposer une image dédiée permet cette installation et rend cette action plus facile.
* Première partie de la migration vers une image noyau unifiée (donc unifiant noyau, initrd, ligne de commande du noyau et signature) pour les plateformes avec UEFI mais rien ne change par défaut à ce sujet pour les utilisateurs ;
 
* L'installateur de l'image IoT récupère celui de CoreOS pour simplifier son installation.
'''L'architecture s390x utilise les processeurs de la génération z13 comme base, les plus anciens ne seront plus forcément compatibles.''' Les processeurs de générations antérieures ne sont plus prises en charge par le fabricant. Et l'architecture z13 propose des instructions vectorielles dont il est possible de tirer profit sur l'ensemble des logiciels grâce aux nouvelles options de compilation, ce qui était impossible par la prise des modèles plus anciens.
 
'''Les implémentations du serveur X (Xorg et Xwayland) refusent par défaut à des clients ayant un boutisme différent du serveur de s'y connecter.''' Il devient donc impossible par défaut d'utiliser un client X avec un processeur Intel pour afficher une interface provenant un serveur X sous processeur s390x. En effet ce cas de figure particulier est difficile à prendre en charge en l'état actuel du code, il est peu testé et est source d'une grande surface d'attaque pour un usage considéré comme marginal. Le désactiver par défaut permet de protéger les utilisateurs qui n'en ont pas besoin contre des clients malveillants. Cependant pour ceux qui en ont réellement besoin, il est possible de le résoudre via l'option de configuration ''AllowByteSwappedClients'' dans le fichier `xorg.conf` ou par l'usage de l'option `+byteswappedclients` en démarrant le serveur X.
 
'''Première partie de la migration vers une image noyau unifiée nommée UKI (donc unifiant noyau, initrd, ligne de commande du noyau et signature) pour les plateformes avec UEFI mais rien ne change par défaut à ce sujet.''' L'objectif est de rendre le démarrage du système plus sûr, robuste et uniforme car moins dépendant des spécificités de chaque système, idéalement avec un tel système, le noyau, l'initrd et la ligne de commande seraient uniques sur tous les systèmes Fedora Linux.
 
Cependant c'est irréaliste de tout faire en une étape, trop de choses dépendent encore de la méthode actuelle à savoir l'initrd qui est générée à partir de l'ordinateur de l'utilisateur qui se base notamment sur les pilotes actuellement chargés par le système. Le plan a été phasé ainsi :
 
* Phase 1 : fournir les blocs de base, à savoir pouvoir installer, démarrer et mettre à jour de tels fichiers, pour permettre de développer et de tester des images UKIs en machine virtuelle ;
* Phase 2+ : étendre la prise en charge en gérant de plus en plus de cas d'usage un par un ;
* Phase X : une fois qu'il y a parité avec les noyaux non-UKI, discuter de l'usage par défaut pour tous les cas d'usage. En particulier les images cloud ou serveurs pourraient y passer plus tôt car ils ont moins de contraintes quand le système est virtualisé.
* Non prévu : la suppression des images non UKI.
 
Pour ceux qui veulent tester en machine virtuelle, le paquet ''kernel-uki-virt'' est proposé à cette fin. Dans les difficultés à résoudre il y a la question des secrets matériels provenant de l'UEFI qu'il faut récupérer, il y aussi la partition où se situe la partition système qui doit être auto-détectée ce qui est possible grâce à la norme UEFI. En effet, chaque partition a un type défini sous forme de UUID unique ce qui nous renseigne sur sa nature. Ou encore la question des options particulières à envoyer au noyau pour configurer le système, utilisées par exemple pour éviter le conflit entre le pilote libre ou propriétaire de nVidia.
 
'''L'installateur de l'image IoT récupère celui de CoreOS pour simplifier son installation.''' Ainsi c'est une simple image OSTree qui peut être écrite sur l'espace de stockage via un argument noyau à spécifier. Pas besoin d'utiliser l'outil kickstart ou une quelconque manipulation supplémentaire. L'avantage c'est de simplifier l'installation pour des systèmes avec une connexion Internet lente ou non fiable, l'installation se faisant en une fois après que l'image ait été entièrement récupérée. Cela rapproche également Fedora IoT de l'image de RHEL dédiée à cet usage.


== Internationalisation ==
== Internationalisation ==


* La police par défaut pour la langue thaï et le cambodgien passe à Noto ;
'''La police par défaut pour la langue thaï et le cambodgien passe à Noto.''' Ces langues rejoignent ainsi celles qui avaient déjà effectué ce changement pour Fedora Linux 36 ce qui réduit la taille du système d'environ 344 kio dans ce cas et rend l'affichage plus cohérent pour l'ensemble des langues. La qualité d'affichage devrait aussi être meilleure pour ces langues.
* Tandis que les polices Noto CJK pour les langues chinoises, japonaises et coréennes utilisent la variante ''variable'' au lieu de ''static'' comme auparavant ;
 
* Mise à jour de libpinyin 2.8.
'''Tandis que les polices Noto CJK pour les langues chinoises, japonaises et coréennes utilisent la variante ''variable'' au lieu de ''static'' comme auparavant.''' Cette variante est en effet plus légère d'un facteur deux environ, de quoi gagner plusieurs dizaines de Mio sur le système par défaut et sur les images Live.
 
'''Mise à jour de libpinyin 2.8.''' Ce gestionnaire d'entrée de saisie pour la langue chinoise ajoute la proposition d'expressions candidates à partir de l'entrée en cours. Cela permet d'accélérer la saisie dans cette langue.


== Administration système ==
== Administration système ==


Les clés du serveur SSH suppriment la lecture par les utilisateurs du groupe ssh_keys (qui est supprimé) pour rétablir le SUID bit de l'utilitaire ''ssh-keysign'' ;
'''Les clés du serveur SSH suppriment le droit de lecture par les utilisateurs du groupe ''ssh_keys'', qui est supprimé au passage, pour rétablir le SUID bit de l'utilitaire ''ssh-keysign''.''' Cela revient à supprimer un correctif spécifique de Fedora qui date de 11 ans, ce correctif échangeait le setuid du compte root avec une permission sur ces fichiers 0600 par un sgid associé au groupe ''ssh_keys'' mais des permissions plus lâches à savoir 0640. La raison derrière ce changement n'a pas été documentée et semble perdue, cependant de plus en plus d'utilitaires, notamment pour l'authentification basée sur l'hôte, font des vérifications de ces permissions et cette déviation par rapport à une installation OpenSSH standard était source de problèmes difficiles à justifier.
* RPM utilise Sequoia pour traiter le format OpenPGP au lieu de sa propre implémentation interne ;
 
* Le paquet ''systemd-udev'' fourni par défaut la règle ''Link.MACAddressPolicy=none'' au lieu de ''Link.MACAddressPolicy=persistent'' ;
'''RPM utilise Sequoia pour traiter le format OpenPGP au lieu de sa propre implémentation interne.''' Pendant près de 20 ans, toute la partie pour gérer OpenGPG était développée en interne. Cela avait plusieurs inconvénients, évidemment en terme de sécurité car ce code sensible était pris en charge par des développeurs pas experts du domaine. Mais aussi le temps de développement étant limité, améliorer la prise en charge d'OpenGPG était au détriment du reste. Le tout pour une implémentation imparfaite de la norme RFC 4880. Ce changement ouvre la possibilité d'améliorer les messages d'erreurs relatifs aux signatures des paquets à l'avenir.
* Le gestionnaire de paquet Microdnf est mis à jour à sa 5e version.
 
'''Le paquet ''systemd-udev'' fourni par défaut la règle ''Link.MACAddressPolicy=none'' au lieu de ''Link.MACAddressPolicy=persistent'' pour les interfaces réseaux logiciels ponts ou agrégées.''' Cette information est fournie dans le fichier ''/usr/lib/systemd/network/99-default.link''. La configuration reste inchangée pour les interfaces réseaux logiciels plus classiques ce qui garanti une stabilité dans l'assignation des adresses MAC. Ce changement a été décidé suite aux interférences avec le comportement du noyau Linux dans ce cas de figure qui utilise l'adresse MAC de la première interface. Cela peut aussi affecter les machines virtuelles qui s'attendent à ce que le pont ou l'agrégation de liens ait une des adresses MAC des interfaces réseaux impliquées.
 
'''Le gestionnaire de paquet Microdnf est mis à jour à sa 5e version.''' Il est à terme prévu que microdnf devienne l'implémentation de référence de dnf, le gestionnaire de paquets actuel de Fedora Linux, et ce peut être même dès Fedora Linux 39. Cette version majeure rapproche l'objectif d'une compatibilité des deux outils tout en gardant une taille plus raisonnable. Il est disponible sous le nom de paquet ''dnf5''. Cette version améliore l'affichage des bars de progression et la gestion des transactions. L'exécution des scriptlets (les scripts avant ou après l'installation / suppression d'un paquet à des fin de conversion ou de nettoyage) est aussi affichée. Les opérations impliquant des RPM locaux est aussi améliorées de même que l'auto-complétion des commande fournie par le shell Bash qui devient meilleure que celle de dnf lui même. La gestion des dépôts modulaires est également totalement intégrée, les plugins C++ et Python sont mutualisés pour réduire le coût de maintenance. Les performances sont également améliorées dans l'ensemble parmi d'autres changements plus mineurs.


== Développement ==
== Développement ==


* La mise à niveau de la chaine de compilation GNU est à l’œuvre avec GCC 13.0, binutils 2.39, glibc 2.37 et GDB 12.1 ;
'''La mise à niveau de la chaine de compilation GNU est à l’œuvre avec GCC 13.0, binutils 2.39, glibc 2.37 et GDB 12.1.'''
* Retrait de la prise en charge du langage Guile pour étendre GDB pour laisser la place à Python pour cela ;
GCC bénéficie ainsi d'une meilleure prise en charge de l'évolution de la norme du langage C dénommée C23. De même par ailleurs pour le langage C++ avec C++23. Sinon c'est l'analyseur statique de code qui bénéficie de nouveaux avertissements plutôt nombreux. Les architectures x86 et ARM ou Aarch64 bénéficient comme souvent d'une meilleure prise en charge des spécificités des différentes micro-architectures dans ces familles.
* Pendant que LLVM version 16 débarque ;
 
* GNU Make prépare sa version 4.4 ;
Concernant binutils, l'éditeur de lien ELF va émettre un avertissement pour des raisons de sécurité si la pile est exécutable. La commande ''objdump'' a sa sortie de désassemblage qui est colorée syntaxiquement pour favoriser sa lecture  pour les architectures AVR, RiscV, s390, x86 et x86_64. La bibliothèque C bénéficie essentiellement de corrections plus mineures dont de sécurité.
* Le langage Go quant à lui passe à la version 1.20 ;
 
* Le langage Ruby expose sa version 3.2 en vitrine ;
Enfin pour le débogueur, l'architecture LoongArch est prise en charge, pendant que celle d'OpenRISC s'améliore. Sinon l'API des plugins de Python s'étoffe de même que la gestion des templates C++.
* Le langage PHP évolue vers la version 8.2 ;
 
* Le gestionnaire de base de données PostgreSQL met à jour à la version 15 ;
'''Retrait de la prise en charge du langage Guile pour étendre GDB pour laisser la place à Python pour cela.''' La prise en charge de Guile est en effet en déclin, elle est moins complète que Python qui est de plus en plus utilisée et améliorée à cette fin. La documentation de GDB met d'ailleurs en avant Python plutôt que Guile dans cette tâche, ce qui peut laisser à penser qu'un jour cette prise en charge de Guile sera supprimée à terme. Anticiper ce mouvement permet de simplifier la tâche des mainteneurs.
* Pendant que Haskell GHC (le compilateur Haskell) 9.2 avec sa suite Stackage 20 sont disponibles ;
 
* L'écosystème Node.js est repackagé pour autoriser des installations multiples et parallèles, abandonnant l'usage des modules qui était la voie privilégiée ;
'''Pendant que LLVM version 16 débarque.''' Cette mise à jour s'accompagne d'abord d'une amélioration de la prise en charge des architectures, avec les nouveaux processeurs AMD Zen 4 ou Intel Emerald Rapids. L'architecture RISC V bénéficie des options '' -mcpu=native / -mtune=native'' pour une mise au point plus fine. Le compilateur JIT prend en charge le langage OpenMP. Il peut également compresser avec l'algorithme Zstd les sections de débogage ELF.
* La bibliothèque ''pcre'' est marquée comme obsolète au bénéfice de ''pcre2'', sa suppression totale des dépôts (et de ses dépendances) est à prévoir prochainement ;
 
* OpenJDK est compilé pour ressembler plus aux implémentations standards de JDK avec les bibliothèques internes au lieu de celles du système et la compilation avec la bibliothèque ''libstdc++'' liée statiquement ;
'''GNU Make prépare sa version 4.4.''' Il y a beaucoup d'annonces de rupture de la compatibilité ascendante, dont l'usage plus important du répertoire temporaire ce qui peut casser tout script manipulant ou nettoyant ''TMPDIR''. Il apporte l'ajout d'une nouvelle cible ''.WAIT'' pour permettre d'attendre la fin de l'exécution de plusieurs cibles avant de débuter le traitement d'une nouvelle. L'option ''-l'' va utiliser l'information exposée dans le fichier ''/proc/loadavg'' pour définir le nombre de tâches à exécuter en parallèles.
* La boîte à outils pour le développement Web en Python nommé Pyramid bénéficie de la version 2.0 ;
 
* Mise à jour de python-packaging version la version 22.0 ;
'''Le langage Go quant à lui passe à la version 1.20.''' Cette version apporte le début de la prise en charge du PGO (profile-guided optimization) pour se baser sur des données collectées à l'exécution d'un logiciel pour que le compilateur puisse recompiler ce logiciel par la suite autrement afin d'en optimiser ses performances, jusqu'à 3-4 % d'amélioration pour le moment. Par ailleurs les performances d'un logiciel Go en terme de pression mémoire et d'utilisation du processeur sont améliorées par une optimisation du ramasse miettes, pouvant aller jusqu'à 2% d'amélioration. Il est également possible de régler la micro-architecture cible à la compilation pour améliorer les performances en utilisant les fonctionnalités du processeur cible.
* Le paquet ''python3-toml'' est considéré comme obsolète avant suppression définitive à venir depuis la prise en charge de cette fonctionnalité dans la bibliothèque standard depuis Python 3.11 ;
 
* Le paquet du compilateur FreePascal ''fpc'' est subdivisé en trois paquets : ''fpc'' pour le compilateur lui même, ''fpc-ide'' pour l'environnement de développement en ligne de commande et ''fpc-units-NOMARCHITECTURE-linux'' pour la bibliothèque standard précompilée ;
'''Le langage Ruby expose sa version 3.2 en vitrine.''' Son nouveau compilateur JIT nommé YJIT n'est plus considéré comme expérimental et est d'ailleurs plus performant jusqu'à 41% par rapport à la version précédente. YJIT alloue maintenant la mémoire de manière paresseuse et fonctionne aussi sur les architectures ARM et Aarch64. Les expressions régulières bénéficient d'une amélioration notable des performances pour une évaluation de la correspondance qui devient linéaire par rapport à la taille des entrées et si l'évaluation est trop lente, un timeout est généré basé sur la valeur de configuration ''Regexp.timeout''. L'objectif était d'éviter une dégradation trop importante des performances dans certains cas, notamment dans un cadre malveillant.
* Le générateur d'interface SWIG se balance vers la version 4.10.
 
'''Le langage PHP évolue vers la version 8.2.''' Cette version apporte entre autre la possibilité de définir des classes en lecture seule. Les types ''null'', ''false'' et ''true'' deviennent des types autonomes. Les types de forme normale disjonctive sont pris en charge pour faciliter l'expression des unions et intersections de types pour faciliter la lecture et l'écriture de code.
 
'''Le gestionnaire de base de données PostgreSQL met à jour à la version 15.''' Cette version apporte la prise en charge de la commande SQL ''MERGE''. L'algorithme de compression Zstd peut être employé également notamment pour les sauvegardes. Les journaux côté serveur peuvent être exportés au format JSON. Enfin les performances sont améliorées en particulier pour les opérations de tris.
 
'''Pendant que Haskell GHC (le compilateur Haskell) 9.2 avec sa suite Stackage 20 sont disponibles.''' Du côté des performances, les architectures Aarch64 et s390x bénéficient d'une amélioration de ce côté. Pour le premier grâce à une prise en charge native par le compilateur GHC au lieu de LLVM utilisé jusqu'à présent. Pour le second par l'usage du système de construction Hadrian fourni par LLVM. Le langage lui même évolue, en proposant les types ''LinearTypes'' ou ''ImpredicativeTypes'' ou encore ''UnliftedDatatypes''.
 
'''L'écosystème Node.js est repackagé pour autoriser des installations multiples et parallèles, abandonnant l'usage des modules qui était la voie privilégiée jusqu'ici.''' En effet, si les modules permettent de changer la version d'un paquet sans changer de version de Fedora Linux, il ne permet pas l'installation parallèle ce qui est embêtant particulièrement pour l'écosystème JavaScript qui évolue rapidement et dont le test sur plusieurs versions est nécessaire. Le travail est ainsi rendu plus simple pour le développeur sans l'usage de conteneurs. Par ailleurs la maintenance pour Fedora Linux était globalement plus complexe. Le paquet ''nodejs'' renvoie actuellement à la version 18.15, tandis que les paquets ''nodejs16'' et ''nodejs20'' fournissent respectivement la branche 16.x ou 20.x.
 
'''La bibliothèque ''pcre'' est marquée comme obsolète au bénéfice de ''pcre2'', sa suppression totale des dépôts (et de ses dépendances) est à prévoir prochainement.''' En effet sa dernière version 8.45 sortie en juin 2021 est la dernière, ce qui signifie qu'aucun bogues ou failles de sécurité associés ne seront corrigés. Cela concerne encore 67 paquets dans les dépôts qui n'ont pas achevé la transition.
 
'''OpenJDK est compilé pour ressembler plus aux implémentations standards de JDK avec les bibliothèques internes au lieu de celles du système et la compilation avec la bibliothèque ''libstdc++'' liée statiquement.''' Cela signifie que les options de compilation dorénavant utilisées sont les suivantes : ''--with-stdc++lib=static --with-zlib="bundled" --with-freetype="bundled" --with-libjpeg="bundled" --with-giflib="bundled" --withlibpng="bundled" --with-lcms="bundled" --with-harfbuzz="bundled"''. L'objectif est de réduire les différences entre les JDK depuis Fedora Linux et les autres systèmes. Ces différences étaient coûteuses à maintenir pour Fedora Linux notamment pour certifier le résultat de chaque version de JDK que Fedora Linux propose ce qui ralentie les mises à jour mais aussi la correction d'autres bogues. Mais en contrepartie, OpenJDK ne tire plus bénéfice du partage de ces bibliothèques avec le reste du système notamment en consommation de ressources ou corrections liées à ces bibliothèques.
 
'''La boîte à outils pour le développement Web en Python nommé Pyramid bénéficie de la version 2.0.''' Tout d'abord cette version n'est compatible qu'avec Python 3. D'un point de vue fonctionnel, son changement majeur est la fusion des politiques d'authentification et d'autorisation au sein d'une politique unique. L'ancienne méthode reste disponible pour des raisons de compatibilité ascendante.
 
'''Mise à jour de python-packaging version vers la version 22.0.''' Les paquets utilisant ''LegacyVersion'' ou ''LegacySpecifier'' ne peuvent plus être générés tels quels et doivent se conformer à la PEP 440 ce qui améliore la compatibilité avec le reste de l'écosystème Python.
 
'''Le paquet ''python3-toml'' est considéré comme obsolète avant suppression définitive à venir depuis la prise en charge de cette fonctionnalité dans la bibliothèque standard depuis Python 3.11.''' Cela signifie qu'aucun nouveau paquet ne pourra dépendre de lui et qu'une étape de conversion progressive des dépendances actuelles est en cours. Ce qui peut permettre par ailleurs de bénéficier des évolutions du standard TOML, non pris en charge par ce même paquet. À cause des divergences d'API et de nommage, la transition de l'un vers l'autre n'est pas trivial et ne peut reposer sur un paquet ''python3-toml'' qui pointe vers ''python3-libs'' ou ''python3'' directement.
 
'''Le paquet du compilateur FreePascal ''fpc'' est subdivisé en trois paquets : ''fpc'' pour le compilateur lui même, ''fpc-ide'' pour l'environnement de développement en ligne de commande et ''fpc-units-NOMARCHITECTURE-linux'' pour la bibliothèque standard précompilée.''' Les utilisateurs peuvent se contenter d'installer uniquement ce dont ils ont besoin.
 
'''Le générateur d'interface SWIG se balance vers la version 4.10.''' Ses évolutions dans la prise en charge des langages sont multiples. Côté Nodejs il peut fournir maintenant pour la version 12 à 18, tout en supprimant la prise en charge des versions antérieures à version 6. Octave 6.0 et 6.4 sont fournis également, tout comme PHP 8 qui perd par contre les versions plus anciennes que la version 5.8. Côté Python c'est 3.3 la version minimale supportée, jusqu'à la version 3.11. Les évolutions de C et C++ sont également mieux prises en charge avec notamment le début de compatibilité avec C++20 et de ''std::unique_ptr''.
 
'''L'utilitaire ImageMagick tire profit de sa 7e version.''' Cette version n'est pas compatible avec l'ancienne version 6. Elle bénéficie de nombreux changements comme la prise en charge native des images HDRI. La structure de donnée Pixel Channels a été totalement remaniée, au lieu d'en avoir 4 définie dans `PixelPacket` (pour rouge, vert, bleu et l'opacité) et d'autres éventuellement comme le niveau de gris, ou l'index des couleurs dans `IndexPacket`, maintenant il peut y en avoir 1 à 64 par pixels définis ensemble. Cela rend le code plus générique et plus clair, mais aussi autorise le compilateur d'optimiser le code dans les boucles de traitement en particulier. Beaucoup de fonctions sont fournies autour de cela pour faciliter leur utilisation et rendre le code plus générique. L'opacité devient aussi un canal `alpha´ ce qui inverse la logique, une opacité de 0 signifie opaque, quand c'est totalement transparent pour alpha. Mais cela correspond mieux à la terminologie habituelle pour manipuler des pixels dans une image. Les API ont été remaniées pour prendre en compte ces changements de conception, d'où la rupture de compatibilité.


== Projet Fedora ==
== Projet Fedora ==


* La génération des images Fedora IoT reposera sur ''osbuild'' ;
'''La génération des images Fedora IoT reposera sur ''osbuild''.''' Cela permet de corriger le retard pris par cette édition de Fedora Linux par rapport à ''RHEL for Edge'' qui est son équivalent proposé par Red Hat ce qui facilitera notamment les travaux communs.
* Les paquets sont compilés avec l'option ''_FORTIFY_SOURCE=3'' au lieu de ''_FORTIFY_SOURCE=2'' pour mieux se protéger contre les buffers overflow dans les logiciels fournis ;
 
* Les paquets sont également compilés avec les options ''-fno-omit-frame-pointer'' et ''-mno-omit-leaf-frame-pointer'' par défaut ;
'''Les paquets sont compilés avec l'option ''_FORTIFY_SOURCE=3'' au lieu de ''_FORTIFY_SOURCE=2'' pour mieux se protéger contre les buffers overflow dans les logiciels fournis.''' Cela concerne des fonctions au sein de la bibliothèque glibc qui concernent beaucoup plus de fonctions avec cette nouvelle édition. Notons que cela a déjà été mis en place du côté de chez Swann, de Gentoo ou de OpenSUSE par exemple.
* Les paquets qui veulent changer leur option de compilation doivent passer par les macros ''%_pkg_extra_cflags'', ''%_pkg_extra_cxxflags'', ''%_pkg_extra_fflags'' et ''%_pkg_extra_ldflags'' pour plus de lisibilité et de traçabilité ;
* ''rpmautospec'' (qui emploie les macros ''%autorelease'' et ''%autochangelog'') est recommandé pour l'ensemble des paquets par défaut ;
* Activation de la macro ''%clamp_mtime_to_source_date_epoch'' à 1 qui configure ''mtimes'' en ''$SOURCE_DATE_EPOCH'' pour la compilation reproductible des paquets ;
* La macro pour gérer les dépendances des modules Perl ''perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))'' est supprimée au profit de ''perl-generators'' ;
* Les paquets Python fournissant la métadonnée ''python3dist(...) = 0'' échoueront dans leur construction ;
* Début de l'usage généralisé des noms de licence provenant du projet SPDX pour la licence des paquets plutôt que des noms du projet Fedora, de manière facultative pour l'instant.


== Tester ==
'''Les paquets sont également compilés avec les options ''-fno-omit-frame-pointer'' et ''-mno-omit-leaf-frame-pointer'' par défaut.''' L'objectif est d'améliorer le profilage et le débogage des paquets ainsi compilés, ce qui est particulièrement utile pour vérifier les performances des logiciels ayant beaucoup de dépendances. Une baisse de performances est cependant possible bien que faible d'après les essais préliminaires menés et les retours du terrain chez Google. Les résultats étant en résumé :


Durant le développement d'une nouvelle version de Fedora Linux, comme cette version Beta, quasiment chaque semaine le projet propose des journées de tests. Le but est de tester pendant une journée une fonctionnalité précise comme le noyau, Fedora Silverblue, la mise à niveau, GNOME, l’internationalisation, etc. L'équipe d'assurance qualité élabore et propose une série de tests en général simples à exécuter. Suffit de les suivre et indiquer si le résultat est celui attendu. Dans le cas contraire, un rapport de bogue devra être ouvert pour permettre l'élaboration d'un correctif.
* La compilation du noyau Linux avec GCC est 2,4% plus lente ;
* Le rendu effectué par Blender peut être jusqu'à 2% plus lent ;
* OpenSSL, Botan, Zstd ou Redis n'ont pas d'impacts mesurables ;
* Les tests spécifiques de CPython peuvent avoir une perte de 1 à 10% suivant les tests.


C'est très simple à suivre et requiert souvent peu de temps (15 minutes à une heure maximum) si vous avez une Beta exploitable sous la main.
'''Les paquets qui veulent changer leur option de compilation doivent passer par les macros ''%_pkg_extra_cflags'', ''%_pkg_extra_cxxflags'', ''%_pkg_extra_fflags'' et ''%_pkg_extra_ldflags'' pour plus de lisibilité et de traçabilité.''' L'objectif est d'avoir un moyen standard et unifié de personnaliser ces options de compilation pour l'ensemble des paquets ce qui simplifie la lisibilité et donc la maintenance. Les mainteneurs de la chaine de compilation peuvent plus facilement expérimenter en utilisant ces options plutôt que de changer ''redhat-rpm-config'' directement. Enfin il est possible de voir tous les paquets qui personnalisent la compilation ainsi par des requêtes assez simples.


Les tests à effectuer et les rapports sont à faire [http://testdays.fedorainfracloud.org/events via la page suivante]. [https://blog.fedora-fr.org/renault/ J'annonce régulièrement sur mon blog] quand une journée de tests est planifiée.
'''La macro ''rpmautospec'' (qui emploie les macros ''%autorelease'' et ''%autochangelog'') est recommandée pour l'ensemble des paquets par défaut.''' En effet, introduit par Fedora Linux 35, seulement 3423 paquets sur 23045 s'en servaient soit environ 15% d'entre eux. Les avantages attendus sont multiples, les mainteneurs n'ont plus à toucher au champ ''Release'' qui est généré automatiquement, le commit pour générer le nouveau paquet permet de remplir le champ ''changelog'' automatiquement ce qui fait gagner du temps au mainteneur. Comme ces champs sont générés par une macro à la construction, il est plus simple de réutiliser une mise à jour du fichier spec entre les différentes version de Fedora Linux car les conflits sont moins nombreux, de même pour les pull requests vers src.fedoraproject.org qui ont moins de conflits.


Si l'aventure vous intéresse, les images sont disponibles par [https://torrent.fedoraproject.org/ Torrent] ou via [https://getfedora.org/ le site officiel].
'''Activation de la macro ''%clamp_mtime_to_source_date_epoch'' à 1 qui configure ''mtimes'' (le temps de modifications des fichiers) en ''$SOURCE_DATE_EPOCH'' pour la compilation reproductible des paquets.''' La date est ainsi liée à la date du dernier champ dans la macro ''%changelog''. Il devient ainsi beaucoup plus simple de faire de la compilation reproductible car l'information est facilement disponible et n'est pas altérée par l'heure où le paquet a été effectivement construit. Cependant la compilation reproductible n'est pas complète au sein du projet Fedora encore.


Si vous avez déjà Fedora Linux 37 ou 36 sur votre machine, vous pouvez faire [https://doc.fedora-fr.org/wiki/Mise_%C3%A0_niveau_de_Fedora une mise à niveau vers la Beta]. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.
'''La macro pour gérer les dépendances des modules Perl ''perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))'' est supprimée au profit de ''perl-generators''.''' L'objectif est de réduire le besoin de recompilation des paquets Perl à chaque mise à jour de Perl pour ne concerner que les paquets qui en ont besoin, soit à cause d'une rupture de compatibilité ou parce qu'ils contiennent eux même du code compilé qui en dépendent directement. Cela simplifiera beaucoup la tâche des mainteneurs Perl, en passant de 3259 paquets impactés par ces mises à jour à environ 600.
 
'''Les paquets Python fournissant la métadonnée ''python3dist(...) = 0'' échoueront dans leur construction.''' Il était parfois employé par les paquets quand la version exigée par le programme n'était pas connue mais cela relevait souvent d'une erreur du mainteneur des paquets. Cela pouvait générer des problèmes, par exemple si un paquet dépend de ''python3-ssh-python > 0.9'' alors que la version de ce paquet 0.10.0 est disponible dans les dépôts, le générateur automatique de dépendances ne va pas identifier le paquet et générer des erreurs lors de la résolution des dépendances. Au moment de la décision d'effectuer ce changement, seulement 10 paquets étaient ainsi construits mais cela évitera que ce problème n'apparaisse également encore dans le futur.
 
'''Début de l'usage généralisé des noms abrégés de licence provenant du projet SPDX pour la licence des paquets plutôt que des noms du projet Fedora, de manière facultative pour l'instant.''' En effet au sein du projet Fedora si les licences sont bien renseignées, leur usage n'était pas totalement uniforme avec des variations possibles entre les paquets ou des imprécisions dans leur mention. Le projet SPDX commence à s'imposer comme une référence dans la résolution de ce problème avec une nomenclature standardisée et en étant largement adopté par le noyau Linux, Debian, OpenSUSE ou FreeBSD. Cela rendra également le travail de Fedora Legal et de la documentation autour des licences plus simple.
 
Par exemple le paquet ''tmux'' avait pour champs de licence ''ISC and BSD'' qui devient maintenant ''ISC AND BSD-3-Clause AND BSD-2-Clause'' ce qui met en exergue une meilleure précision.
 
À ce jour environ 20% des paquets ont été convertis. Et les nouveaux paquets devront dès le départ utiliser cette nomenclature. Le reste devrait suivre pour Fedora 39 maintenant que les outils et la procédure sont en place.
 
== La communauté francophone ==
 
=== L'association ===
 
[[File:Borsalinux-fr.png|center|Logo de Borsalinux-fr]]
 
[https://www.borsalinux-fr.org/ 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.
 
[https://forums.fedora-fr.org/d/73957-fedora-fr-a-besoin-de-vous Nous lançons donc un appel à nous rejoindre afin de nous aider.]
 
L'association est en effet propriétaire du [https://www.fedora-fr.org/ 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 :
 
* [https://www.borsalinux-fr.org/pages/Adh%C3%A9rer 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 mensuels chaque premier lundi soir du mois à 20h30 (heure de Paris). Pour plus de convivialité, nous l'avons mis en place [https://meet.jit.si/Borsalinux-Fr 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, José Fournier 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 38 ? ==
 
[[File:Mediawriter.png|200px|center|Fedora Media Writer]]
 
Si vous avez déjà Fedora Linux 37 ou 36 sur votre machine, vous pouvez faire une [https://doc.fedora-fr.org/wiki/Mise_%C3%A0_niveau_de_Fedora mise à niveau vers Fedora Linux 38]. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.
 
Autrement, pas de panique, vous pouvez [https://doc.fedora-fr.org/wiki/T%C3%A9l%C3%A9charger_Fedora télécharger Fedora Linux] avant de [https://doc.fedora-fr.org/wiki/Guide_d%27installation_de_Fedora_en_images 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.
Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.


En cas de bogue, n'oubliez pas de relire [https://doc.fedora-fr.org/wiki/Apprendre_%C3%A0_rapporter_un_bogue la documentation pour signaler les anomalies sur le BugZilla] ou de [https://translate.fedoraproject.org/ contribuer à la traduction sur Weblate]. [https://fedoraproject.org/wiki/Common_F38_bugs N'oubliez pas de consulter les bogues déjà connus pour Fedora 38].
De plus, pour éviter les mauvaises surprises, nous vous recommandons aussi de lire au préalable [https://fedoraproject.org/wiki/Common_F38_bugs les bogues importants connus à ce jour pour Fedora Linux 38].
 
Bons tests à tous !

Latest revision as of 13:25, 16 April 2023

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

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 vu comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.

Cette 38e édition propose principalement une mise à jour de son interface principale GNOME 44 et de l'environnement de bureau plus léger Xfce 4.18. Notons l'arrivée d'images officielles pour les environnements Sway, Budgie et Phosh, ce dernier étant l'interface de GNOME pour mobile !

Bureau de GNOME

Expérience utilisateur

Passage à GNOME 44. Cette version apporte comme d'habitude de nombreuses fonctionnalités pour l'interface par défaut de Fedora Workstation.

Tout d'abord le sélecteur de fichiers permet de voir les fichiers en grille avec prévisualisation, ce qui simplifie la sélection pour l'envoi de photos ou de vidéos par rapport à la vue en liste qui était jusqu'à présent la seule disponible.

Le panneau de configuration bénéficie d'améliorations diverses. Il est possible de partager un mot de passe Wifi par un simple QR code affiché à l'écran. Concernant le réseau les VPN Wireguard sont officiellement pris en charge. La page sécurité de l'appareil est plus simple à comprendre, permettant de savoir en un clin d’œil si la vérification a échoué ou réussi, et le résultat de cette vérification. Le résultat détaillé peut facilement être copié / collé pour l'envoyer sur des forums par exemple.

La page accessibilité a été remaniée également pour être plus simple d'accès. Quelques nouvelles options ont été ajoutées comme la possibilité de sur-amplifier le son au détriment de sa qualité en cas de déficit auditif. Il y a un champ de test pour la configuration du clignotement du curseur de souris ou encore la possibilité de toujours voir la barre de défilement sur le côté.

La page son permet de désactiver le son d'alerte, la liste des alertes a d'ailleurs été déplacée dans une fenêtre popup. La page de test du son s'adapte mieux aux différentes tailles d'écran.

La page souris et pavé tactile a été entièrement réécrite. Des vidéos montrent la direction du défilement pour rendre l'explication plus claire à l'utilisateur. De même pour les tests des paramètres, la page a été refaite pour être plus simple et complète.

Pour le reste, le menu principal affiche la liste des applications en arrière plan, pour l'instant seules les applications Flatpak sont concernées. L'application Logiciels est plus réactive et elle supprime automatiquement les runtimes Flatpak quand ils ne sont plus nécessaires. Le logiciel Fichiers quant à lui réintroduit la vue expansion de dossiers qui avait été brièvement supprimée lors du passage à GTK4. Il est maintenant possible de déplacer un onglet vers une autre fenêtre.

Le navigateur Web de GNOME passe d'ailleurs à GTK4 ce qui améliore la cohérence de l'interface avec le reste de l'écosystème et sa réactivité. Une fenêtre popup surgit pour enregistrer ou non un mot de passe lors de la connexion à un site web.

La petite souris Xfce est mise à jour après 4.18 tours de roue. Cette version apporte aussi de nombreux changements pour sa communauté comme l'amélioration du renommage des fichiers dans Thunar pour remonter des erreurs ou avoir de long noms de fichier. Ce dernier comme le terminal ou l'éditeur de texte peuvent voir leur raccourcis clavier personnalisés dans leurs préférences. Les miniatures de fichiers sont générées plus rapidement.

Le navigateur de fichiers affiche le nombre de fichiers dans un répertoire lors d'une vue en liste, la colonne de date de création d'un fichier est également disponible. Les dix dernières opérations sur les fichiers peuvent être annulées ou effectuées à nouveau. Chaque fichier peut être mis en évidence avec une couleur spécifique en fond. Sa barre des tâches peut être personnalisée. Elle bénéficie d'une vue scindée au sein d'une même fenêtre pour voir deux dossiers différents en même temps. Par ailleurs, elle permet la recherche récursive dans les dossiers ou de voir les derniers fichiers récemment utilisés.

Le tableau de bord fusionne DateTime et l'horloge pour les préférences concernant l'heure et le calendrier pour supprimer des doublons. L'horloge dispose par ailleurs d'un affichage alternatif en binaire.

Le gestionnaire de configuration comme pour GNOME bénéficie de certains changements. Il est possible de décider quelle action effectuer quand un nouvel écran est branché.

Enfin, le gestionnaire de fenêtres permet la synchronisation verticale de son affichage. Une meilleure mise à l'échelle de l'interface est également proposée.

Le gestionnaire de connexions SDDM (utilisé par KDE par exemple) utilise Wayland par défaut. Cela signifie que le spin KDE Plasma et Kinoite ont fini leur transition vers Wayland par défaut. Cela a été rendu possible grâce au travail en amont pour le permettre au sein de SDDM, mais aussi aux changements opérés dans Fedora Linux 36 qui a remplacé fbdev par simpledrm pour la gestion de l'affichage en cas d'absence de pilote vidéo dédié.

L'image Fedora Linux avec le bureau Budgie devient une image Spin officielle. Cela permet de simplifier la découverte de ce bureau moderne d'une part en le mettant en avant et en facilitant son installation. Sa communauté pourra également l'installer plus rapidement tout en n'ayant pas des composants inutiles par ailleurs.

De même pour l'image Fedora Linux avec le gestionnaire de fenêtres Sway. Cela fourni les mêmes avantages que pour Budgie, avec en plus le bénéfice que Sway, en tant que i3 sous Wayland, peut être exploité sur des machines très minimalistes en puissance ce qui rend son installation directe plus pertinente encore.

L'utilitaire initial-setup n'est plus fourni dans l'image KDE et l'image Kinoite. Cette application est centrée sur GNOME pour permettre la création de l'utilisateur et quelques paramètres après l'installation, en particulier pour les installations OEM. L'objectif sera de le remplacer plus tard par un utilitaire plus adapté à l'interface de KDE Plasma, en attendant c'est Anaconda qui prend en charge ces paramètres lors de l'installation.

Flathub n'est plus filtré par défaut lors de l'installation de Fedora Linux, tous les paquets proposés sont donc accessibles. Depuis Fedora Linux 35, Flathub est proposé comme un dépôt tiers facilement activable pour récupérer des paquets Flatpak provenant de ce dépôt sans manipulations supplémentaires. Cependant il y avait un filtrage pour supprimer les applications propriétaires, ou les doublons, etc. Cependant cela rendait confus les utilisateurs qui n'avaient pas accès à tout le dépôt et rendait plus difficile la tâche de ceux qui voulaient accéder à ce dépôt en entier.

Le filtre est donc supprimé, pour éviter les effets de bords GNOME Logiciels doit proposer dans l'ordre les Flatpak de Fedora, les paquets RPM de Fedora puis les Flatpak de Flathub (ou autre dépôts) par défaut si un logiciel est disponible sous ces formats là. GNOME Logiciels doit garantir de rendre clair le fait que le logiciel à installer est propriétaire ou libre.

Pour rappel, ce dépôt Flathub n'est pas actif par défaut.

Le timer systemd pour l'extinction de la machine passe de 2 minutes à 45 secondes, envoyant un signal SIGABRT puis un SIGKILL si jamais des services n'ont pas réussi à s'arrêter dans ce délai. En effet un service bloqué dans cette procédure pouvait bloquer le redémarrage ou l'extinction de la machine pendant 2 minutes ce qui est particulièrement long et souvent dû à un problème comme le service PackageKit qui est souvent concerné par cette problématique.

Il a été suggéré de baisser cela à 15 secondes, mais cela a été jugé trop agressif pour une première baisse de la durée. L'objectif est d'observer le résultat avec 45 secondes avant d'envisager une baisse supplémentaire. Les services pouvant être longs à s'éteindre dans leur comportement normal peuvent de toute façon désactiver ce temps d'attente ce qui est le cas de PostgreSQL ou de virt-manager pour éviter de mauvaises surprises pour des systèmes qui en ont besoin. Les utilisateurs qui en ont besoin sur leurs services peuvent se renseigner au sujet de XDG inhibit pour les applications ou de systemd inhibit pour les services.

cups-filters passe à la version 2.0b. Cette nouvelle version est essentiellement un redécoupage des composants avec cups-filters, libcupsfilters, libppd, braille-printer-app et cups-browsed. L'objectif est de rendre la prise en charge du format PPD indépendant du reste pour une éventuelle suppression future quand il ne sera plus pris en charge ce qui est planifié pour CUPS 3.X. Les applications spécifiques des constructeurs seront dès lors nécessaires, mais l'avènement de l'impression sans pilotes rend cette contrainte future de moins en moins gênante en pratique.

Dans le domaine de l'impression le paquet ipp-usb devient une dépendance faible de cups ou de sane-airscan pour proposer la prise en charge des imprimantes USB par défaut sans installation supplémentaire de la part de l'utilisateur. En effet de nombreuses imprimantes proposent de nos jours une prise en charge sans pilotes spécifiques pour l'impression via le réseau, mais aussi par USB via le protocole IPP over USB ce que prend en charge le paquet en question. Par conséquent un utilisateur qui souhaite imprimer ou scanner (et même faxer) aura par défaut une possibilité supplémentaire de s'en servir sans devoir chercher les paquets manquants éventuels. Ceux qui n'en veulent pas pourront toujours supprimer ce paquet dans ce cas précis.

La distribution LaTeX TeXLive version 2022 est proposée, qui est la dernière version avec une prise en charge longue durée. L'ancien cache personnel devrait être supprimé pour s'assurer du fonctionnement, à savoir supprimer le répertoire ~/.texlive2021.

Gestion du matériel

L'installateur Anaconda utilise mdadm au lieu de dmraid pour la prise en charge des stockages RAID reposant sur un firmware ou un BIOS. En effet ce dernier n'est plus très maintenu ce qui pose des soucis pour la correction de bogues ou de failles de sécurité. D'ailleurs mdadm est plus utilisé par les logiciels de gestion des configurations RAID de nos jours. Cependant mdadm ne prend en charge que deux formats de RAID : Common RAID Disk Data Format (DDF) par SNIA et Intel Matrix Storage Manager. Cela signifie que les formats RAID gérés matériellement les plus anciens ne seront pas forcément pris en charge par Anaconda.

L'image LXQt est proposée pour l'architecture aarch64. Le bureau étant particulièrement léger, cela le rend pertinent de le proposer pour cette architecture directement.

Fourniture d'une image avec Phosh, GNOME Shell pour mobile, à destination des téléphones ou des tablettes pour l'architecture x86_64 et aarch64. Cette interface proposée par l'entreprise Purism peut tourner sur des téléphones ou tablettes si les noyaux classiques permettent une telle prise en charge native. Proposer une image dédiée permet cette installation et rend cette action plus facile.

L'architecture s390x utilise les processeurs de la génération z13 comme base, les plus anciens ne seront plus forcément compatibles. Les processeurs de générations antérieures ne sont plus prises en charge par le fabricant. Et l'architecture z13 propose des instructions vectorielles dont il est possible de tirer profit sur l'ensemble des logiciels grâce aux nouvelles options de compilation, ce qui était impossible par la prise des modèles plus anciens.

Les implémentations du serveur X (Xorg et Xwayland) refusent par défaut à des clients ayant un boutisme différent du serveur de s'y connecter. Il devient donc impossible par défaut d'utiliser un client X avec un processeur Intel pour afficher une interface provenant un serveur X sous processeur s390x. En effet ce cas de figure particulier est difficile à prendre en charge en l'état actuel du code, il est peu testé et est source d'une grande surface d'attaque pour un usage considéré comme marginal. Le désactiver par défaut permet de protéger les utilisateurs qui n'en ont pas besoin contre des clients malveillants. Cependant pour ceux qui en ont réellement besoin, il est possible de le résoudre via l'option de configuration AllowByteSwappedClients dans le fichier xorg.conf ou par l'usage de l'option +byteswappedclients en démarrant le serveur X.

Première partie de la migration vers une image noyau unifiée nommée UKI (donc unifiant noyau, initrd, ligne de commande du noyau et signature) pour les plateformes avec UEFI mais rien ne change par défaut à ce sujet. L'objectif est de rendre le démarrage du système plus sûr, robuste et uniforme car moins dépendant des spécificités de chaque système, idéalement avec un tel système, le noyau, l'initrd et la ligne de commande seraient uniques sur tous les systèmes Fedora Linux.

Cependant c'est irréaliste de tout faire en une étape, trop de choses dépendent encore de la méthode actuelle à savoir l'initrd qui est générée à partir de l'ordinateur de l'utilisateur qui se base notamment sur les pilotes actuellement chargés par le système. Le plan a été phasé ainsi :

  • Phase 1 : fournir les blocs de base, à savoir pouvoir installer, démarrer et mettre à jour de tels fichiers, pour permettre de développer et de tester des images UKIs en machine virtuelle ;
  • Phase 2+ : étendre la prise en charge en gérant de plus en plus de cas d'usage un par un ;
  • Phase X : une fois qu'il y a parité avec les noyaux non-UKI, discuter de l'usage par défaut pour tous les cas d'usage. En particulier les images cloud ou serveurs pourraient y passer plus tôt car ils ont moins de contraintes quand le système est virtualisé.
  • Non prévu : la suppression des images non UKI.

Pour ceux qui veulent tester en machine virtuelle, le paquet kernel-uki-virt est proposé à cette fin. Dans les difficultés à résoudre il y a la question des secrets matériels provenant de l'UEFI qu'il faut récupérer, il y aussi la partition où se situe la partition système qui doit être auto-détectée ce qui est possible grâce à la norme UEFI. En effet, chaque partition a un type défini sous forme de UUID unique ce qui nous renseigne sur sa nature. Ou encore la question des options particulières à envoyer au noyau pour configurer le système, utilisées par exemple pour éviter le conflit entre le pilote libre ou propriétaire de nVidia.

L'installateur de l'image IoT récupère celui de CoreOS pour simplifier son installation. Ainsi c'est une simple image OSTree qui peut être écrite sur l'espace de stockage via un argument noyau à spécifier. Pas besoin d'utiliser l'outil kickstart ou une quelconque manipulation supplémentaire. L'avantage c'est de simplifier l'installation pour des systèmes avec une connexion Internet lente ou non fiable, l'installation se faisant en une fois après que l'image ait été entièrement récupérée. Cela rapproche également Fedora IoT de l'image de RHEL dédiée à cet usage.

Internationalisation

La police par défaut pour la langue thaï et le cambodgien passe à Noto. Ces langues rejoignent ainsi celles qui avaient déjà effectué ce changement pour Fedora Linux 36 ce qui réduit la taille du système d'environ 344 kio dans ce cas et rend l'affichage plus cohérent pour l'ensemble des langues. La qualité d'affichage devrait aussi être meilleure pour ces langues.

Tandis que les polices Noto CJK pour les langues chinoises, japonaises et coréennes utilisent la variante variable au lieu de static comme auparavant. Cette variante est en effet plus légère d'un facteur deux environ, de quoi gagner plusieurs dizaines de Mio sur le système par défaut et sur les images Live.

Mise à jour de libpinyin 2.8. Ce gestionnaire d'entrée de saisie pour la langue chinoise ajoute la proposition d'expressions candidates à partir de l'entrée en cours. Cela permet d'accélérer la saisie dans cette langue.

Administration système

Les clés du serveur SSH suppriment le droit de lecture par les utilisateurs du groupe ssh_keys, qui est supprimé au passage, pour rétablir le SUID bit de l'utilitaire ssh-keysign. Cela revient à supprimer un correctif spécifique de Fedora qui date de 11 ans, ce correctif échangeait le setuid du compte root avec une permission sur ces fichiers 0600 par un sgid associé au groupe ssh_keys mais des permissions plus lâches à savoir 0640. La raison derrière ce changement n'a pas été documentée et semble perdue, cependant de plus en plus d'utilitaires, notamment pour l'authentification basée sur l'hôte, font des vérifications de ces permissions et cette déviation par rapport à une installation OpenSSH standard était source de problèmes difficiles à justifier.

RPM utilise Sequoia pour traiter le format OpenPGP au lieu de sa propre implémentation interne. Pendant près de 20 ans, toute la partie pour gérer OpenGPG était développée en interne. Cela avait plusieurs inconvénients, évidemment en terme de sécurité car ce code sensible était pris en charge par des développeurs pas experts du domaine. Mais aussi le temps de développement étant limité, améliorer la prise en charge d'OpenGPG était au détriment du reste. Le tout pour une implémentation imparfaite de la norme RFC 4880. Ce changement ouvre la possibilité d'améliorer les messages d'erreurs relatifs aux signatures des paquets à l'avenir.

Le paquet systemd-udev fourni par défaut la règle Link.MACAddressPolicy=none au lieu de Link.MACAddressPolicy=persistent pour les interfaces réseaux logiciels ponts ou agrégées. Cette information est fournie dans le fichier /usr/lib/systemd/network/99-default.link. La configuration reste inchangée pour les interfaces réseaux logiciels plus classiques ce qui garanti une stabilité dans l'assignation des adresses MAC. Ce changement a été décidé suite aux interférences avec le comportement du noyau Linux dans ce cas de figure qui utilise l'adresse MAC de la première interface. Cela peut aussi affecter les machines virtuelles qui s'attendent à ce que le pont ou l'agrégation de liens ait une des adresses MAC des interfaces réseaux impliquées.

Le gestionnaire de paquet Microdnf est mis à jour à sa 5e version. Il est à terme prévu que microdnf devienne l'implémentation de référence de dnf, le gestionnaire de paquets actuel de Fedora Linux, et ce peut être même dès Fedora Linux 39. Cette version majeure rapproche l'objectif d'une compatibilité des deux outils tout en gardant une taille plus raisonnable. Il est disponible sous le nom de paquet dnf5. Cette version améliore l'affichage des bars de progression et la gestion des transactions. L'exécution des scriptlets (les scripts avant ou après l'installation / suppression d'un paquet à des fin de conversion ou de nettoyage) est aussi affichée. Les opérations impliquant des RPM locaux est aussi améliorées de même que l'auto-complétion des commande fournie par le shell Bash qui devient meilleure que celle de dnf lui même. La gestion des dépôts modulaires est également totalement intégrée, les plugins C++ et Python sont mutualisés pour réduire le coût de maintenance. Les performances sont également améliorées dans l'ensemble parmi d'autres changements plus mineurs.

Développement

La mise à niveau de la chaine de compilation GNU est à l’œuvre avec GCC 13.0, binutils 2.39, glibc 2.37 et GDB 12.1. GCC bénéficie ainsi d'une meilleure prise en charge de l'évolution de la norme du langage C dénommée C23. De même par ailleurs pour le langage C++ avec C++23. Sinon c'est l'analyseur statique de code qui bénéficie de nouveaux avertissements plutôt nombreux. Les architectures x86 et ARM ou Aarch64 bénéficient comme souvent d'une meilleure prise en charge des spécificités des différentes micro-architectures dans ces familles.

Concernant binutils, l'éditeur de lien ELF va émettre un avertissement pour des raisons de sécurité si la pile est exécutable. La commande objdump a sa sortie de désassemblage qui est colorée syntaxiquement pour favoriser sa lecture pour les architectures AVR, RiscV, s390, x86 et x86_64. La bibliothèque C bénéficie essentiellement de corrections plus mineures dont de sécurité.

Enfin pour le débogueur, l'architecture LoongArch est prise en charge, pendant que celle d'OpenRISC s'améliore. Sinon l'API des plugins de Python s'étoffe de même que la gestion des templates C++.

Retrait de la prise en charge du langage Guile pour étendre GDB pour laisser la place à Python pour cela. La prise en charge de Guile est en effet en déclin, elle est moins complète que Python qui est de plus en plus utilisée et améliorée à cette fin. La documentation de GDB met d'ailleurs en avant Python plutôt que Guile dans cette tâche, ce qui peut laisser à penser qu'un jour cette prise en charge de Guile sera supprimée à terme. Anticiper ce mouvement permet de simplifier la tâche des mainteneurs.

Pendant que LLVM version 16 débarque. Cette mise à jour s'accompagne d'abord d'une amélioration de la prise en charge des architectures, avec les nouveaux processeurs AMD Zen 4 ou Intel Emerald Rapids. L'architecture RISC V bénéficie des options -mcpu=native / -mtune=native pour une mise au point plus fine. Le compilateur JIT prend en charge le langage OpenMP. Il peut également compresser avec l'algorithme Zstd les sections de débogage ELF.

GNU Make prépare sa version 4.4. Il y a beaucoup d'annonces de rupture de la compatibilité ascendante, dont l'usage plus important du répertoire temporaire ce qui peut casser tout script manipulant ou nettoyant TMPDIR. Il apporte l'ajout d'une nouvelle cible .WAIT pour permettre d'attendre la fin de l'exécution de plusieurs cibles avant de débuter le traitement d'une nouvelle. L'option -l va utiliser l'information exposée dans le fichier /proc/loadavg pour définir le nombre de tâches à exécuter en parallèles.

Le langage Go quant à lui passe à la version 1.20. Cette version apporte le début de la prise en charge du PGO (profile-guided optimization) pour se baser sur des données collectées à l'exécution d'un logiciel pour que le compilateur puisse recompiler ce logiciel par la suite autrement afin d'en optimiser ses performances, jusqu'à 3-4 % d'amélioration pour le moment. Par ailleurs les performances d'un logiciel Go en terme de pression mémoire et d'utilisation du processeur sont améliorées par une optimisation du ramasse miettes, pouvant aller jusqu'à 2% d'amélioration. Il est également possible de régler la micro-architecture cible à la compilation pour améliorer les performances en utilisant les fonctionnalités du processeur cible.

Le langage Ruby expose sa version 3.2 en vitrine. Son nouveau compilateur JIT nommé YJIT n'est plus considéré comme expérimental et est d'ailleurs plus performant jusqu'à 41% par rapport à la version précédente. YJIT alloue maintenant la mémoire de manière paresseuse et fonctionne aussi sur les architectures ARM et Aarch64. Les expressions régulières bénéficient d'une amélioration notable des performances pour une évaluation de la correspondance qui devient linéaire par rapport à la taille des entrées et si l'évaluation est trop lente, un timeout est généré basé sur la valeur de configuration Regexp.timeout. L'objectif était d'éviter une dégradation trop importante des performances dans certains cas, notamment dans un cadre malveillant.

Le langage PHP évolue vers la version 8.2. Cette version apporte entre autre la possibilité de définir des classes en lecture seule. Les types null, false et true deviennent des types autonomes. Les types de forme normale disjonctive sont pris en charge pour faciliter l'expression des unions et intersections de types pour faciliter la lecture et l'écriture de code.

Le gestionnaire de base de données PostgreSQL met à jour à la version 15. Cette version apporte la prise en charge de la commande SQL MERGE. L'algorithme de compression Zstd peut être employé également notamment pour les sauvegardes. Les journaux côté serveur peuvent être exportés au format JSON. Enfin les performances sont améliorées en particulier pour les opérations de tris.

Pendant que Haskell GHC (le compilateur Haskell) 9.2 avec sa suite Stackage 20 sont disponibles. Du côté des performances, les architectures Aarch64 et s390x bénéficient d'une amélioration de ce côté. Pour le premier grâce à une prise en charge native par le compilateur GHC au lieu de LLVM utilisé jusqu'à présent. Pour le second par l'usage du système de construction Hadrian fourni par LLVM. Le langage lui même évolue, en proposant les types LinearTypes ou ImpredicativeTypes ou encore UnliftedDatatypes.

L'écosystème Node.js est repackagé pour autoriser des installations multiples et parallèles, abandonnant l'usage des modules qui était la voie privilégiée jusqu'ici. En effet, si les modules permettent de changer la version d'un paquet sans changer de version de Fedora Linux, il ne permet pas l'installation parallèle ce qui est embêtant particulièrement pour l'écosystème JavaScript qui évolue rapidement et dont le test sur plusieurs versions est nécessaire. Le travail est ainsi rendu plus simple pour le développeur sans l'usage de conteneurs. Par ailleurs la maintenance pour Fedora Linux était globalement plus complexe. Le paquet nodejs renvoie actuellement à la version 18.15, tandis que les paquets nodejs16 et nodejs20 fournissent respectivement la branche 16.x ou 20.x.

La bibliothèque pcre est marquée comme obsolète au bénéfice de pcre2, sa suppression totale des dépôts (et de ses dépendances) est à prévoir prochainement. En effet sa dernière version 8.45 sortie en juin 2021 est la dernière, ce qui signifie qu'aucun bogues ou failles de sécurité associés ne seront corrigés. Cela concerne encore 67 paquets dans les dépôts qui n'ont pas achevé la transition.

OpenJDK est compilé pour ressembler plus aux implémentations standards de JDK avec les bibliothèques internes au lieu de celles du système et la compilation avec la bibliothèque libstdc++ liée statiquement. Cela signifie que les options de compilation dorénavant utilisées sont les suivantes : --with-stdc++lib=static --with-zlib="bundled" --with-freetype="bundled" --with-libjpeg="bundled" --with-giflib="bundled" --withlibpng="bundled" --with-lcms="bundled" --with-harfbuzz="bundled". L'objectif est de réduire les différences entre les JDK depuis Fedora Linux et les autres systèmes. Ces différences étaient coûteuses à maintenir pour Fedora Linux notamment pour certifier le résultat de chaque version de JDK que Fedora Linux propose ce qui ralentie les mises à jour mais aussi la correction d'autres bogues. Mais en contrepartie, OpenJDK ne tire plus bénéfice du partage de ces bibliothèques avec le reste du système notamment en consommation de ressources ou corrections liées à ces bibliothèques.

La boîte à outils pour le développement Web en Python nommé Pyramid bénéficie de la version 2.0. Tout d'abord cette version n'est compatible qu'avec Python 3. D'un point de vue fonctionnel, son changement majeur est la fusion des politiques d'authentification et d'autorisation au sein d'une politique unique. L'ancienne méthode reste disponible pour des raisons de compatibilité ascendante.

Mise à jour de python-packaging version vers la version 22.0. Les paquets utilisant LegacyVersion ou LegacySpecifier ne peuvent plus être générés tels quels et doivent se conformer à la PEP 440 ce qui améliore la compatibilité avec le reste de l'écosystème Python.

Le paquet python3-toml est considéré comme obsolète avant suppression définitive à venir depuis la prise en charge de cette fonctionnalité dans la bibliothèque standard depuis Python 3.11. Cela signifie qu'aucun nouveau paquet ne pourra dépendre de lui et qu'une étape de conversion progressive des dépendances actuelles est en cours. Ce qui peut permettre par ailleurs de bénéficier des évolutions du standard TOML, non pris en charge par ce même paquet. À cause des divergences d'API et de nommage, la transition de l'un vers l'autre n'est pas trivial et ne peut reposer sur un paquet python3-toml qui pointe vers python3-libs ou python3 directement.

Le paquet du compilateur FreePascal fpc est subdivisé en trois paquets : fpc pour le compilateur lui même, fpc-ide pour l'environnement de développement en ligne de commande et fpc-units-NOMARCHITECTURE-linux pour la bibliothèque standard précompilée. Les utilisateurs peuvent se contenter d'installer uniquement ce dont ils ont besoin.

Le générateur d'interface SWIG se balance vers la version 4.10. Ses évolutions dans la prise en charge des langages sont multiples. Côté Nodejs il peut fournir maintenant pour la version 12 à 18, tout en supprimant la prise en charge des versions antérieures à version 6. Octave 6.0 et 6.4 sont fournis également, tout comme PHP 8 qui perd par contre les versions plus anciennes que la version 5.8. Côté Python c'est 3.3 la version minimale supportée, jusqu'à la version 3.11. Les évolutions de C et C++ sont également mieux prises en charge avec notamment le début de compatibilité avec C++20 et de std::unique_ptr.

L'utilitaire ImageMagick tire profit de sa 7e version. Cette version n'est pas compatible avec l'ancienne version 6. Elle bénéficie de nombreux changements comme la prise en charge native des images HDRI. La structure de donnée Pixel Channels a été totalement remaniée, au lieu d'en avoir 4 définie dans PixelPacket (pour rouge, vert, bleu et l'opacité) et d'autres éventuellement comme le niveau de gris, ou l'index des couleurs dans IndexPacket, maintenant il peut y en avoir 1 à 64 par pixels définis ensemble. Cela rend le code plus générique et plus clair, mais aussi autorise le compilateur d'optimiser le code dans les boucles de traitement en particulier. Beaucoup de fonctions sont fournies autour de cela pour faciliter leur utilisation et rendre le code plus générique. L'opacité devient aussi un canal `alpha´ ce qui inverse la logique, une opacité de 0 signifie opaque, quand c'est totalement transparent pour alpha. Mais cela correspond mieux à la terminologie habituelle pour manipuler des pixels dans une image. Les API ont été remaniées pour prendre en compte ces changements de conception, d'où la rupture de compatibilité.

Projet Fedora

La génération des images Fedora IoT reposera sur osbuild. Cela permet de corriger le retard pris par cette édition de Fedora Linux par rapport à RHEL for Edge qui est son équivalent proposé par Red Hat ce qui facilitera notamment les travaux communs.

Les paquets sont compilés avec l'option _FORTIFY_SOURCE=3 au lieu de _FORTIFY_SOURCE=2 pour mieux se protéger contre les buffers overflow dans les logiciels fournis. Cela concerne des fonctions au sein de la bibliothèque glibc qui concernent beaucoup plus de fonctions avec cette nouvelle édition. Notons que cela a déjà été mis en place du côté de chez Swann, de Gentoo ou de OpenSUSE par exemple.

Les paquets sont également compilés avec les options -fno-omit-frame-pointer et -mno-omit-leaf-frame-pointer par défaut. L'objectif est d'améliorer le profilage et le débogage des paquets ainsi compilés, ce qui est particulièrement utile pour vérifier les performances des logiciels ayant beaucoup de dépendances. Une baisse de performances est cependant possible bien que faible d'après les essais préliminaires menés et les retours du terrain chez Google. Les résultats étant en résumé :

  • La compilation du noyau Linux avec GCC est 2,4% plus lente ;
  • Le rendu effectué par Blender peut être jusqu'à 2% plus lent ;
  • OpenSSL, Botan, Zstd ou Redis n'ont pas d'impacts mesurables ;
  • Les tests spécifiques de CPython peuvent avoir une perte de 1 à 10% suivant les tests.

Les paquets qui veulent changer leur option de compilation doivent passer par les macros %_pkg_extra_cflags, %_pkg_extra_cxxflags, %_pkg_extra_fflags et %_pkg_extra_ldflags pour plus de lisibilité et de traçabilité. L'objectif est d'avoir un moyen standard et unifié de personnaliser ces options de compilation pour l'ensemble des paquets ce qui simplifie la lisibilité et donc la maintenance. Les mainteneurs de la chaine de compilation peuvent plus facilement expérimenter en utilisant ces options plutôt que de changer redhat-rpm-config directement. Enfin il est possible de voir tous les paquets qui personnalisent la compilation ainsi par des requêtes assez simples.

La macro rpmautospec (qui emploie les macros %autorelease et %autochangelog) est recommandée pour l'ensemble des paquets par défaut. En effet, introduit par Fedora Linux 35, seulement 3423 paquets sur 23045 s'en servaient soit environ 15% d'entre eux. Les avantages attendus sont multiples, les mainteneurs n'ont plus à toucher au champ Release qui est généré automatiquement, le commit pour générer le nouveau paquet permet de remplir le champ changelog automatiquement ce qui fait gagner du temps au mainteneur. Comme ces champs sont générés par une macro à la construction, il est plus simple de réutiliser une mise à jour du fichier spec entre les différentes version de Fedora Linux car les conflits sont moins nombreux, de même pour les pull requests vers src.fedoraproject.org qui ont moins de conflits.

Activation de la macro %clamp_mtime_to_source_date_epoch à 1 qui configure mtimes (le temps de modifications des fichiers) en $SOURCE_DATE_EPOCH pour la compilation reproductible des paquets. La date est ainsi liée à la date du dernier champ dans la macro %changelog. Il devient ainsi beaucoup plus simple de faire de la compilation reproductible car l'information est facilement disponible et n'est pas altérée par l'heure où le paquet a été effectivement construit. Cependant la compilation reproductible n'est pas complète au sein du projet Fedora encore.

La macro pour gérer les dépendances des modules Perl perl(:MODULE_COMPAT_%(eval "%{__perl} -V:version"; echo $version)) est supprimée au profit de perl-generators. L'objectif est de réduire le besoin de recompilation des paquets Perl à chaque mise à jour de Perl pour ne concerner que les paquets qui en ont besoin, soit à cause d'une rupture de compatibilité ou parce qu'ils contiennent eux même du code compilé qui en dépendent directement. Cela simplifiera beaucoup la tâche des mainteneurs Perl, en passant de 3259 paquets impactés par ces mises à jour à environ 600.

Les paquets Python fournissant la métadonnée python3dist(...) = 0 échoueront dans leur construction. Il était parfois employé par les paquets quand la version exigée par le programme n'était pas connue mais cela relevait souvent d'une erreur du mainteneur des paquets. Cela pouvait générer des problèmes, par exemple si un paquet dépend de python3-ssh-python > 0.9 alors que la version de ce paquet 0.10.0 est disponible dans les dépôts, le générateur automatique de dépendances ne va pas identifier le paquet et générer des erreurs lors de la résolution des dépendances. Au moment de la décision d'effectuer ce changement, seulement 10 paquets étaient ainsi construits mais cela évitera que ce problème n'apparaisse également encore dans le futur.

Début de l'usage généralisé des noms abrégés de licence provenant du projet SPDX pour la licence des paquets plutôt que des noms du projet Fedora, de manière facultative pour l'instant. En effet au sein du projet Fedora si les licences sont bien renseignées, leur usage n'était pas totalement uniforme avec des variations possibles entre les paquets ou des imprécisions dans leur mention. Le projet SPDX commence à s'imposer comme une référence dans la résolution de ce problème avec une nomenclature standardisée et en étant largement adopté par le noyau Linux, Debian, OpenSUSE ou FreeBSD. Cela rendra également le travail de Fedora Legal et de la documentation autour des licences plus simple.

Par exemple le paquet tmux avait pour champs de licence ISC and BSD qui devient maintenant ISC AND BSD-3-Clause AND BSD-2-Clause ce qui met en exergue une meilleure précision.

À ce jour environ 20% des paquets ont été convertis. Et les nouveaux paquets devront dès le départ utiliser cette nomenclature. Le reste devrait suivre pour Fedora 39 maintenant que les outils et la procédure sont en place.

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 mensuels 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, José Fournier 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 38 ?

Fedora Media Writer

Si vous avez déjà Fedora Linux 37 ou 36 sur votre machine, vous pouvez faire une mise à niveau vers Fedora Linux 38. 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 38.