Login
Newsletter
Werbung

Di, 13. August 2013, 15:50

Software::Entwicklung

glibc 2.18 mit TSX-Unterstützung

Die glibc-Entwickler haben Version 2.18 der C-Laufzeitbibliothek mit zahlreichen Korrekturen und Optimierungen veröffentlicht.

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 ihr Umfang wesentlich größer als der von alternativen Implementierungen. Sie bietet zudem eine umfassende Unterstützung für Internationalisierung, die über die meisten alternativen Bibliotheken hinausgeht.

Version 2.18 von glibc enthält laut der Ankündigung von David Miller zahlreiche Korrekturen, Änderungen und Erweiterungen. Eine große Zahl von Entwicklern war an der Erstellung der neuen Version beteiligt, die genau ein halbes Jahr nach Version 2.17 fertiggestellt wurde.

glibc 2.18 wurde auf die POWER8-Plattform von IBM sowie die MicroBlaze-Architektur von Xilinx portiert. In der 64-Bit-ARM-Architektur (AArch64) und in der 32-bittigen ARM-Variante wurden die String-Funktionen optimiert. Die mathematischen Funktionen der Bibliothek libm wurden ebenfalls beschleunigt. Auf der ARM-Architektur kann ein größerer Teil als kompakterer Thumb-2-Code compiliert werden, auf der MIPS-Architektur ein großerer Teil als MIPS16.

Unter Linux verwendet die Funktion clock jetzt den Systemaufruf clock_gettime , der eine höhere Zeitauflösung besitzt. Die wahrscheinlich wichtigste Änderung für 32- und 64-Bit x86-Systeme ist jedoch die Unterstützung für TSX lock elision für pthread-Mutexe. In Programmen mit mehreren Threads müssen Daten vor der gleichzeitigen Änderung durch mehrere Threads geschützt werden, was häufig Mutexe erfordert. Dies kann zu Wartezeiten führen, die umso häufiger und länger werden, je mehr Threads vorhanden sind. Transaktionaler Speicher könnte das Problem lösen, ist jedoch zu langsam, wenn er in Software implementiert wird. Doch die neuesten Prozessoren von Intel (Haswell) unterstützen das in Hardware unter der Bezeichnung TSX. glibc 2.18 beherrscht nun die entsprechenden Befehle.

Zu den weiteren Neuerungen zählen der Aufruf von C++11 Thread-lokalen Objekt-Destruktoren, ein Benchmark-Framework, um die Geschwindigkeit von Funktionen in glibc zu messen, Unterstützung für Mutexe mit Priority-Inheritance auf den Nicht-x86-Architekturen, das neue Makro issignaling, das auf dem Entwurf TS 18661 beruht, die Funktionen pthread_getattr_default_np und pthread_setattr_default_np und Unterstützung für AT_HWCAP2, das ab Linux 3.10 verfügbar ist.

glibc 2.18 setzt unter Linux eine Kernel-Version 2.6.16 oder neuer voraus und kann von den GNU-Spiegelservern heruntergeladen werden.

Werbung
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung