Changements dans Fedora 41 pour les développeurs

Python 3.13

Fedora 41 fournit Python 3.13, la dernière version majeure du langage de programmation Python. Pour connaître la liste des changements introduits dans cette version, consultez la documentation upstream, particulièrement la section Porting to Python 3.13.

De plus, PythonC est désormais compilé avec le flag -O3 dans Fedora, en accord avec les paramètres de compilation utilisés upstream, améliorant les performances de manière notable (par exemple, une moyenne géométrique pyperformance plus rapide de x1,04). Cela affecte uniquement l’interpréteur et la bibliothèque Python standard, et n’a aucun effet sur les modules d’extension fournis au format RPM ou sur les systèmes de développement.

Notes sur la migration des paquets pip installés par l’utilisateur

En effectuant la mise à jour de Fedora 40 à Fedora 41, la version de l’interpréteur Python principal passera de la 3.12 à la 3.13. Si vous avez installé des paquets Python avec pip, vous devez suivre la procédure suivante afin de les migrer vers la nouvelle version :

  1. Installez la version principale précédente de Python :

    sudo dnf install python3.12
  2. Récupérez pip pour la version principale précédente de Python :

    python3.12 -m ensurepip --user
  3. Observez les paquets installés :

    python3.12 -m pip list
  4. Enregistrez la liste contenant les versions spécifiques :

    python3.12 -m pip freeze > installed.txt
  5. Installez les mêmes paquets pour la version désormais par défaut :

    python3 -m pip install --user -r installed.txt
  6. Désinstallez les paquets installés dans votre dossier personnel ; cela garantit la suppression appropriée des fichiers dans ~/.local/bin :

    python3.12 -m pip uninstall $(python3.12 -m pip list --user | cut -d" " -f1)
  7. (Facultatif) Nettoyez la structure de dossiers désormais vide :

    rm -rf ~/.local/lib/python3.12/
  8. (Facultatif) Supprimez la version de Python qui n’est plus nécessaire :

    sudo dnf remove python3.12

En outre, si vous avez installé des paquets avec pip et sudo, exécutez les commandes suivantes avant de suivre la dernière étape supprimant `python3.12`, ou installez-le à nouveau temporairement :

  1. Récupérez pip pour la version principale précédente de Python pour root :

    sudo python3.12 -m ensurepip
  2. Observez les paquets installés au niveau du système :

    sudo python3.12 -m pip list
  3. Désinstallez les paquets installés pour la version 3.12 ; cela permet de garantir une suppression adéquate des fichiers dans /usr/local/bin :

    sudo python3.12 -m pip uninstall $(python3.12 -m pip list | cut -d" " -f1)
  4. (Facultatif) Nettoyez la structure de dossiers désormais vide :

    sudo rm -rf /usr/local/lib*/python3.12/

Si vous avez suivi la première procédure, les paquets sont déjà installés pour votre compte d’utilisateur, ce qui est l’option préférée. Évitez d’utiliser sudo pip à l’avenir ; ces instructions sont uniquement destinées à récupérer les utilisateurs qui ont déjà utilisé sudo pip dans le passé.

Pytest 8

Pytest est un framework de test pour les projets basés sur Python. Avec Pytest, vous pouvez écrire des tests à la fois simples et évolutifs pour votre code. Pytest 8 est maintenant disponible et retire un grand nombre de fonctions obsolètes tout en introduisant des changements non rétrocompatibles. À noter :

  • L’affichage des différences lors de l’échec d’une assertion a été amélioré.

  • La méthode interne FixtureManager.getfixtureclosure a été modifiée. Les plugins utilisant cette méthode, ou bien se définissant comme sous-classe du composant FixtureManager et réécrivant FixtureManager.getfixtureclosure, devront être adaptés.

  • Les hook wrappers new-style sont désormais utilisés en interne.

  • Le traitement du paramètre par défaut lors de la définition des options de configuration est désormais effectué de manière plus sûre.

  • La compilation de certains paquets échouera probablement.

Pour plus de détails, consultez les notes de version upstream.

PyTorch 2.4

Fedora 41 fournit la version 2.4 de PyTorch, autrement dit la toute dernière version de la bibliothèque Python de deep learning.

Pour plus d’informations, consultez l’annonce de sortie upstream et les notes de version.

ROCm 6.2

ROCm 6.2 est la dernière itération des bibliothèques de calcul d’AMD. Elles fonctionnent avec le noyau Linux afin de permettre à ses utilisateur·rices d’exécuter des charges de travail de calcul sur leurs GPU. Autant de GPU que possible sont activés afin de permettre d’utiliser facilement l’accélération. Sur Fedora 41, ROCm 6.2 est également intégré à PyTorch. Consultez les notes de version upstream pour connaître les détails.

Suppression de Python 2

Le paquet python2.7 a été retiré des dépôts de Fedora Linux 41 et ne sera pas remplacé. Python 2 ne sera pas présent dans Fedora 41+, à part dans sa version PyPy. Les paquets dépendant de python2.7 à l’exécution ou à la compilation devront être mis à jour pour prendre en charge Python 3, ou être également abandonnés.

Golang 1.23

La dernière version stable du langage de programmation est maintenant disponible dans Fedora 41. Les changements à noter comprennent :

  • La clause range dans les boucles for-range accepte maintenant les fonctions d’itérateur en tant qu’expression de limite. Les types de fonction d’itérateur pris en charge sont :

    • func(func() bool)

    • func(func(K) bool)

    • func(func(K, V) bool)

    Les appels à la fonction d’itérateur passée en argument produisent les valeurs requises pour la boucle for-range.

  • La suite d’outils Go peut collecter des statistiques relatives à l’utilisation et aux problèmes. Il s’agit d’un système devant être activé manuellement et qui peut être contrôlé à l’aide de la commande go telemetry.

  • La variable d’environnement GOROOT_FINAL ne fonctionne plus. Créez un lien symbolique au lieu de relocaliser ou de copier le binaire go si votre distribution l’installe à un emplacement autre que $GOROOT/bin/go.

  • Le message de traçage affiché par le runtime après une erreur fatale voit désormais ses lignes à partir de la deuxième être indentées d’un caractère de tabulation.

  • Changements significatifs dans l’implémentation des types time.Timer et time.Ticker.

Pour plus de détails, consultez les notes de version upstream.

Perl 5.40

La dernière version stable du langage de programmation est maintenant disponible dans Fedora 41. Les changements à noter comprennent :

  • le nouveau mot-clé CLASS ;

  • l’attribut :reader pour les champs, qui demande la création automatique d’un accessor retournant la valeur du champ dans une instance donnée ;

  • la possibilité d’ajouter un espace entre l’option en ligne de commande -M et le nom du module ;

  • l’ajout des fonctions expérimentales inf et nan à l’espace de noms builtin. Ces fonctions ne font que retourner respectivement la valeur à virgule flottante correspondant à l’infini et la valeur Not-a-Number ;

  • appeler la méthode import d’un paquet inconnu génère un avertissement ;

  • l’opérateur return rejette désormais les objets indirects ;

  • utiliser goto pour passer d’un scope extérieur à un scope intérieur est déconseillé et la possibilité sera entièrement supprimée à partir de Perl 5.42.

Pour plus de détails, consultez les notes de version upstream.

NodeJS 22.0

Fedora 41 fournit désormais par défaut le moteur JavaScript serveur Node.js 22.x. Si vos applications ne sont pas encore prêtes pour cette nouvelle version, vous devez les modifier pour qu’elles dépendent du paquet de compatibilité nodejs20 et de /usr/bin/node20 au lieu de /usr/bin/node.

Haskell GHC 9.6 et Stackage LTS 22

Avec le passage à Fedora 41, le paquet du compilateur Haskell principal, GHC, est passé de la version 9.4.5 à la 9.6.6, soit la dernière version stable (le paquet ghc a été recréé en utilisant le paquet ghc9.6 comme base). De plus, les paquets Haskell dans Stackage (la distribution stable de paquets de code source) ont été mis à jour des versions de la LTS 21 vers celles de la LTS 22. Les paquets Haskell hors Stackage ont été mis à jour vers la dernière version appropriée dans le dépôt de paquets Hackage upstream.

Pour obtenir toutes les informations à propos de cette version, consultez les notes de version upstream et le guide de migration.

Mise à jour de la suite d’outils GNU

La suite d’outils GNU dans Fedora 41 a été mise à jour et contient désormais :

  • GNU C Compiler (gcc) 14.1+

  • GNU Binary Utilities (binutils) 2.42+

  • GNU C Library (glibc) 2.40

  • GNU Debugger (gdb) 14+

Consultez également les notes de version upstream pour GCC et Binutils, le NEWS GLibC et le NEWS GDB.

LLVM 19

Les sous-projets LLVM dans Fedora ont été mis à jour vers la version 19.

Les paquets de compatibilité clang18, llvm18, compiler-rt18 et libomp18 ont été ajoutés pour garantir le fonctionnement des paquets dépendant actuellement de la version 18 de Clang et des bibliothèques LLVM. Les paquets de compatibilité précédents tels que llvm17 et clang17, présents dans Fedora 40, ont été retirés des dépôts.

Consultez les notes de version LLVM 19 pour obtenir des informations supplémentaires à propos de cette version.