Keith Packard, aktiver Entwickler von Debian, Projektleiter von X.Org und Schöpfer vieler X-Erweiterungen, einschließlich XRender, XComposite und XRandR, Veröffentlichung der Standard-C-Bibliothek , 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 des Cygwin-Projekts und , die für Atmel AVR-Mikrocontroller entwickelt wurde. 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.
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 () umgestellt. Für den Build wird das Meson-Toolchain verwendet.
In der neuen Version:
- Die Möglichkeit des Builds mit dem Compiler .
- 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
