Chapitre 17. Compilateurs et outils de développement
Ce chapitre répertorie les changements les plus notables apportés aux compilateurs et aux outils de développement entre RHEL 8 et RHEL 9.
17.1. Changements notables glibc
Toutes les API de threading sont désormais fusionnées dans libc.so.6
Dans RHEL 8, la bibliothèque de threading du système, libpthread.so
, était une bibliothèque distincte. Dans RHEL 9, toutes les API de threading ont été fusionnées dans la bibliothèque C principale libc.so.6
. L'intégration du threading dans la bibliothèque C principale permet à cette dernière de prendre en charge les threads par défaut. Avec un seul fichier, le processus de mise à niveau en place est également plus fluide puisque les API de threads et les API Core C, POSIX et BSD sont toutes mises à jour en même temps (il n'y a pas de bibliothèques distinctes).
Les développeurs peuvent continuer à utiliser l'option -lpthread
lorsqu'ils lient des applications threadées, mais ce n'est plus nécessaire.
Historiquement, les bibliothèques utilisaient une référence faible à pthread_create
ou pthread_cancel
pour détecter si les processus pouvaient être multithreadés. Étant donné que cette vérification réussit toujours, parce que libpthread.so
se trouve maintenant dans la bibliothèque C principale, les bibliothèques devraient utiliser le symbole __libc_single_threaded
à la place.
La bibliothèque libdl
est désormais fusionnée avec libc.so.6
Dans RHEL 8, la bibliothèque libdl
était une bibliothèque distincte. Dans RHEL 9, la bibliothèque libdl
a été fusionnée avec la bibliothèque C principale libc.so.6
. Cela signifie qu'il est désormais beaucoup plus difficile d'interposer la fonction dlsym
. Les applications qui doivent contrôler la manière dont la résolution des symboles fonctionne doivent passer aux interfaces de l'auditeur (LD_AUDIT
).
Service de noms Les plugins de service de changement de nom pour dns
et files
ont été fusionnés en libc.so.6
Dans RHEL 8, les services Name Service Switch (NSS) pour files
et dns
, qui fournissent des données aux API de gestion des identités des utilisateurs et des groupes, constituaient un plugin distinct. Dans RHEL 9, les plugins ont été fusionnés dans la bibliothèque C principale libc.so.6.
Le déplacement des fournisseurs de services files
et dns
garantit que les applications qui doivent franchir la limite d'un espace de noms mount (par exemple, entrer dans un conteneur) peuvent le faire en sachant que les services d'accès NSS files
et dns
sont toujours chargés au démarrage du processus.
Lors de l'appel d'API d'utilisateurs et de groupes, lorsque ces API dépendent d'un site nsswitch.conf
qui fait référence à files
ou dns
, les développeurs peuvent s'attendre à ce que ces services soient toujours présents et fournissent les données du service sous-jacent.