From Fedora Project Wiki

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

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

Fedora garde un rôle central dans le développement de ces nouveautés via le développement en amont. En effet, les développeurs de la distribution contribuent également directement au code d’un certain nombre de logiciels libres contenus dans la distribution, dont le noyau Linux, GNOME, NetworkManager, PackageKit, PulseAudio, Wayland, systemd, la célèbre suite de compilateurs GCC, etc. Cliquez ici pour voir l’ensemble des contributions de Red Hat.

Cela a été aussi abordé dans une série d'articles ici, et par ici encore.

GNOME nature

Notons que cette nouvelle version de Fedora introduit la nouvelle version de son logo, dont l'historique et les détails sont fournis dans un autre article.

Nouveau logo de Fedora

Expérience utilisateur

Passage à GNOME 40. Derrière ce changement de numérotation, abandonnant le format 3.x se cachent plusieurs changements d'envergure.

Si l'interface du bureau semble inchangée en prime abord, les bureaux virtuels sont organisés de manière horizontale et non plus verticale. Cela correspond mieux à l'organisation de ces espaces de travail dans les autres systèmes ou même chez GNOME 2 en son temps. La nouvelle ergonomie est mieux adaptée en cas d'usage multi écran, les écrans étant souvent placés les uns à côté des autres.

Le dock applicatif est aussi situé en bas et dispose d'une séparation entre les applications épinglées de celles en cours d'exécution seulement.

Le navigateur Web a de nouveaux onglets, qui peuvent maintenant défiler et avec un style plus cohérent avec le reste des applications GNOME. Il peut afficher aussi les suggestions de recherches de Google, en option.

Le navigateur de Fichiers bénéficie d'une meilleure estimation du temps restant pour les opérations comme les copies ou les suppressions. Il prend en charge la saisie d'un mot de passe pour extraire une archive. L'interface des préférences des applications a été remaniée.

Le centre de contrôle a déplacé les paramètres concernant la disposition clavier de Pays et langues vers Clavier pour des raisons ergonomiques. Si votre constructeur l'a renseigné dans l'UEFI, le nom du modèle de votre machine apparaît dans À propos.

L'application Cartes peut afficher des infobulles concernant des lieux en se basant sur le contenu de Wikipédia, et il peut afficher le nom local du lieu également.

L'application Météo a été graphiquement rafraîchie, avec possibilité de voir le détail sur 48h ou le global sur dix jours. Graphiquement aussi beaucoup d'icônes des applications GNOME ont été redessinées ou des parties de l'interface modernisées comme dans Fichiers, Web, Disques, Polices, Agenda, Photos et Moniteur système.

L'environnement de bureau Xfce fait tourner la roue vers sa version 4.16. Cette version majeure débute par d'importants changements graphiques. La palette de couleurs et les icônes ont été redéfinies pour être plus modernes et cohérentes en essayant de suivre le concept de Adwaita adopté chez GNOME avec GNOME 3.

Dans le centre de configurations, les menus applications préférées et associations de fichiers ont fusionné pour configurer ces aspects en un seul endroit pour des raisons ergonomiques. Il permet aussi de configurer la mise à l'échelle de l'écran si votre écran le prend en charge.

Le navigateur de fichiers Thunar gère la mise en pause des opérations sur les fichiers et de gérer une file d'attente de ces opérations.

Pour les barres principales de l'interface, un nouveau plugin permet de gérer finement le bouton de status des applications, pour savoir si vous avez reçu un message dans votre logiciel de messagerie préféré par exemple.

Le menu À propos affiche plus d'informations concernant votre machine et Xfce, utile pour collecter des informations en cas de besoin.

Nouvelle vue globale de GNOME

L'environnement de bureau minimaliste LxQt est proposé dans sa version 0.16.0.

Les préférences ont été particulièrement étendues, avec la possibilité de définir l'action à faire pour les boutons de mise en veille ou d'extinction de la machine. Il est possible d'y configurer la palette de couleurs de Qt. Elles permettent de définir un client de messagerie, un navigateur web et de fichiers par défaut.

Le visionneur d'images peut les redimensionner et afficher plus de formats différents.

Le serveur d'affichage Wayland est employé par défaut dans l'environnement KDE Plasma. Le support par KDE de Wayland est jugé suffisamment mature pour rejoindre GNOME dans ce choix par défaut, près de quatre ans et demi après. En cas de problèmes il reste toujours possible de lancer cet environnement avec X11. Évidemment, les applications non compatibles avec ce changement pourront être lancées de manière transparente à travers XWayland qui établie la couche de compatibilité entre les deux.

Rappelons que Wayland vise à améliorer la sécurité du système, en évitant qu’une application quelconque puisse dessiner sur d’autres applications, par exemple. Il pourrait à terme améliorer les performances, en exploitant pleinement l’accélération matérielle par les cartes graphiques. En outre, il devrait fiabiliser le système, en améliorant l’architecture du programme et en facilitant sa maintenance.

La mémoire d'échange zram activée peut utiliser toute la mémoire RAM et ce jusqu'à 8 Gio par défaut. Cette fonction introduite dans Fedora 33 était limitée au quart de la mémoire RAM de la machine et jusqu'à un maximum de 4 Gio. Cette extension a pour but de permettre l'exécution de certains programmes comme l'installateur de Fedora nommé Anaconda dans de bonnes conditions sur des machines qui ont 1 Gio de mémoire voire moins. Le choix initial pour Fedora 33 était aussi conservateur car il y avait des doutes sur le bon fonctionnement avec une zram pouvant remplir potentiellement la RAM entièrement, ce qui s'avère être peu réaliste en pratique.

Le gestionnaire de fenêtre minimaliste et pavant i3 dispose de sa propre image Spin de Fedora. C'est le premier gestionnaire de fenêtres pavant à bénéficier d'une image dédiée, ce qui peut faciliter la réalisation de tests de cet environnement. Il propose un environnement minimal pour des machines peu puissantes sans devoir passer par une autre édition de Fedora avant d'installer i3 par après.

L'audio va maintenant être géré par Pipewire par défaut, en remplacement de PulseAudio, ALSA et JACK. PulseAudio était globalement utilisé pour l'ensemble des applications classiques, ceux de GNOME ou Firefox par exemple, tandis que JACK pour les applications professionnelles ou usages avancés, comme pour faire de l'enregistrement audio de qualité, et ALSA pour des logiciels plus anciens qui ne se sont pas adaptés à PulseAudio. Ici Pipewire les remplace tous les trois et il fournit sa propre couche de compatibilité pour que la transition soit transparente.

Son avantage est que contrairement à PulseAudio, il est destiné à prendre en charge l'usage pointu des professionnels de l'audio dont la gestion d'une faible latence. Ces applications utilisaient JACK pour cette tâche, mais son intégration dans le système était souvent difficile et mauvaise ce qui rend la gestion du son globalement difficile.

Pipewire est également plus flexible que PulseAudio, plusieurs processus gèrent le graphe de routage du son et la configuration de ces flux. Par ailleurs il a été conçu avec la sécurité en tête, en étant capable de gérer les permissions de manière plus fines et de gérer les applications situées dans des conteneurs comme Flatpak. Il devient plus aisé d'interdire à une application d'enregistrer le son du micro par exemple.

Cependant, du moins pour Fedora 34, certaines fonctionnalités ne seront pas proposées par rapport à PulseAudio :

  • La découverte réseau via avahi et le transport réseau via les protocoles TCP et RTP ;
  • Définir sa machine comme serveur multimédia UPNP.

Cela sera proposé par la suite, si jamais vous souhaitez revenir à PulseAudio ou JACK comme avant cela reste possible via les commandes suivantes :

# dnf swap --allowerasing pipewire-pulseaudio pulseaudio 
# dnf swap --allowerasing pipewire-jack-audio-connection-kit jack-audio-connection-kit 

L'image Comp Neuro pour la neuroscience va être déclinée aussi en image Docker / podman pour la fournir sous forme de conteneurs. Cela facilitera sa diffusion et son usage à partir d'un autre système hôte.

Les images netinstall et DVD n'auront plus le fichier ext4 à l'intérieur du système de fichiers squashfs. Squashfs récupère l’arborescence complète de l'image d'installation. Jusqu'à présent le système complet était effectivement dans une partition de type ext4, lui même inclus dans le système de fichiers squashfs qui est en lecture seule et compressée pour optimiser sa taille. Ext4 était nécessaire pour bénéficier des attributs de fichiers étendus XATTRs et parce qu'il fallait être capable de monter ce système de fichier en lecture et écriture durant le démarrage, ce que squashfs ne gère pas. Mais squashfs sait maintenant prendre en charge les attributs XATTRs, et via un système de fichiers overlayfs par dessus on peut contourner sa limitation concernant la lecture / écriture. Se débarrasser de la partition ext4 permet de rendre la compression par squashfs plus efficace, car on supprime une couche intermédiaire inefficace dans ce processus, mais aussi de simplifier la réalisation et le test de l'image. Les images concernées gagnent environ 27 Mio.

Le modèle du PC est affiché, de même que le nouveau logo de Fedora

Gestion du matériel

La configuration de GRUB est unifiée pour toutes les architectures. En particulier entre les architectures utilisant l'EFI d'un côté comme x86_64 ou certaines machines ARM et x86 avec BIOS ou PowerPC 64 bits avec OpenFirmware de l'autre. En effet, avec l'EFI, la configuration comme l'environnement de GRUB sont situés dans la partition dédiée de l'EFI quand pour les autres cela réside dans la partition ou le répertoire /boot.

En particulier cela signifie que le chemin d'accès au fichier de configuration diffère, avec l'EFI c'est le fichier /boot/efi/EFI/fedora/grub.cfg quand c'est /boot/grub2/grub.cfg pour les autres. Cela signifie que les outils qui gèrent ces configurations et leur installation comme les utilisateurs et la documentation doivent en être conscients. Par ailleurs, en cas de désactivation de l'EFI ou de transfert du disque dur sur une autre machine, le démarrage peut ne plus fonctionner.

La solution est de sauvegarder les fichiers grub.cfg et grubenv dans /boot/grub2/. Le contenu de /boot/efi/EFI/fedora/grub.cfg deviendra très minimal pour définir la variable $prefix qui permettra de définir sa localisation dans le système via UUID de la partition contenant le répertoire /boot. L'inconvénient est que cette disposition oblige GRUB à être installé dans le répertoire /boot mais comme c'est déjà le cas pour le noyau dans Fedora, finalement cela ne change pas grand chose. Il sera toujours difficile de réaliser un démarrage ne reposant que sur l'EFI.

L'architecture ARMv7 va bénéficier de l'UEFI par défaut pour les nouvelles images générées par le projet Fedora. GRUB devient de fait le nouveau gestionnaire de démarrage par défaut au lieu de extlinux. Cela rendra l'installation, la documentation et la maintenance de Fedora plus uniforme au sein des architectures avec un seul chargeur de démarrage par défaut.

Une nouvelle image pour l'architecture AArch64 sera proposée avec l'environnement KDE Plasma. Cette image rejoint les images Workstation, Xfce, Minimal et Server pour cette architecture, avec un choix de fait plus large.

Les fichiers firmware du noyau sont compressés avec l'algorithme LZMA2. Cette nouvelle possibilité offerte par Linux 5.3 consiste à compresser en somme les fichiers contenus dans le répertoire /usr/lib/firmware/. Avec le temps le contenu du dépôt linux-firmware pèse plus de 900 Mio, et ce sans compter les firmware provenant d'autres endroits. Avec la compression il devient possible de réduire cet impact maximal par deux. En contrepartie ces fichiers sont décompressés à la volée quand ils sont chargés ce qui ajoute une petite latence supplémentaire.

Internationalisation

Un nouveau site web et son infrastructure est proposé pour fournir les statistiques de traduction de Fedora et simplifier la maintenance des mémoires de traduction. L'un des objectif est tout d'abord de mesurer pour connaître la situation de la traduction dans Fedora, que ce soit les projets liés à Fedora comme les paquets qu'elle distribue. Le nombre de langues traduites, et le taux de traduction pour chacune avec des détails par projet. Cela permettra de facilement rediriger quelqu'un vers la bonne plateforme de traduction, par exemple si vous souhaitez améliorer la traduction du paquet 0ad en français, le site vous indique que l'équipe de traduction correspondante est située là bas : http://www.transifex.com/wildfire-games/0ad/language/fr/

Mais cela permet aussi de travailler la mémoire de traduction de manière plus transversale pour renforcer la cohérence d'ensemble. Un même terme peut être traduit de plusieurs façons différentes, sans qu'il y ait spécialement un bon ou un mauvais choix. La mémoire de traduction est d'identifier comment ces mots ont été traduits par le passé, pour essayer d'utiliser toujours le même terme. Au sein du Logiciel Libre, chaque projet gère sa traduction de son côté, la traduction de Firefox est totalement isolée de celle de LibreOffice. Mais pourtant ils traduisent des mots en commun, et font des choix chacun de leur côté, avec une mémoire de traduction plus centralisée ces projets pourraient éventuellement adopter les mêmes choix et apporter une plus grande cohérence dans leurs interfaces dans cette langue.

Les projets Debian et Ubuntu ont ce genre de site web. Dans le cas de Debian il est trop spécifique à cette distribution avec des outils très anciens ne tirant pas profit des progrès réalisés ces 20 dernières années dans le domaine de la traduction. Et typiquement ils ne proposent rien concernant la mémoire de traduction. Alors que Ubuntu cela est trop lié à l'outil launchpad, et la limite entre ce qui est fait par eux et par les projets en amont n'est pas bien définie.

Ce travail repose sur l'analyse des paquets source RPM pour extraire les fichiers de traduction en format .po pour les analyser et les traiter.

IBus est proposé à la version 1.5.24. Cette version propose la prise en charge de la nouvelle version de la bibliothèque graphique GTK4. Par ailleurs l'utilitaire ibus-setup dispose d'une meilleure recherche pour les méthodes d'entrées.

ibus-anthy est le système d'entrée par défaut pour le japonais au lieu de ibus-kkc, ibus-m17n pour le singhalais au lieu de ibus-sayura et ibus-unikey pour le vietnamien au lieu de ibus-bogo. Ces changements ont eu lieu car ces projets n'étaient plus effectivement maintenus, avec de vieux bogues non résolus, la non prise en charge des dernières fonctionnalités d'Ibus ou un mauvais support de Wayland.

HarfBuzz est activé par défaut dans les polices FreeTypes pour permettre d'améliorer le rendu dans les langues ayant des symboles plus complexes.

kasumi-unicode est généré à partir du fichier source kasumi.spec dorénavant. Les dictionnaires utilisateurs sont maintenant sauvegardés dans le répertoire définis par $XDG_CONFIG_HOME. Et il est mieux maintenu que anthy dont il dérive indirectement.

La nouvelle vue globale de GNOME avec la liste des applications

Administration système

Par défaut les partitions btrfs créées lors de l'installation auront la compression du système de fichiers activée avec l'algorithme zstd. Cet algorithme a pour avantage de présenter un beau ratio de compression tout en étant rapide à la compression comme la décompression, caractéristiques idéales pour cet usage.

Cette fonctionnalité repose sur la capacité de btrfs de faire de la compression par fichier à la volée de manière transparente, zstd étant l'un des trois algorithme officiellement pris en charge. L'objectif est de réduire l'usage de l'espace de stockage tout comme d'augmenter potentiellement la durée de vie des SSD (ou eMMC) qui sont de plus en plus courants. Les performances en lecture comme écriture peuvent également être améliorées ou dégradées suivant la configuration.

SELinux ne peut plus être entièrement désactivé après le démarrage du système. Seul le passage entre les modes permissif et strict est permis après ce stade. Un redémarrage devient nécessaire pour appliquer une désactivation complète. L'objectif derrière est d'améliorer la sécurité du noyau, une partie des structures de données peuvent passer en mode lecture seule après l'initialisation pour éviter tout changement non souhaitable après l'initialisation. Le noyau Linux ayant décidé de suivre cette direction, le maintient de cette fonctionnalité serait à charge du projet Fedora ce qui n'est pas souhaitable.

Si vous souhaitez désactiver entièrement SELinux sur votre système, cela passe donc par l'argument selinux=0 à passer au noyau.

En parlant de SELinux, il a été mis à jour pour prendre en compte des dernières classes, permissions et capacités ajoutées dans le noyau. En particulier les éléments suivants sont dorénavant gérés :

  • Nouvelles classes : lockdown et perf_event ;
  • Nouvelles permissions : watch watch_mount watch_reads watch_sb et watch_with_perm ;
  • Nouvelles capacités : bpf checkpoint_restore et perfmon.

Cela permet entre autre d'améliorer la granularité des permissions et autorisations du système. L'autre intérêt est de permettre aux systèmes utilisant la fonctionnalité Multi-level Security de démarrer. Car une telle politique de sécurité peut bloquer le démarrage si des permissions inconnues sont détectées.

La gestion du manque de mémoire disponible sera prise en charge par le service systemd-oomd par défaut. systemd-oomd se base sur les informations du noyau à propos de la pression mémoire d'une part, mais aussi sur le temps perdu par les différents cgroups. Le temps passé à réclamer des pages mémoires libres, des erreurs mémoires liées au cache ou récupérer des données depuis le swap plutôt que la RAM. Ces informations sont des indices d'une forte pression mémoire sur le système. En cas de dépassements de certains seuils, configurables, il peut décider sur quel processus agir qui sera par défaut celui qui demande le plus de nouvelles pages mémoires et pas celui qui en a le plus. Il est d'ailleurs possible de définir dans une unité systemd de diminuer la priorité dans la sélection du processus à tuer voire que systemd l'ignore complètement. Cela se fait respectivement via les options ManagedOOMPreference=avoid et ManagedOOMPreference=omit. Cela peut servir pour s'assurer que certains processus critiques ne seront jamais (ou peu souvent) tués dans ces conditions.

Pour revenir à earlyoom utilisé jusque là, vous pouvez exécuter les commandes suivantes :

# systemctl disable --now systemd-oomd
# systemctl enable --now earlyoom

Les paramètres de démarrage, reçus par le noyau Linux, à destination de l'installateur Anaconda devront être préfixés avec inst. pour éviter les conflits. En effet il est possible d'utiliser les paramètres envoyés au noyau pour qu'Anaconda qui est l'installateur de Fedora puisse se comporter différemment. Cependant jusqu'ici pour les variables supportées le préfixe n'était pas obligatoire, il était possible donc d'envoyer debug ou inst.debug pour qu'il soit plus bavard en cas de problèmes. Sauf que sans le préfixe, le noyau utilise cette variable aussi pour sortir plus d'informations à l'exécution, ce qui n'est probablement pas voulu par l'utilisateur.

Comme pour Dracut qui a le préfixe rd. dans ce cas, inst. devient nécessaire pour Anaconda pour éviter tout conflit d'usage avec le noyau ou d'autres outils.

Les services systemd qui doivent être relancés suite à une mise à jour le seront tous à la fin de la procédure. Jusqu'ici quand un service était mis à jour, via un script avec une instruction %post , RPM pouvait relancer automatiquement le service lors de la mise à niveau du paquet. Dorénavant, un paquet qui a un tel service à relancer devra fournir un fichier spécifique sous la forme /usr/lib/systemd/system/<service>.service.d/needs-restart.conf ou alors une instruction dans le fichier .service directement sous la forme X-restart-on-upgrade=true|false.

Ainsi, le gestionnaire de paquets peut relancer tous les services nécessaires quand la mise à niveau est totalement finie. Et les administrateurs systèmes pourront aussi éventuellement affiner ce choix selon leurs besoins. L'intérêt est que cela garantie que le relancement des services se fait bien une fois que toutes les dépendances nécessaires ont bien été mises à jour au préalables ce qui évite des bogues un peu difficile à identifier et à corriger.

Le navigateur web de GNOME avec ses nouveaux onglets

Les utilitaires Bluetooth désuets ciptool, gatttool, hciattach, hciconfig, hcidump, hcitool, rfcomm et sdptool sont déplacés dans le paquet bluez-deprecated avant une suppression dans le futur. Ces paquets ont globalement été abandonnés par le projet bluez au profit de la commande bluetoothctl.

La collection d'outils X.org sera proposée via des paquets plus individuels que les paquets génériques xorg-x11-{apps,font-utils,resutils,server-utils,utils,xkb-utils} employés jusqu'ici. Certains utilitaires sont également supprimés. Ces collections d'utilitaires étaient assez historiques mais offrent peu de flexibilité et ne représentent plus la réalité. Par exemple les utilitaires luit ou edid-decode ne sont même plus développés sous l'égide de X.org. Le versionnage de ces paquets ne collait plus avec ceux des projets embarqués. Mettre à jour un paquet pour un composant nécessitait de régénérer cette mise à jour pour l'ensemble. Les paquets étaient aussi plus gros que nécessaires pour beaucoup d'utilisateurs. Tout ceci est donc simplifié et plus cohérent avec le nouveau découpage.

Les paquets xemacs, xemacs-packages-base, xemacs-packages-extra, neXtaw, nscd et python-mock sont en passe de subir le même sort. XEmacs n'a pas eu de nouvelles version depuis près de 7 ans et repose sur une bibliothèque neXtaw qui n'en a pas eu depuis 2003. Pour ncsd il n'évolue plus trop également, avec une grande dette technique et est remplacé par défaut par systemd-resolved et sssd depuis quelques temps. Enfin pour python-mock, il a intégré la bibliothèque standard de Python sous le nom de module unittest.mock et n'est dès lors plus nécessaire avec les versions récentes de Python.

XWayland est proposé dans un paquet à part et indépendant du reste de X.org : xorg-x11-server-Xwayland. XWayland évolue plus vite que X11, cela permet à Fedora de produire des mises à jour de ce premier plus souvent en se basant sur des versions non stables. Le tout en évitant de maintenir des correctifs au sein de Fedora pour exploiter le travail du projet officiel directement. Cela permet aussi d'avoir plusieurs images de travail par fenêtres. Permettant de modifier l'affichage de la fenêtre en fond, sans modifier à l'écran son affichage, puis quand le rendu est terminé faire le changement instantannément, réduisant les artefacts graphiques.

Le célèbre serveur de DNS Bind est lié à la version 9.16. Le principal changement est la configuration des politiques de changement de clef DNSSEC. Certains outils associés comme dig, mdig et delv peuvent exporter des données en format yaml.

Le gestionnaire de base de données PostgreSQL s'impose avec sa version 13. Cette version apporte entre autre la déduplication des entrées de l'index de l'arbre B-tree, ce qui diminue les besoins en espace de stockage et augmente les performances. Les requêtes qui exploitent des aggrégats ou des tables partitionnées sont également plus performantes. Les requêtes de manière générales sont réordonnées en se basant sur des statistiques pour améliorer le temps de traitement.

Son concurrent MariaDB est proposé à la version 10.5. Parmi les changements, il y a le renommage des commandes qui débutaient encore avec mysql par mariadb avec un lien symbolique de l'ancien vers le nouveau nom, histoire d'achever la transition. Il a un nouveau type de données INET6 pour gérer les IPv6. Les privilèges sont gérés plus finement, le privilège SUPER est ainsi découplé en une dizaines de nouveaux privilèges. Enfin la partie base de données n'est pas en reste, InnoDB bénéficie lui aussi d'améliorations de performances très diverses.

L'utilitaire de gestion du stockage Stratis dispose de la version 2.3.0. Depuis la précédente version, les systèmes de fichiers qu'il gère sont situés dans le répertoire /dev/stratis. L'interface D-bus a été étendue, l'utilisateur peut aussi changer son niveau de détails des journaux.

Le démon pour synchroniser le temps avec le protocole NTP et nommé sobrement ntp utilise ntpsec à la place. Mais chrony reste le démon utilisé par défaut pour cette fonction. ntp est effectivement peu maintenu et a de gros soucis de sécurité qui ne sont pas corrigés. ntpsec dérive de celui-ci, et comme l'indique son nom se concentre sur la sécurité justement. Cependant toutes les fonctionnalités ne sont pas encore implémentées, mais c'est suffisant pour l'essentiel des besoins.

XFCE aussi a le droit à une nouvelle version

Développement

Mise à jour de la suite de compilateurs libre GCC 11. La compilation C++ utilise par défaut le standard C++17 au lieu de C++14. Il prend en charge le Linux Kernel Concurrency Sanitizer pour détecter à l'exécution des problèmes de concurrence au sein du noyau. En cas d'erreurs, GCC renvoie le numéro de colonnes réel depuis le début de la ligne et non plus en nombre d'octets, ce qui posait des problèmes avec les caractères occupants plusieurs octets (cas avec l'encodage UTF-8) ou un caractère qui est affiché sur plusieurs colonnes comme les emoji. La prise en charge des fonctionnalités de C2X et de C++20 progresse, et de nombreux nouveaux avertissements sont aussi disponibles pour ces langages.

Son concurrent LLVM passe lui à la version 12. La version 11 reste disponible dans les dépôts pour les paquets qui en ont besoin. Il prend en charge des optimisations pour les processeurs récemment sortis, et suit la convention de GCC pour définir les micro architectures x86-64-v[234] pour définir leurs niveaux de fonctionnalités. Concernant C++, la prise en charge du langage C++20 a été améliorée, avec le début du travail pour le futur C++2b. L'outil clangd consomme également moins de RAM de manière significative.

Tandis que la bibliothèque C Glibc passe à la version 2.33. La prise en charge du matériel s'améliore avec l'architecture RISC-V 32 bits. Il est possible via l'en-tête <sys/platform/x86.h> d'obtenir des macros pour connaître les fonctionnalités du processeur x86. Et beaucoup de corrections de bogues et de failles de sécurité.

Mise à jour des utilitaires binutils 2.35. Son assembleur peut produire des numéros de ligne des tables au format DWARF-5. La commande readelf fait également plus de vérifications à la lecture des fichiers d'entrées. Puis aussi les corrections de bogues usuels.

Le petit coup d'accélération pour la bibliothèque généraliste C++ Boost 1.75. Depuis Fedora 33, la bibliothèque Boost propose de nouveaux modules :

  • STLInterfaces pour simplifier l'écriture d'itérateurs, conteneurs et vues compatibles avec la bibliothèque standard ;
  • PFR 2.0 qui fournit une réflexion basique, donc obtenir les éléments d'une structure par index par exemple et itérer dessus par exemple en C++14 et supérieurs ;
  • JSON pour interpréter, sérialiser un document JSON et manipulations de DOM en C++11 et ultérieur ;
  • LEAF pour simplifier la gestion d'erreur de manière légère compatible C++11 et ultérieur également.

Et bien sûr beaucoup de correctifs ont été apportés depuis aussi.

Le langage Go fait un bon en avant avec la version 1.16. Grâce au nouveau module embed, il est possible de définir via l'instruction //go:embed l'inclusion d'un fichier dans le binaire directement. La variable environnement GOVCS permet de restreindre les gestionnaires de version à employer pour les téléchargements pour des raisons de sécurité. L'édition de liens consomme moins de mémoire et est en moyenne 25% plus rapide.

Le langage précieux Ruby est proposé dans sa nouvelle version 3.0. Ce langage débute par une amélioration significative de ses performances avec son compilateur à la volée MJIT, de l'ordre de trois fois plus performant que Ruby 2.0. Un nouveau langage RBS est fourni pour définir les types dans Ruby, pour permettre aux différents outils de profilage de mieux interpréter les programmes Ruby. Un nouveau module expérimental arrive, avec Ractor pour fournir une exécution dans un fil d'exécution parallèle sans partage d'objet, la communication se faisant par messages pour améliorer la fiabilité. Et bien d'autres changements encore.

Sa boîte à outils Ruby on Rails arrive à la gare au quai 6.1. Il permet d'avoir un changement de connexion par base de données, passer au rôle reading ne se fait plus que sur une base de données à la fois, et non toutes les connexions. Pour les bases de données encore, il prend en charge le schéma unique pour de multiples partitions. Et bien d'autres choses à découvrir.

L'environnement de compilation de binaires Windows, MinGW, est mis à jour et fourni GCC 11, GDB 10 et binutils 2.36. Cela permet d'utiliser les mêmes versions de ces composants que pour une compilation native pour Fedora.

La bibliothèque de sécurité NSS avec sa version 3.52 a changé la structure CK_GCM_PARAMS en étant incompatible en terme de source code, mais pas son interface binaire. Cela est dû au changement dans la spécification dans PKCS #11 v3.0, la version précédente n'était pas conforme.

OpenLDAP va fournir uniquement des bibliothèques avec un fil d'exécution parallèle. Des liens symboliques redirigent la liaison vers la bibliothèque libldap vers libldap_r. Cela suit la décision du projet officiel pour sa prochaine version majeure, la différence entre les deux bibliothèques résidant uniquement sur cette faculté d'exploiter un ou plusieurs cœurs. Mais comme elles partageaient les mêmes symboles, le comportement pouvait être imprévisible lors de la compilation, pouvant choisir l'un ou l'autre.

Les bibliothèques Rust fournis via les crates nécessaires pour les paquets proposés par Fedora seront fournies dans les dépôts dans des paquets dédiés sous la forme rust-$NOM_CRATE comme par exemple rust-libsqlite3-sys pour la bibliothèque SQLite. Cela permettra notamment de mieux mutualiser les ressources pour compiler les paquets de Fedora, un crate pouvant être utilisé par plusieurs paquets. Cela réduit également le besoin d'effectuer des étapes manuelles pour compiler de tels projets.

Les bibliothèques Python avec un nom de fichier dépendant de l'architecture utilisent maintenant la nomenclature officielle de CPython au lieu d'un nom spécifique à Fedora. Par exemple le fichier /usr/lib64/python3.9/lib-dynload/array.cpython-39-powerpc64le-linux-gnu.so devient /usr/lib64/python3.9/lib-dynload/array.cpython-39-ppc64le-linux-gnu.so. Cela concerne surtout les architectures ppc64le et armv7hl, Fedora avait fait des choix à l'époque où ces architectures n'étaient pas gérées d'où ce conflit apparu progressivement. Cela permettra de résoudre certains problèmes que pouvaient rencontrer des développeurs sur de telles architectures.

Les paquets ne fournissant qu'une bibliothèque Nodejs ne seront plus proposés. Le but de Fedora est de ne fournir que les paquets permettant de fournir l'interpréteur, les outils annexes tels que npm, les en-têtes de base et les différents binaires finaux reposant sur Nodejs. L'objectif est de réduire le nombre de paquets avec l'effort de maintenance que cela nécessite. Chaque paquet pourra ainsi utiliser la version de la bibliothèque qui correspondra à celui testé et approuvé par le logiciel d'origine. Il y avait d'ailleurs quelques problèmes pour désinstaller ces paquets spécifiquement qui seront de fait résolus ainsi.

Qui a dit qu'il ne faisait pas beau en Belgique ?

Projet Fedora

Le système minimal de compilation du projet Fedora, buildroot, se débarrasse de make. Sur les 22 309 paquets compilés par Fedora, environ 11 931 d'entre eux soit la moitié n'ont pas besoin de cet outil pour être générés. En se séparant de lui par défaut, l'image est un peu plus petite ce qui réduit les coûts d'exploitation en bande passante, taille d'image et espace disque consommé.

Les macros liés à Python 2 pour créer les paquets RPM sont gelés. Ceux pour générés les dépendances automatiques liés à Python 2 sont supprimés car plus nécessaires suite au passage à Python 3 l'an dernier. Cet effort de maintenance n'est plus justifié pour les 13 paquets qui nécessitent encore Python 2 à l'heure actuelle.

L'utilitaire fbrnch est proposé dans les dépôts. Cet outil, venant du nom Fed Brunch, simplifie le workflow en automatisant certaines étapes pour les empaqueteurs du projet. Créé l'année dernière, ayant reçu des retours favorables il peut passer de son dépôt Copr non officiel à une disponibilité plus générale ce qui augmentera son usage et son évolution.

Les dépôts git de Fedora ont renommé la branche principale en main au lieu de master. L'objectif est de suivre la politique de nombreux projets libres qui ont fait ce changement par le passé comme git lui même. Abandonnant une terminologie qui peut poser problèmes alors que des équivalents existent, il a été décidé d'effectuer ce changement pour être plus ouvert à l'ensemble des contributeurs potentiels.

La politique concernant les modules a été remaniée et formalisée. L'objectif est de définir ce qui est possible de faire ou pas avec les modules pour éviter la cacophonie suivant les empaqueteurs. Notamment concernant la gestion des conflits entre les versions, ou avec d'autres paquets. La branche par défaut d'un module ne doit pas dépendre d'un autre module dans une version qui n'est pas celle par défaut. Il n'est pas possible de changer cette branche de référence pour une version de Fedora donnée, seule Rawhide ou un changement de version de Fedora peut permettre un tel changement. De même un paquet non modulaire ne peut pas devenir modulaire en cours de route pour une version donnée de Fedora.

La communauté francophone

L'association

Logo de Borsalinux-fr
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 hebdomadaires chaque lundi soir à 20h30 (heure de Paris) sur IRC (canal #fedora-meeting-1 sur Freenode).

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.

L'équipe se réunit tous les lundis soir après 21h (heure de Paris) sur IRC (canal #fedora-doc-fr sur Freenode) pour faire progresser la documentation par un travail collaboratif. Le reste de la semaine cela 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 34 ?

Fedora Media Writer
Fedora Media Writer

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