Changements dans Fedora 42 pour les développeur·ses

Le framework de vérification en runtime Copilot

Fedora 42 fournit le langage et système de vérification en runtime Copilot, un framework de vérification en runtime axé sur les flux pour la génération de code C temps réel, développé pour la NASA. Il permet aux utilisateur·rices d’écrire des programmes concis d’une manière simple mais puissante à l’aide d’une approche axée sur les flux.

Les programmes peuvent être interprétés à des fins de tests, traduits en code C99 pour être incorporés dans un projet ou exécutés sous la forme d’une application autonome. Le backend C99 garantit que la sortie est constante en temps et en mémoire, la rendant viable pour des systèmes avec des exigences temps réel strictes.

Vous pouvez commencer à l’utiliser en installant le paquet ghc-copilot. Pour plus d’informations, consultez les documentations upstream suivantes :

Ruby 3.4

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

  • L’analyseur par défaut parse.y a été remplacé par Prism pour amélioré la maintenabilité, la tolérance aux erreurs, la portabilité et les performances.

  • Le compilateur YJIT offre désormais de meilleures performances dans la plupart des benchmarks sur les architectures CPU x86-64 et arm64.

  • La bibliothèque socket utilise maintenant la version 2 de Happy Eyeballs pour des connexions réseaux efficaces et fiables, adaptées aux environnements Internet modernes.

  • Le passage de blocs en index n’est plus autorisé.

  • Le nom toplevel ::Ruby est maintenant réservé.

  • rb_newobj et rb_newobj_of (et les macros associées RB_NEWOBJ, RB_NEWOBJ_OF, NEWOBJ, NEWOBJ_OF) ont été retirées.

  • La fonction déconseillée rb_gc_force_recycle a été retirée.

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

PHP 8.4

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

  • Les hooks de propriétés, permettant l’utilisation de propriétés calculées prises en charge nativement par les IDE et les utilitaires statiques sans aucun commentaire docblock.

  • La portée d’écriture d’une propriété est maintenant indépendante de sa portée de lecture.

  • Le nouvel attribut #[\Deprecated].

  • Les nouvelles fonctions array_find(), array_find_key(), array_any() et array_all().

  • Les nouvelles sous-classes Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql et Pdo\Sqlite.

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

Mise à jour de la suite d’outils GNU

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

  • GNU C Compiler (gcc) 15

  • GNU Binary Utilities (binutils) 2.44

  • GNU C Library (glibc) 2.41

  • GNU Debugger (gdb) 15+

Consultez aussi les notes de version upstream pour GCC, Binutils, glibc et GDB.

LLVM 20

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

Cette mise à jour entraîne un changement de version soname pour les bibliothèques LLVM, le paquet de compatibilité llvm19 a donc été ajouté pour garantir le bon fonctionnement des paquets qui dépendent actuellement de la version 19 des bibliothèques Clang et LLVM.

Autres changements notables :

  • Changements relatifs aux préfixes d’installation : Le préfixe d’installation pour tous les nouveaux paquets LLVM sera /usr/lib64/llvm$VERSION/, au lieu de /usr/. Un lien symbolique sera ajouté à /usr/ pour chaque binaire et bibliothèque, et pointera vers le binaire correspondant dans /usr/lib64/llvm$VERSION/. L’objectif de ce changement est de réduire les différences entre les versions issues des paquets de compatibilité et celles qui ne le sont pas, afin de simplifier le passage d’une version de LLVM à une autre pour les paquets qui en dépendent.

  • Fusion d’autres paquets dans llvm : Dans Fedora 41, nous avons fusionné les paquets clang, libomp, compiler-rt, lld, python-lit et lldb avec le SRPM llvm. Pour Fedora 42, nous fusionnerons llvm-bolt, polly, libcxx et mlir avec le SRPM llvm.

Haskell GHC 9.8 et Stackage LTS 23

Pour Fedora 42, le paquet principal du compilateur GHC Haskell est passé de la version 9.6.6 à la 9.8.4 (dernière version stable, obtenue en rebasant le paquet ghc sur le paquet ghc9.8). De plus, les paquets Haskell dans Stackage (la distribution stable de paquets de code source Haskell) ont été mis à jour des versions LTS 22 vers celles de la toute dernière LTS 23. Les paquets Haskell absents de Stackage ont été mis à jour vers la dernière version appropriée dans le dépôt de paquets upstream Hackage.

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

Golang 1.24

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

  • Les modules Go peuvent désormais suivre les dépendances exécutables en utilisant les directives tool dans go.mod.

  • Le nouveau flag -tool pour go get engendre l’ajout d’une directive tool au module actuel pour les paquets nommés, en plus de l’ajout de directives require.

  • Le nouveau métamotif tool fait référence à l’ensemble des outils dans le module actuel. Il est possible d’en tirer partie en les mettant tous à jour avec go get tool ou en les installant dans votre répertoire GOBIN avec go install tool.

  • Les exécutables créés par go run et le nouveau comportement de go tool sont maintenant mis dans le cache de build Go. Cela permet d’accélérer les exécutions répétées, au prix d’un cache plus lourd.

  • Les commandes go build et go install acceptent désormais un flag -json qui a pour effet d’envoyer sur la sortie standard les sorties et les échecs de build sous la forme d’un JSON structuré. Pour connaître les détails sur le format du rapport, exécutez go help buildjson.

  • De plus, go test -json intercale les résultats de tests au format JSON dans les sorties et échecs de build. Ces résultats sont distinguables grâce aux nouveaux types Action, mais s’ils causent des problèmes dans un système de tests d’intégration, vous pouvez revenir à la sortie de build au format texte en définissant le paramètre GODEBUG gotestjsonbuildtext=1.

  • La nouvelle variable d’environnement GOAUTH fournit une manière flexible de s’authentifier lors de la récupération de modules privés. Exécutez go help goauth pour plus d’informations.

  • La commande go build définit maintenant la version du module principal dans le binaire compilé en se basant sur le tag et/ou le commit du système de contrôle des versions. Un suffixe +dirty sera ajouté s’il existe des modifications en attente. Utilisez le flag -buildvcs=false pour omettre les informations relatives au contrôle des versions dans le binaire.

  • Le nouveau paramètre GODEBUG toolchaintrace=1 peut être utilisé pour tracer le processus de sélection de suite d’outils de la commande Go.

Pour plus d’informations, consultez les notes de version upstream.

Tcl/Tk 9

Tcl (Tool Command Language) et Tk (suite d’outils graphiques Tcl) ont été rebasés sur la version 9 dans Fedora 42. Il y a des incompatibilités majeures et il n’est pas réaliste de porter tous les paquets dépendant de la version 8, c’est pourquoi des paquets de compatibilité (tcl8 et tk8) ont été ajoutés.

Les nouvelles fonctionnalités comprennent :

  • Capacités 64 bits : valeurs de données supérieures à 2 Go.

  • Unicode et encodages : prise en charge de l’ensemble des codepoints, ajout d’encodages et de profils d’encodage pour gouverner les entrées/sorties, et plus encore.

  • Accès aux capacités de l’OS : notifications, impression et barres système.

  • SVG : prise en charge partielle des images, utilisation étendue permettant la création de widgets et de thèmes pouvant être mis à l’échelle.

  • Fonctionnalités et conventions des plateformes : nombreuses améliorations, dont la prise en charge des gestes à deux doigts.

Pour plus d’informations à propos de cette version, consultez les notes de version upstream.

Générateur de dépendances pour les extensions GNOME Shell

Fedora 42 fournit un nouveau générateur de dépendances pour les extensions GNOME Shell, sous la forme du paquet gnome-shell-extension-rpm-macros.

Les extensions GNOME Shell sont fournies avec un fichier metadata.json listant les versions prises en charge de GNOME Shell. Ces données n’étaient jusqu’ici pas utilisées dans Fedora lors du packaging d’une extension, sauf si lae mainteneur·se avait décidé de transférer explicitement ces informations dans la spec et de les maintenir à jour.

À partir de Fedora 42, le RPM binaire déclare automatiquement sa dépendance sur les versions correctes de GNOME Shell, garantissant que nous puissions découvrir les extensions devant être mises à jour après un rebuild de masse. Cela améliore l’expérience utilisateur Fedora en augmentant la probabilité qu’une extension fonctionne une fois installée.

Mise à jour de Intel Compute Runtime et matériel abandonné

Les paquets intel-compute-runtime et intel-igc ont été rebasés sur leurs dernières versions upstream, fournissant la prise en charge du dernier matériel Intel. Notez néanmoins que ces nouvelles versions abandonnent la prise en charge du calcul sur les GPU Intel dont la date de sortie est antérieure à 2020 (Gen 12 et antérieurs). Consultez ce fichier pour connaître les architectures abandonnées.

Ce changement n’affecte pas le pilote intel-media-driver inclus dans l’ensemble de paquets par défaut, qui continue pour l’instant à prendre en charge le matériel ancien sur les branches de développement principales.

Anciens JDK tiers

Dans Fedora 42, les directives provides et requires des paquets java et java-devel ont été ajustées de manière à déclarer obsolètes tous les JDK LTS, à l’exception du JDK système. En pratique, cela signifie que :

  • java-1.8.0-openjdk, java-11-openjdk et java-17-openjdk sont maintenant déconseillés dans Fedora 39, 40, and 41. Un message d’avertissement s’affichera lors de l’utilisation.

  • java-1.8.0-openjdk, java-11-openjdk et java-17-openjdk ont été retirés de Fedora 42.

Les personnes ayant besoin de ces paquets devraient utiliser le paquet adoptium-temurin-java-repository qui active le dépôt Adoptium Temurin. Cela vous permet alors d’installer les paquets suivants :

  • temurin-8-jdk

  • temurin-8-jre

  • temurin-11-jdk

  • temurin-11-jre

  • temurin-17-jdk

  • temurin-17-jre

  • temurin-21-jdk

  • temurin-21-jre

Le paquet adoptium-temurin-java-repository est disponible à partir de Fedora 39.

Pour obtenir des informations plus détaillées, consultez la page Change sur le wiki Fedora. Une liste des problèmes connus est disponible sur GitHub.

Setuptools 74

Fedora 42 met à jour le paquet python3-setuptools vers la version 74.

Notez que cette version n’est pas 100 % rétrocompatible. Entre autres changements, la version 72.0.0 a retiré la prise en charge de la commande setup.py test (déconseillée depuis il y a 5 ans). Il s’agit d’un changement majeur qui va casser la création des paquets Fedora utilisant cette commande. Ils devront être adaptés de manière à utiliser un autre exécuteur de tests tel que unittest, pytest, etc.

Consultez la documentation upstream pour plus d’informations sur cette version.

Mise à jour de NumPy vers la version 2

Le paquet NumPy a été mis à jour de la version 1.26 vers la version 2.2.4. La mise à jour de la bibliothèque fournit une grand nombre d’améliorations.

Consultez la documentation upstream pour obtenir une liste des changements ainsi qu’un guide de migration, et des conseils pour les auteur·rices de paquets downstream. Les développeur·ses ont aussi écrit un post de blog qui traite de certains changements haut niveau dans la version 2.x.

Django 5.1

La pile Django a été mise à jour vers la version 5.1 dans Fedora 42.

En reprenant l’approche utilisée pour packager l’interpréteur Python lui-même, Fedora passe à un RPM à source unique pour chaque version majeure de Django. Les paquets binaires de la version majeure fournie initialement avec une version de Fedora donnée n’auront pas de suffixe (ex. python3-django), tandis que toutes les versions ultérieures ou antérieures en auront un (e.g. python3-django5). Le suffixe des paquets (binaires ou de code source) ne comportera que la version majeure (soit python-django5 au lieu de python-django5.1).

Pour obtenir des informations à propos de la version 5.1, consultez les notes de version upstream.

Retrait de Python 3.8

Le paquet python3.8 sera retiré de Fedora Linux 42 et ne sera pas remplacé. Python 3.8 est en fin de vie depuis le 07/10/2024. Le flux Python 3.8 de RHEL 8 n’existe plus depuis mai 2023. Debian Buster contenait Python 3.7 et Bullseye contient Python 3.9. Ubuntu 20.04 LTS (Focal Fossa) contient Python 3.8, mais sa prise en charge standard se termine en avril 2025, date à laquelle Fedora 42 sortira. Python 3.8 a été conservé dans Fedora seulement pour permettre à ses utilisateur·rices d’exécuter les tests de leurs logiciels, mais puisque les autres distributions le retirent aussi, ce cas d’utilisation n’est plus suffisant pour justifier son maintien.

Notez que python3.6 demeurera disponible à moyen terme en raison de son utilisation par les développeur·ses ciblant RHEL 8.

Retrait de PyO3 v0.19, v0.20 et v0.21

Les paquets des versions obsolètes de PyO3 (v0.21, v0.20 et v0.19) et ses bindings Rust pour CPython et PyPy ont été retirés de Fedora. Tous les paquets Python contenant des extensions Python natives écrites en Rust sont maintenant compilées avec PyO3 v0.22 ou ultérieure, ce qui ajoute la prise en charge officielle de Python 3.13 et la prise en charge des interpréteurs Python à fils d’exécution libres (free-threaded).

python-pytest-runner est maintenant déconseillé

Le paquet python-pytest-runner (python3-pytest-runner) est déconseillé dans Fedora 42. Ce projet est déconseillé par l’upstream depuis 2019 et son dépôt upstream est archivé depuis 2023. Les paquets qui en dépendent sont encouragés à appeler directement pytest.

Pour effectuer la migration, suivez ces étapes :

  • Retirez pytest-runner des setup_requires, de préférence en supprimant directement l’option setup_requires.

  • Retirez pytest et tout autre dépendance de test de tests_require, de préférence en supprimant directement l’option setup_requires.

  • Consultez les directives Fedora relatives à la création de paquets pour apprendre à spécifier les dépendances de test.

  • Invoquez les tests avec pytest.

  • Une autre option intéressante est de configurer un fichier tox.ini à côté de votre setup.cfg. https://tox.readthedocs.io/en/latest/

Retrait de zbus v1

Les paquets de la version 1 de la crate zbus (et les paquets de la v2 de la crate zvariant) ont été retirés de Fedora 42. Les paquets qui en dépendent doivent être portés vers une version non obsolète de ces crates (c.-à-d. zbus v4 ou v5) ou être retirés.

Les paquets fournissant des bibliothèques Rust ne sont pas censées être installées sur les systèmes des utilisateur·rices finaux·les, et sont presque exclusivement installés dans les environnements de build éphémères (comme les chroots), donc ce changement ne devrait avoir aucun impact sur les utilisateur·rices finaux·les.

gtk3-rs est maintenant déconseillé

Les bindings Rust pour GTK3 sont obsolètes et leur maintenance est officiellement terminée. Les paquets associés ont été marqués comme déconseillés pour empêcher que de nouveaux paquets qui en dépendent ne soient ajoutés à Fedora, et seront retirés de la distribution dans une prochaine version.