Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.4.7

Keith Packard, aktiver Entwickler von Debian, Projektleiter von X.Org und Schöpfer vieler X-Erweiterungen, einschließlich XRender, XComposite und XRandR, veröffentlichte Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.4.7, die für die Verwendung in eingebetteten Geräten mit begrenztem Speicherplatz und RAM entwickelt wird. Bei der Entwicklung wurde ein Teil des Codes aus der Bibliothek newlib des Cygwin-Projekts und AVR Libc, die für Atmel AVR-Mikrocontroller entwickelt wurde. Der PicoLibc-Code wird verbreitet steht unter der BSD-Lizenz. Es wird eine Bibliotheksversion für die Architekturen ARM (32-Bit), i386, RISC-V, x86_64 und PowerPC unterstützt.

Ursprünglich wurde das Projekt unter dem Namen „newlib-nano“ entwickelt und hatte zum Ziel, einige ressourcenintensive Funktionen von Newlib zu überarbeiten, die auf eingebetteten Geräten mit wenig RAM problematisch waren. Zum Beispiel wurden die stdio-Funktionen durch eine kompakte Version aus der Bibliothek avrlibc ersetzt. Der Code wurde ebenfalls von nicht verwendeten Komponenten, die nicht unter der BSD-Lizenz stehen, bereinigt, die in der Version für eingebettete Geräte nicht benötigt wurden. Es wurde eine vereinfachte Initialisierungsroutine (crt0) hinzugefügt, und die Implementierung der lokalen Threads wurde von 'struct _reent' auf den TLS-Mechanismus (thread-local storage) umgestellt. Für den Build wird das Meson-Toolchain verwendet.

In der neuen Version:

  • Die Möglichkeit des Builds mit dem mathematisch verifizierten Compiler CompCert.
  • wurde hinzugefügt. Unterstützung für den Clang-Compiler wurde implementiert.
  • Das Verhalten der Funktion „gamma“ wurde an das Verhalten von Glibc angepasst.
  • In der Implementierung von nano-malloc wird eine obligatorische Bereinigung des zurückgegebenen Speichers sichergestellt.
  • Die Leistung von nano-realloc wurde verbessert, insbesondere bei der Durchführung von Fusionen freier Blöcke und der Erweiterung der Heap-Größe.
  • Ein Satz von Tests wurde hinzugefügt, um die Korrektheit der malloc-Funktion zu überprüfen.
  • Die Unterstützung der Windows-Plattform wurde verbessert, und es wurde die Möglichkeit hinzugefügt, mit dem Toolchain mingw zu kompilieren.
  • Auf ARM-Systemen wird, sofern verfügbar, das Hardwareregister für TLS (Thread-Local Storage) genutzt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4