Login
Newsletter
Werbung

Fr, 2. August 2019, 11:44

Software::Entwicklung

glibc 2.30 freigegeben

Die glibc-Entwickler haben Version 2.30 der C-Laufzeitbibliothek veröffentlicht. Die neue Version enthält einige neue Funktionen und Systemaufrufe, Verbesserungen und Korrekturen.

Mirko Lindner

glibc ist die Laufzeitbibliothek für Programme, die in der Programmiersprache C geschrieben sind. Da auch C++ davon Gebrauch macht und viele Compiler und Interpreter für andere Sprachen selbst in C geschrieben sind, hängt letztlich ein Großteil der unter Linux laufenden Software von glibc ab. Die Bibliothek hat als Hauptziele Portabilität und hohe Geschwindigkeit. Da sie außerdem allen relevanten Standards wie ISO C11 und POSIX.1-2008 folgt, ist sie recht umfangreich und bietet mehr Funktionen als alternative Implementierungen. Sie bietet zudem eine umfassende Unterstützung für Internationalisierung, die über die in den alternativen Bibliotheken vorhandene hinausgeht.

Version 2.30 von glibc enthält laut der Ankündigung von Carlos O'Donell eine Reihe von neuen Funktionen und Optimierungen. Die Unicode-Unterstützung wurde auf den Stand von Unicode 12.1.0 gebracht. Neu beim dynamischen Linken ist die Option --preload, um DLLs bereits beim Programmstart zu laden. Dieselbe Funktion ließ sich zuvor nur mit der Umgebungsvariablen LD_PRELOAD erreichen. Eine weitere Änderung des dynamischen Linkers ist, dass er keine Objekte mehr lädt, die versionierte Symbole referenzieren, deren Implementierung in eine DLL mit anderem Namen verschoben wurde.

Neue Funktionen der glibc sind twalk_r, getdents64, gettid und tgkill. Die drei letzteren sind Systemaufrufe und nur unter Linux verfügbar. Geändert wurden die Speicherallokationsfunktionen malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign und posix_memalign. Diese liefern nun einen Fehler, wenn die zu allokierende Größe PTRDIFF_MAX übersteigt. Damit wird Problemen bei der Subtraktion von Zeigerwerten vorgebeugt (Subtraktion von Zeigern ist erlaubt und kann z.B. verwendet werden, um Array-Indexe zu ermitteln).

Weitere neue Funktionen sind die von POSIX vorgeschlagenen, aber noch nicht endgültigen pthread_cond_clockwait, pthread_mutex_clocklock, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock und sem_clockwait. Auf der 64 Bit ARM-Architektur wurde die Schnittstelle für den GNU IFUNC-Resolver geändert. Es kam ein optionales zweites Argument hinzu, so dass alte Resolver weiterhin funktionieren.

Die Unterstützung für Kalender wurde auf Minguo erweitert, den in Taiwan verwendeten Kalender. Dies betrifft nur die taiwanesischen Lokalisierungen. Für Japanisch wurde dem Kalender die neu begonnene Ära hinzugefügt.

Darüber hinaus wurden in der neuen Version auch eine Reihe von Fehlern korrigiert. Einige davon bedingen Verhaltensänderungen, die eine Neucompilierung von Software nötig machen können. Zu beachten ist noch, dass der Linux-spezifische Header sys/sysctl.h und die Funktion sysctl nicht mehr verwendet werden sollen, da geplant ist, sie irgendwann zu entfernen. Anwendungen sollen stattdessen direkt auf /proc zugeifen. Zum Compilieren von glibc 2.30 wird GCC ab Version 6.2 benötigt, über die minimale Kernel-Version unter Linux liegen keine Angaben vor. Sicher ist, dass Kernels vor Version 3.2 nicht unterstützt werden.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung