Keith Packard, aktiver Entwickler von Debian, Projektleiter von X.Org und Schöpfer vieler X-Erweiterungen, darunter XRender, XComposite und XRandR, Veröffentlichung der Standard-C-Bibliothek , die für den Einsatz auf eingebetteten Geräten mit begrenztem Speicherplatz und Arbeitsspeicher entwickelt wird. Bei der Entwicklung wurde ein Teil des Codes aus der Bibliothek vom Cygwin-Projekt und , die für Atmel AVR-Mikrocontroller entwickelt wurde, übernommen. Der PicoLibc-Code 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.
Das Projekt wurde ursprünglich unter dem Namen „newlib-nano“ entwickelt und zielte darauf ab, einige ressourcenintensive Funktionen von Newlib zu überarbeiten, die auf eingebetteten Geräten mit wenig RAM problematisch zu verwenden waren. Beispielsweise wurden die stdio-Funktionen durch eine kompakte Version aus der Bibliothek avrlibc ersetzt. Der Code wurde auch von nicht in der Embedded-Version verwendeten Komponenten, die nicht unter der BSD-Lizenz bereitgestellt werden, bereinigt. Eine vereinfachte Initialisierungsroutine (crt0) wurde hinzugefügt, und die Implementierung lokaler Threads wurde von 'struct _reent' auf den TLS-Mechanismus umgestellt.. Um die Kompilierung zu unterstützen, wurde das Meson-Toolchain verwendet.
In der neuen Version:
- Die Möglichkeit zur Erstellung unter Verwendung von Compiler .
- Die Unterstützung für den Clang-Compiler wurde hinzugefügt.
- Das Verhalten der Funktion 'gamma' wurde an das Verhalten von Glibc angepasst.
- In der nano-malloc-Implementierung ist eine verpflichtende Bereinigung des zurückgegebenen Speichers gewährleistet.
- Die Leistung von nano-realloc wurde verbessert, insbesondere bei der Durchführung von Operationen zum Zusammenführen freier Blöcke und beim Vergrößern der Heap-Größe.
- Ein Satz von Tests zur Überprüfung der Funktionsfähigkeit von malloc wurde hinzugefügt.
- Die Unterstützung für die Windows-Plattform wurde verbessert und die Möglichkeit zur Erstellung mit dem Toolset mingw hinzugefügt.
- Auf ARM-Systemen wird der Hardware-Register TLS (Thread-Local Storage) verwendet, wenn verfügbar.
Quelle: opennet.ru
