Veröffentlichung der Systembibliothek Glibc 2.36

Nach sechsmonatiger Entwicklung wurde die Veröffentlichung der GNU C Library (glibc) 2.36 bekannt gegeben, die vollständig den Anforderungen der Standards ISO C11 und POSIX.1-2017 entspricht. Die neue Version enthält Korrekturen von 59 Entwicklern.

Einige der Verbesserungen in Glibc 2.36 sind:

  • Unterstützung eines neuen Formats für relative Adressverschiebungsdaten DT_RELR (relative relocation) wurde hinzugefügt, das die Größe der relativen Verschiebungen in gemeinsam genutzten Objekten und ausführbaren Dateien, die im PIE-Modus (Position-independent executables) erstellt wurden, reduziert. Für die Verwendung des DT_RELR-Feldes in ELF-Dateien ist die Unterstützung der Option „-z pack-relative-relocs“ im Linker erforderlich, die mit der Veröffentlichung der Binutils-Version 2.38 eingeführt wurde.
  • Für die Linux-Plattform wurden die Funktionen pidfd_open, pidfd_getfd und pidfd_send_signal implementiert. Diese bieten Zugriff auf die pidfd-Funktionalität, die dabei hilft, Situationen mit der Wiederverwendung von PIDs zu bewältigen, um Prozesse genauer zu identifizieren, die auf überwachte Dateien zugreifen. Ein pidfd ist mit einem bestimmten Prozess verknüpft und bleibt unverändert, während die PID nach dem Abschluss des aktuellen Prozesses einem anderen Prozess zugeordnet werden kann.
  • Für die Linux-Plattform wurde die Funktion process_madvise() hinzugefügt, die es einem Prozess ermöglicht, den Systemaufruf madvise() im Namen eines anderen Prozesses auszuführen, wobei der Zielprozess über pidfd identifiziert wird. Über madvise() kann der Kernel über spezifische Speichernutzungsweisen informiert werden, um das Speichermanagement des Prozesses zu optimieren. Basierend auf den übermittelten Informationen kann der Kernel beispielsweise die Freigabe zusätzlicher freier Speicherkapazität initiieren. Ein Aufruf von madvise() durch einen anderen Prozess kann erforderlich sein, wenn die für die Optimierung benötigten Informationen dem aktuellen Prozess nicht bekannt sind und durch einen separaten Hintergrundverwaltungsprozess koordiniert werden, der eigenständig die Rücknahme ungenutzter Speicherressourcen bei den Prozessen anstoßen kann.
  • Für die Linux-Plattform wurde die Funktion process_mrelease() hinzugefügt, die eine schnellere Freigabe des Speichers für Prozesse, die ihre Ausführung beenden, ermöglicht. Normalerweise erfolgt die Freigabe von Ressourcen und der Abschluss eines Prozesses nicht sofort und kann aus verschiedenen Gründen verzögert werden, was die Funktion von im Benutzerraum arbeitenden Systemen zur frühzeitigen Reaktion auf Speicherengpässe, wie zum Beispiel oomd (bereitgestellt in systemd), behindert. Durch den Aufruf von process_mrelease können solche Systeme früher und vorhersagbar den Speicher von zwangsweise beendeten Prozessen zurückgewinnen.
  • Die integrierte Implementierung des DNS-Resolvers unterstützt nun die Option „no-aaaa“, die es ermöglicht, zum Zwecke der Fehlersuche die Anforderung von DNS-Anfragen für AAAA-Einträge (IPv6-Adresse anhand des Hostnamens) zu deaktivieren, einschließlich bei der Ausführung von NSS-Funktionen wie getaddrinfo(). Diese Option beeinflusst nicht die Verarbeitung von IPv6-Adressbindungen, die in /etc/hosts definiert sind, und den Aufruf von getaddrinfo() mit dem Flag AI_PASSIVE.
  • Für die Linux-Plattform wurden die Funktionen fsopen, fsmount, move_mount, fsconfig, fspick, open_tree und mount_setattr hinzugefügt, die Zugang zur neuen Kernel-API für die Verwaltung von Dateisystem-Mounts unter Berücksichtigung von Mount-Namensräumen (mount namespaces) bieten. Die vorgeschlagenen Funktionen ermöglichen eine separate Verarbeitung verschiedener Phasen des Mounts (Superblock verarbeiten, Informationen über das Dateisystem abrufen, mounten, an einen Mount-Punkt anhängen), die zuvor durch die allgemeine Funktion mount() durchgeführt wurden. Die separaten Funktionen erlauben das Ausführen komplexerer Mount-Szenarien und das eigenständige Durchführen von Operationen wie die Neukonfiguration des Superblocks, das Aktivieren von Optionen, das Ändern des Mount-Punkts und das Verschieben in einen anderen Namensraum. Darüber hinaus ermöglicht die separate Verarbeitung eine präzise Bestimmung der Ursachen für Fehlercodes und das Festlegen mehrerer Quellen für schichtgebundene Dateisysteme, wie overlayfs.
  • In localedef wurde die Unterstützung für die Verarbeitung von Dateien mit Locale-Definitionen implementiert, die in UTF-8-Kodierung anstelle von ASCII bereitgestellt werden.
  • Es wurden Funktionen zur Umwandlung von mehrbytecodierten Zeichen mbrtoc8 und c8rtomb hinzugefügt, die den Spezifikationen ISO C2X N2653 und C++20 P0482R6 entsprechen.
  • Unterstützung für den Typ char8_t, der im Entwurf des Standards ISO C2X N2653 definiert ist, wurde hinzugefügt.
  • Die Funktionen arc4random, arc4random_buf und arc4random_uniform wurden hinzugefügt und bieten Wrapper für den Systemaufruf getrandom sowie das Interface /dev/urandom, die hochwertige Pseudozufallszahlen zurückgeben.
  • Unter Linux wurde Unterstützung für die LoongArch-Befehlssatzarchitektur umgesetzt, die in Loongson 3 5000-Prozessoren verwendet wird und eine neue RISC-ISA implementiert, die MIPS und RISC-V ähnelt. Momentan steht nur die Unterstützung der 64-Bit-Version von LoongArch (LA64) zur Verfügung. Mindestens die Versionen binutils 2.38, GCC 12 und Linux-Kernel 5.19 sind erforderlich.
  • Das prelink-System wird als veraltet erklärt und in der nächsten Veröffentlichung entfernt, ebenso wie die damit verbundenen Umgebungsvariablen LD_TRACE_PRELINKING und LD_USE_LOAD_BIAS sowie die Funktionen des Linkers.
  • Der Code zur Überprüfung der Linux-Kernel-Version und zur Verarbeitung der Umgebungsvariable LD_ASSUME_KERNEL wurde entfernt. Die minimal unterstützte Kernel-Version beim Bauen von Glibc wird durch das ELF-Feld NT_GNU_ABI_TAG definiert.
  • Die Unterstützung der Umgebungsvariable LD_LIBRARY_VERSION auf der Linux-Plattform wurde eingestellt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster