Login
Newsletter
Werbung

Mo, 6. Februar 2017, 13:22

Software::Entwicklung

glibc 2.25 freigegeben

Die glibc-Entwickler haben Version 2.25 der C-Laufzeitbibliothek veröffentlicht. In diese Version wurden zahlreiche neue Standardfunktionen aufgenommen und auch eine Funktion zur Nutzung des Systemaufrufs getrandom.

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 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.25 von glibc enthält laut der Ankündigung von Siddhesh Poyarekar zahlreiche neue Definitionen und Funktionen. Einige neue Makros wurden aufgenommen, mit denen man abfragen kann, ob die Bibliothek über bestimmte Funktionalität verfügt. Neu sind auch einige Funktionen und Makros für Gleitkomma-Operationsmodi und Ausnahmebehandlung, die über die Headerdatei fenv.h verfügbar sind.

In der Headerdatei limits.h findet man nun Makros, die die Größe zahlreicher Datentypen angeben. Auch die mathematischen Funktionen in math.h wurden stark erweitert. So gibt es nun Funktionen wie roundeven, um auf die nächstgelegene (je nach Definition) Ganzzahl zu runden, neue Makros zum Vergleichen oder zur Klassifikation wie iscanonical, neue Makros und Funktionen, die sich mit ungültigen Gleitkommawerten (NaN - not a number) befassen, wie getpayload und setpayload, und einiges mehr.

Wie viele andere Neuerungen stammen auch die Funktionen strfromd, strfromf und strfroml, die zur Konvertierung einer Gleitkommazahl in einem String dienen, aus dem Standard ISO/IEC TS 18661-1:2014. Ein wichtiger Fortschritt ist, dass glibc jetzt größtenteils mit Stack-Überlaufschutz compiliert werden kann. Ebenso wichtig für die Sicherheit ist die von OpenBSD stammende Funktion explicit_bzero. Sie dient als Ersatz für memset, wenn sicherzustellen ist, dass ein Speicherbereich auch wirklich mit Nullen überschrieben wird. memset kann nämlich vom Compiler wegoptimiert werden, wenn dieser keinen nachfolgenden Zugriff auf den Speicherbereich erkennt, was entgegen der Absicht des Programmierers ist.

Neu sind auch die Funktionen getentropy und getrandom zusammen mit der Headerdatei sys/random.h. Diese Funktionen sind damit mehr als zwei Jahre nach der Bereitstellung von getrandom in Linux 3.17 im Frühherbst 2014 und zweieinhalb Jahre nach dem ursprünglichen Vorschlag von Theodore Ts'o endlich verfügbar. Warum es so lange gedauert hat, erläutert ein Artikel auf LWN. Der Hauptgrund war wohl, dass sich zunächst niemand um die Implementation kümmerte, und nachdem viel Zeit vergangen war, eine Implementation vorgelegt wurde, die überaus komplex war. Nach einiger Diskussion wurde die Implementation auf das absolute Minimum reduziert und im Dezember 2016 in glibc aufgenommen.

Die Puffergröße für Byte-orientierte stdio-Ströme wurde auf 8192 Bytes begrenzt. Die Standard-Puffergröße unter Linux beträgt meistens 4096 Bytes und ändert sich damit nicht. Auf Netzwerk-Dateisystemen jedoch war die Größe bisher nicht vorhersehbar und konnte auf mehrere Megabytes anwachsen. Dies wird in der neuen Version verhindert.

glibc 2.25 scheint keine Änderung an der vorausgesetzten Linux-Kernel-Version zu vollziehen. Daher setzt die neue Version einen Kernel ab 3.2 voraus, auf manchen Architekturen allerdings einen neueren. Nur auf der x86-Architektur (32 und 64 Bit) genügt die alte Version 2.6.32 noch als Minimum.

Darüber hinaus wurden einige weitere Funktionen implementiert, einige veraltete entfernt und eine Reihe von Fehlern korrigiert. Eine komplette Auflistung der Änderungen bietet die Ankündigung, Einzelheiten findet man im auf Bugzilla beruhenden Bugtracking-System für glibc.

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