Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.4.7

Keith Packard, aktiver Debian-Entwickler, Leiter des X.Org-Projekts und Schöpfer vieler X-Erweiterungen, darunter XRender, XComposite und XRandR, опубликовал Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.4.7, entwickelt für den Einsatz auf eingebetteten Geräten mit begrenztem permanenten Speicher und RAM. Während der Entwicklung wurde ein Teil des Codes aus der Bibliothek ausgeliehen neulib aus dem Cygwin-Projekt und AVR-Libc, entwickelt für Atmel AVR-Mikrocontroller. PicoLibc-Code vertrieben von unter BSD-Lizenz. Die Bibliotheksassemblierung wird für ARM- (32-Bit), i386-, RISC-V-, x86_64- und PowerPC-Architekturen unterstützt.

Ursprünglich wurde das Projekt unter dem Namen „newlib-nano“ entwickelt und zielte darauf ab, einige der ressourcenintensiven Funktionen von Newlib zu überarbeiten, deren Verwendung auf eingebetteten Geräten mit wenig RAM problematisch war. Beispielsweise wurden die stdio-Funktionen durch eine kompakte Version aus der avrlibc-Bibliothek ersetzt. Der Code wurde außerdem von nicht BSD-lizenzierten Komponenten bereinigt, die im eingebetteten Build nicht verwendet werden. Eine vereinfachte Version des Initialisierungscodes (crt0) wurde hinzugefügt und die Implementierung lokaler Threads wurde von „struct _reent“ in den TLS-Mechanismus verschoben (Thread-lokaler Speicher). Für den Zusammenbau wird das Meson-Toolkit verwendet.

In der neuen Version:

  • Es wurde die Möglichkeit hinzugefügt, mit zu bauen mathematisch verifiziert Compiler CompCert.
  • Unterstützung für den Clang-Compiler hinzugefügt.
  • Das Verhalten der Funktion „Gamma“ wurde an das Verhalten von Glibc angepasst.
  • Die Nano-Malloc-Implementierung stellt sicher, dass zurückgegebener Speicher gelöscht wird.
  • Verbesserte Leistung von Nano-Realloc, insbesondere beim Zusammenführen freier Blöcke und beim Erweitern der Heap-Größe.
  • Eine Reihe von Tests hinzugefügt, um den korrekten Betrieb von malloc zu überprüfen.
  • Verbesserte Unterstützung für die Windows-Plattform und die Möglichkeit zum Erstellen mit dem Mingw-Toolkit hinzugefügt.
  • Auf ARM-Systemen ist das TLS-Hardwareregister (Thread-Local Storage) aktiviert, sofern verfügbar.

Source: opennet.ru