Keith Packard, aktywny deweloper Debiana, lider projektu X.Org i twórca wielu rozszerzeń X, w tym XRender, XComposite i XRandR, wydanie standardowej biblioteki C , rozwijanej z myślą o zastosowaniach w urządzeniach wbudowanych z ograniczoną pamięcią stałą i RAM. W trakcie opracowywania część kodu została zapożyczona z biblioteki z projektu Cygwin i , rozwijanej dla mikro kontrolerów Atmel AVR. Kod PicoLibc jest dostępny na licencji BSD. Wspierana jest kompilacja biblioteki dla architektur ARM (32-bit), i386, RISC-V, x86_64 i PowerPC.
Początkowo projekt rozwijany był pod nazwą "newlib-nano" i był ukierunkowany na przetworzenie niektórych zasobożernych funkcji Newlib, które były problematyczne w użyciu na urządzeniach wbudowanych z ograniczoną pamięcią RAM. Na przykład, funkcje stdio zostały zastąpione kompaktową wersją z biblioteki avrlibc. Kod został również uprzątnięty z nieużywanych komponentów, które nie były dostarczane na licencji BSD. Dodano uproszczoną wersję kodu inicjalizacyjnego (crt0), a implementacja lokalnych strumieni została przeniesiona z ‘struct _reent’ na mechanizm TLS (). Do kompilacji użyto narzędzi Meson.
W nowym wydaniu:
- Dodano możliwość kompilacji przy użyciu kompilatora .
- Dodano wsparcie dla kompilatora Clang.
- Zachowanie funkcji ‘gamma’ spójne z zachowaniem Glibc.
- W implementacji nano-malloc zapewniono obligatoryjne czyszczenie zwracanej pamięci.
- Poprawiono wydajność nano-realloc, zwłaszcza przy łączeniu wolnych bloków i rozszerzaniu rozmiaru sterty.
- Dodano zestaw testów do weryfikacji poprawności działania malloc.
- Ulepszono wsparcie dla platformy Windows oraz dodano możliwość kompilacji przy użyciu narzędzi mingw.
- Na systemach ARM z wykorzystaniem został użyty sprzętowy rejestr TLS (Thread-Local Storage).
Źródło: opennet.ru
