Keith Packard, aktiv udvikler af Debian, leder af X.Org-projektet og skaber af mange X-udvidelser, herunder XRender, XComposite og XRandR, udgivelse af det nye standard C-bibliotek , der udvikles til brug på indlejrede enheder med begrænset størrelse på fast lager og RAM. Ved udviklingen er en del af koden lånt fra biblioteket fra Cygwin-projektet og , der blev udviklet til Atmel AVR-mikrocontrollere. Koden til PicoLibc er under BSD-licens. Biblioteket understøtter kompilering for arkitekturer som ARM (32-bit), i386, RISC-V, x86_64 og PowerPC.
Kit Packard begyndte at udvikle efter han ikke kunne finde et tilfredsstillende alternativ til Libc, som kunne bruges på indlejrede enheder med lavt RAM. Projektet har været under udvikling siden sidste år. I den første fase var projektet en version af newlib, hvor stdio-funktionerne blev erstattet med en kompakt version fra avrlibc (stdio i newlib var utilfredsstillende med sit høje ressourceforbrug). Da Kits nuværende arbejde er relateret til konstant arbejde med RISC-V-arkitekturen og udviklingen af værktøjer til indlejrede enheder, har han for nylig gennemgået tilstanden af libc-implementeringerne og konkluderet, at med små justeringer kan kombinationen af newlib og avrlibc blive en god universel løsning. Oprindeligt blev projektet udviklet under navnet 'newlib-nano', men for at undgå forvirring med Newlib-biblioteket blev det omdøbt til PicoLibc.
I sin nuværende form er der allerede arbejdet på at fjerne al kode, der ikke er licenseret under BSD (denne kode blev ikke brugt ved compilation for indlejrede enheder), hvilket har gjort situationslicensen for projektet betydeligt enklere. Implementeringen af lokale tråde er blevet overført fra ‘struct _reent’ til TLS-mekanismen (). Den kompakte version af stdio, som er lånt fra avrlibc-koden, er aktiveret som standard (ATmel-specifikke assemblerindskud er omskrevet til C). Byggeværktøjet Meson er blevet anvendt, hvilket har gjort det muligt at undgå binding til build-scripts fra newlib og forenklet overførsel af ændringer fra newlib. En forenklet variant af initialiseringskoden (crt0) er tilføjet, som vedhæftes til den eksekverbare fil og udføres før kontrol overgår til main()-funktionen.
I versionen af Picolibc 1.1:
- En hjælpende biblioteksfunktion til støtte for ‘‘, som gør det muligt for kode, der kører i et debugger- eller emulatormiljø, at bruge værtsystemets input/output-mekanismer;
- For systemer, der understøtter systemopkald som open, close, read og write, er der tilføjet standardiserede POSIX-input/output-interfacer til tinystdio, herunder funktionerne fopen og fdopen samt bindingen af stdin/stdout/stderr til specifik POSIX-filbeskrivelser;
- Nye ændringer fra newlib-kodebasen er blevet overført. Herunder er der tilføjet stub-funktioner for libm til , som kan bruges på systemer uden understøttelse af flydende talberegning;
- Tilføjet eksempel på opbygning af en "Hello world"-applikation med picolibc til ARM- og RISC-V-systemer;
- Fjernet mapperne newlib, libm og mathfp, som indeholdt ubrugelig eksperimentel kode.
Kilde: opennet.ru
