Version de la bibliothèque système Glibc 2.36

Après six mois de développement, la bibliothèque système GNU C Library (glibc) 2.36 a été publiée, qui est entièrement conforme aux exigences des normes ISO C11 et POSIX.1-2017. La nouvelle version comprend des correctifs de 59 développeurs.

Certaines des améliorations implémentées dans la Glibc 2.36 incluent :

  • Ajout de la prise en charge du nouveau format de relocalisation d'adresse DT_RELR (relative relocation), qui permet de réduire la taille des relocalisations relatives dans les objets partagés et les fichiers exécutables liés en mode PIE (Position-independent executables). L'utilisation du champ DT_RELR dans les fichiers ELF nécessite la prise en charge de l'option "-z pack-relative-relocs" dans l'éditeur de liens, introduite dans la version de binutils 2.38.
  • Pour la plate-forme Linux, les fonctions pidfd_open, pidfd_getfd et pidfd_send_signal sont implémentées, donnant accès à la fonctionnalité pidfd qui aide à gérer les situations de réutilisation du PID pour identifier plus précisément les processus accédant aux fichiers surveillés (pidfd est associé à un processus spécifique et ne change pas, tandis que le PID peut être attaché à un autre processus après la fin du processus actuel associé à ce PID).
  • Pour la plateforme Linux, la fonction process_madvise() a été ajoutée pour permettre à un processus d'émettre l'appel système madvise() au nom d'un autre processus, identifiant le processus cible à l'aide de pidfd. Grâce à madvise(), vous pouvez informer le noyau sur les fonctionnalités de travail avec la mémoire pour optimiser la gestion de la mémoire des processus ; par exemple, sur la base des informations transmises, le noyau peut lancer la libération de mémoire libre supplémentaire. Un appel à madvise() par un autre processus peut être requis dans une situation où les informations nécessaires à l'optimisation sont inconnues du processus actuel, mais sont coordonnées par un processus de contrôle en arrière-plan distinct, qui peut initier indépendamment la suppression de la mémoire inutilisée des processus.
  • Pour la plateforme Linux, la fonction process_mrelease() a été ajoutée, ce qui permet d'accélérer la libération de mémoire pour un processus terminant son exécution. Dans des circonstances normales, la libération des ressources et l'arrêt du processus ne sont pas instantanés et peuvent être retardés pour diverses raisons, interférant avec les systèmes de réponse précoce de la mémoire de l'espace utilisateur tels que oomd (fourni par systemd). En appelant process_mrelease, ces systèmes peuvent déclencher de manière plus prévisible la récupération de mémoire à partir de processus forcés.
  • La prise en charge de l'option « no-aaaa » a été ajoutée à l'implémentation intégrée du résolveur DNS, qui permet de désactiver l'envoi de requêtes DNS pour les enregistrements AAAA (détermination d'une adresse IPv6 par nom d'hôte), y compris lors de l'exécution de NSS. des fonctions comme getaddrinfo(), pour simplifier le diagnostic des problèmes. Cette option n'affecte pas le traitement des liaisons d'adresses IPv6 définies dans /etc/hosts et les appels à getaddrinfo() avec l'indicateur AI_PASSIVE.
  • Pour la plate-forme Linux, les fonctions fsopen, fsmount, move_mount, fsconfig, fspick, open_tree et mount_setattr ont été ajoutées, donnant accès à une nouvelle API du noyau pour gérer le montage du système de fichiers en fonction des espaces de noms de montage. Les fonctions proposées permettent de traiter séparément différentes étapes de montage (traiter le superbloc, obtenir des informations sur le système de fichiers, monter, attacher au point de montage), qui étaient auparavant effectuées à l'aide de la fonction commune mount(). Des fonctions distinctes offrent la possibilité d'effectuer des scénarios de montage plus complexes et d'effectuer séparément des opérations telles que la reconfiguration du superbloc, l'activation d'options, la modification du point de montage et le déplacement vers un autre espace de noms. De plus, un traitement séparé vous permet de déterminer avec précision les raisons de l'apparition de codes d'erreur et de définir plusieurs sources pour les systèmes de fichiers multicouches, tels que les overlayfs.
  • localedef prend en charge le traitement des fichiers de définition de paramètres régionaux fournis en codage UTF-8 au lieu d'ASCII.
  • Ajout de fonctions pour convertir les encodages mbrtoc8 et c8rtomb multi-octets aux spécifications ISO C2X N2653 et C++20 P0482R6.
  • Ajout de la prise en charge du type char8_t défini dans le projet de norme ISO C2X N2653.
  • Ajout des fonctions arc4random, arc4random_buf et arc4random_uniform qui fournissent des wrappers sur l'appel système getrandom et l'interface /dev/urandom qui renvoient des nombres pseudo-aléatoires de haute qualité.
  • Lorsqu'il est exécuté sur la plate-forme Linux, il prend en charge l'architecture de jeu d'instructions LoongArch utilisée dans les processeurs Loongson 3 5000 et implémente le nouveau RISC ISA, similaire à MIPS et RISC-V. Dans sa forme actuelle, seule la prise en charge de la version 64 bits de LoongArch (LA64) est disponible. Pour fonctionner, vous avez besoin d'au moins les versions de binutils 2.38, GCC 12 et du noyau Linux 5.19.
  • Le mécanisme de pré-liaison, ainsi que ses variables d'environnement LD_TRACE_PRELINKING et LD_USE_LOAD_BIAS associées et ses capacités d'éditeur de liens, sont obsolètes et seront supprimés dans une prochaine version.
  • Suppression du code pour vérifier la version du noyau Linux et gérer la variable d'environnement LD_ASSUME_KERNEL. La version minimale du noyau prise en charge lors de la construction de la Glibc est déterminée via le champ ELF NT_GNU_ABI_TAG.
  • La variable d'environnement LD_LIBRARY_VERSION a été abandonnée sur la plateforme Linux.

Source: opennet.ru

Ajouter un commentaire