Sortie de la bibliothèque système Glibc 2.36

Après six mois de développement, la version de la bibliothèque GNU C Library (glibc) 2.36 a été publiée, respectant pleinement les normes ISO C11 et POSIX.1-2017. Cette nouvelle version comprend des correctifs de 59 développeurs.

Parmi les améliorations apportées dans Glibc 2.36, on peut noter :

  • Ajout de la prise en charge d'un nouveau format de relocalisation relative DT_RELR, permettant de réduire la taille des relocalisations relatives dans les objets partagés et les fichiers exécutables, compilés en mode PIE (exécutables indépendants de la position). Pour utiliser le champ DT_RELR dans les fichiers ELF, la prise en charge de l'option « -z pack-relative-relocs » dans l'éditeur de liens, introduite dans la version 2.38 des binutils, est nécessaire.
  • Pour la plateforme Linux, des fonctions pidfd_open, pidfd_getfd et pidfd_send_signal ont été implémentées, offrant un accès à la fonctionnalité pidfd, qui aide à gérer les situations de réutilisation des PID pour une identification plus précise des processus interagissant avec des fichiers suivis (pidfd est lié à un processus spécifique et ne change pas, tandis que le PID peut être lié à un autre processus après la terminaison du processus actuel associé à ce PID).
  • Pour la plateforme Linux, la fonction process_madvise() a été ajoutée, permettant à un processus d'effectuer un appel système madvise() au nom d'un autre processus, en identifiant le processus cible à l'aide de pidfd. Grâce à madvise(), le noyau peut être informé des particularités de la gestion de la mémoire pour optimiser la gestion de la mémoire du processus ; par exemple, sur la base des informations transmises, le noyau peut initier la libération de mémoire libre supplémentaire. L'appel de madvise() par un autre processus peut être nécessaire lorsque les informations requises pour l'optimisation ne sont pas connues du processus actuel, mais sont coordonnées par un processus de gestion en arrière-plan distinct, qui peut initier lui-même le dégagement de mémoire inutilisée par les processus.
  • Pour la plateforme Linux, la fonction process_mrelease() a été ajoutée, permettant d'accélérer la libération de la mémoire des processus en cours d'exécution. Dans des conditions normales, la libération des ressources et la fin d'un processus ne se déroulent pas instantanément et peuvent être retardées pour diverses raisons, ce qui perturbe le fonctionnement des systèmes d'alerte précoce en cas de manque de mémoire dans l'espace utilisateur, tels que oomd (fournie dans systemd). Grâce à l'appel de process_mrelease, ces systèmes peuvent initier de manière plus prévisible le retour de la mémoire des processus terminés de force.
  • L'implémentation intégrée du résolveur DNS a été mise à jour pour inclure le support de l'option « no-aaaa », permettant de désactiver l'envoi de requêtes DNS pour les enregistrements AAAA (détermination de l'adresse IPv6 par le nom d'hôte) afin de simplifier le diagnostic des problèmes, y compris lors de l'exécution des fonctions NSS, telles que getaddrinfo(). Cette option n'affecte pas le traitement des liaisons d'adresses IPv6 définies dans /etc/hosts et les appels à getaddrinfo() avec le drapeau AI_PASSIVE.
  • Pour la plateforme Linux, les fonctions fsopen, fsmount, move_mount, fsconfig, fspick, open_tree et mount_setattr ont été ajoutées, fournissant un accès à une nouvelle API du noyau pour la gestion des montages de systèmes de fichiers en tenant compte des espaces de noms des points de montage (mount namespaces). Ces fonctionnalités proposées permettent de traiter séparément différentes étapes de montage (traiter le superbloc, obtenir des informations sur le FS, monter, attacher à un point de montage), qui étaient auparavant effectuées à l'aide de la fonction générale mount(). Les fonctions séparées offrent la possibilité d'exécuter des scénarios de montage plus complexes et de réaliser des opérations telles que le reclassement du superbloc, l'activation d'options, le changement de point de montage et le transfert vers un autre espace de noms. De plus, le traitement séparé permet de déterminer avec précision les raisons de l'émission de codes d'erreur et de spécifier plusieurs sources pour les systèmes de fichiers superposés (overlayfs).
  • La prise en charge du traitement des fichiers de définition des paramètres régionaux fournis en encodage UTF-8 au lieu de l'ASCII a été mise en œuvre dans localedef.
  • Des fonctions pour la conversion des encodages multi-octets mbrtoc8 et c8rtomb ont été ajoutées, conformes aux spécifications ISO C2X N2653 et C++20 P0482R6.
  • Le type char8_t, défini dans le projet de norme ISO C2X N2653, a été ajouté.
  • Ajout des fonctions arc4random, arc4random_buf et arc4random_uniform, offrant des liaisons avec l'appel système getrandom et l'interface /dev/urandom, retournant des nombres pseudo-aléatoires de haute qualité.
  • Sur la plateforme Linux, la prise en charge de l'architecture d'ensemble d'instructions LoongArch a été mise en œuvre, utilisée dans les processeurs Loongson 3 5000 et implémentant un nouvel ISA RISC, similaire à MIPS et RISC-V. À l'état actuel, seule la prise en charge de la version 64 bits de LoongArch (LA64) est disponible. Il faut au moins les versions binutils 2.38, GCC 12 et le noyau Linux 5.19.
  • Le mécanisme prelink a été déclaré obsolète et sera supprimé dans la prochaine version, ainsi que les variables d'environnement associées LD_TRACE_PRELINKING et LD_USE_LOAD_BIAS et les fonctionnalités de l'éditeur de liens.
  • Le code pour vérifier la version du noyau Linux et traiter la variable d'environnement LD_ASSUME_KERNEL a été supprimé. La version minimale prise en charge lors de la compilation de Glibc est déterminée par le champ ELF NT_GNU_ABI_TAG.
  • Sur la plateforme Linux, la prise en charge de la variable d'environnement LD_LIBRARY_VERSION a été arrêtée.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster