C-Bibliothek: Release 2.32 der GNU C Library unterstützt Unicode 13

Die GNU C Library (glibc) erhält neue Textfunktionen, unterstützt ARC-HS-Kerne von Synopsys und warnt im Zusammenspiel mit GCC 10 vor Speicherfehlern.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Programmiersprache C: Release 2.32 der GNU C Library unterstützt Unicode 13

(Bild: Blackboard/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Die GNU C Library (glibc) ist in Version 2.32 erschienen. Für die Programmiersprache C in Systemen mit Linux im Kernel (wie zum Beispiel GNU/Linux-Systeme) gilt sie als eine der wichtigsten Bibliotheken. Das neue Release unterstützt unter anderem Unicode 13.0 und die unter Linux laufenden neuen DesignWare-Prozessoren der ARC-HS-Familie von Synopsys (ARCv2 ISA), die für Hochleistungs-Prozesse in eingebetteter (kommerzieller oder quelloffener) Gerätesoftware konzipiert sind.

Drei neue ABIs (Application Binary Interfaces) unterstützt glibc 2.32 in diesem Bereich: arc-linux-gnu, arc-linux-gnuhf und arceb-linu-gnu. Neu in der GNU Library C ist eine kurdische Sprachversion (das im Irak gesprochene Kurdisch/Sorani), ckb_IQ.

Im Zusammenspiel mit GCC 10 empfohlen nutzen zahlreiche APIs nun das Attribut access, das vor unsicherem oder ungültigem Zugriff warnt. Damit sollte der Compiler für glibc 2.32 bessere Warnungen vor Pufferüberlauf oder Laufzeitfehlern wie Array Access out of Bounds geben.

Das Release unterstützt für AArch64 (die neue 64-bit-Instruction-Set-Architektur ISA von ARM) nun den Schutz des Standard-Branches durch "Sicherheitsverhärtung" (Security Hardening) in der glibc, wenn diese den Compiler GCC verwendet und der Compiler folgendermaßen konfiguriert ist: --enable-standard-branch-protection. Flankierend dazu enthält das Release auch eine neue ARM Branch Target Identification (BTI) und eine Authentifizierung des Pointers (Pointer Authentication for Return Addresses, PAC-RET). Vertiefende Informationen zu diesem Thema und seinen Sicherheitsaspekten lassen sich den Release Notes entnehmen.

Die GNU Library C stellt nun die Header-Datei <sys/single_threaded.h> bereit, die Variable zu __libc_single_threaded erklärt. Das glibc-Team empfiehlt in seiner Mailingliste, für die Single-Thread-Optimierung von Anwendungen diese Variable einzusetzen, statt weiterhin Bezüge zu den veralteten Symbolen zu setzen, die in libpthread definiert sind. Für Linux-Nutzer sind zwei Funktionen neu hinzugekommen, die es Anwendungen ermöglichen, die Signalmaske eines Threads selbst anzugeben: pthread_attr_setsigmask_np und pthread_attr_getsigmask_np. Diese Möglichkeit lässt sich für Threads anwenden, die man mit pthread_create angelegt hatte.

Zahlreiche weitere Änderungen sind in das Release eingeflossen, so gibt es Neuerungen im Bereich der Audit-Module, der Signalabkürzung und weitere Funktionen fanden Eingang in Version 2.32. Eine Reihe von Problemen hat das glibc-Team behoben, und zahlreiche Features von Vorgängerversionen gelten nun als veraltet oder wurden entfernt, andere Veränderungen betreffen die Abwärtskompatibilität. Die beiden Konfigurationsoptionen --enable-obsolete-rpc und --enable-obsolete-nsl zum Beispiel entfallen, die als deprecated gekennzeichnete Header-Datei <sys/sysctl.h> und die sysctl-Funktion hat das glibc-Team nun entfernt.

Nicht ins neue Release geschafft hat es der Support für Restartable Sequences (RSEQ), den das Team der GNU C Library Mitte Juli 2020 eingestellt hat. Die RSEQ hatten mit Linux 4.18 Einzug in den Kernel gehalten und sollten die Performance verbessern. Das bei zahlreichen Nutzern beliebte Feature entfällt offenbar (vorerst?) aufgrund von Design-Veränderungen.

Weitere Details lassen sich der Release-Ankündigung entnehmen, die ein Red-Hat-Mitarbeiter via Mailingliste "libc-alpha" versandt hat. Die Vorgängerversion 2.31 ist im Februar 2020 erschienen und hatte die Unterstützung der experimentellen (und noch unvollständigen) C2X-Standards eingeläutet.

(sih)