Keith Packard, aktivní vývojář Debian, vedoucí projektu X.Org a tvůrce mnoha rozšíření X, včetně XRender, XComposite a XRandR, vydání nové standardní knihovny C , vyvinutý pro použití na vestavěných zařízeních s omezeným trvalým úložištěm a RAM. Během vývoje byla část kódu vypůjčena z knihovny z projektu Cygwin a , vyvinuté pro mikrokontroléry Atmel AVR. PicoLibc kód pod licencí BSD. Sestavení knihovny je podporováno pro architektury ARM (32bitové), i386, RISC-V, x86_64 a PowerPC.
Keith Packard začal s vývojem knihovny libc poté, co se mu nepodařilo najít vhodnou implementaci Libc vhodnou pro embedded zařízení s omezenou pamětí RAM. Projekt je ve vývoji od loňského roku. Zpočátku se jednalo o variantu knihovny newlib, která nahradila funkce stdio kompaktní verzí z knihovny avrlibc (stdio knihovny newlib bylo kvůli své spotřebě zdrojů neuspokojivé). Vzhledem k tomu, že Keithova současná práce zahrnuje neustálou práci s architekturou RISC-V a vývoj nástrojů pro embedded zařízení, nedávno zhodnotil stav implementací knihovny libc a dospěl k závěru, že s drobným vylepšením by se kombinace knihovny newlib a avrlibc mohla stát dobrým univerzálním řešením. Projekt byl původně vyvíjen pod názvem „newlib-nano“, ale aby se předešlo záměně s knihovnou Newlib, byl přejmenován na PicoLibc.
Ve své současné podobě byl Picolibc již zbaven veškerého kódu, který není licencován pod BSD (tento kód nebyl použit při sestavení pro embedded zařízení), což výrazně zjednodušuje licenční situaci projektu. Implementace lokálních vláken byla migrována ze struktury 'struct _reent' na mechanismus TLS (). Ve výchozím nastavení je povolena kompaktní varianta stdio, převzatá z kódu knihovny avrlibc (kód assembler specifický pro ATmel byl přepsán v jazyce C). Pro sestavení se používá sada nástrojů Meson, která eliminuje potřebu závislosti na skriptech pro sestavení newlib a zjednodušuje migraci změn z newlib. Byl přidán zjednodušený inicializační kód (crt0), který je připojen ke spustitelnému souboru a spuštěn před předáním řízení funkci main().
Ve verzi Picolibc 1.1:
- Přidána pomocná knihovna pro podporu technologie „", což umožňuje kódu běžícímu v prostředí ladicího programu nebo emulátoru používat I/O mechanismy hostitelského systému;
- Pro systémy, které podporují systémová volání open, close, read a write, přidává tinystdio standardizovaná I/O rozhraní POSIX stdio, včetně funkcí fopen a fdopen, a vazbu stdin/stdout/stderr na deskriptory souborů definované v POSIXu;
- Byly portovány nedávné změny z kódové základny newlib. Patří sem přidání pahýlů libm pro , který lze použít na systémech bez podpory čísel s plovoucí desetinnou čárkou;
- Přidán příklad vytvoření aplikace „Hello world“ s picolibc pro systémy ARM a RISC-V;
- Odebrány adresáře newlib, libm a mathfp, které obsahovaly nepoužitý experimentální kód.
Zdroj: opennet.ru
