Keith Packard, a prominent developer of Debian, leader of the X.Org project, and creator of multiple X extensions including XRender, XComposite, and XRandR, az új szabvány C könyvtár kiadása , amelyet beágyazott eszközökön való használatra fejlesztenek, korlátozott állandó tároló és RAM mérettel. A fejlesztés során a kód egy része a a Cygwin projektből és , amely az Atmel AVR mikrokontrollerhez készült. A PicoLibc kódja BSD licensz alatt áll. A könyvtár építése ARM (32-bit), i386, RISC-V, x86_64 és PowerPC architektúrákra támogatott.
Keith Packard akkor kezdett el dolgozni a projekten, amikor nem talált megfelelő Libc megoldást, amelyet beágyazott eszközökön, kis RAM-mel lehetett volna használni. A projekt tavaly óta fejlődik. Az első szakaszban a projekt a newlib egy verzióját jelentette, amelyben a stdio funkciókat avrlibc kompakt változatai váltották fel (a newlib stdio túl sok erőforrást használt). Mivel Keith jelenlegi tevékenysége szorosan kapcsolódik a RISC-V architektúrához és a beágyazott eszközökhöz szükséges eszközök fejlesztéséhez, nemrégiben felülvizsgálta a libc megvalósításának állapotát, és arra a következtetésre jutott, hogy a newlib és az avrlibc kombinációja, kis módosításokkal, jó univerzális megoldás lehet. A projekt eredetileg "newlib-nano" néven indult, de a Newlib könyvtárral való zűrzavar elkerülése érdekében PicoLibc-re nevezték át.
A jelenlegi formájában a Picolibc már elvégezte a nem BSD licenc alatt álló kód eltávolítását (ez a kód nem volt felhasználva beágyazott eszközöknél), ami jelentősen egyszerűsítette a projekt licencelési helyzetét. A helyi szálak megvalósítása a 'struct _reent'-ről TLS mechanizmusra váltott (). Alapértelmezés szerint aktiválva van a kompakt stdio változat, amely az avrlibc kódjából származik (az Atmel-specifikus assembly beszúrásokat C nyelvre írták át). A Meson eszközkészletet használták a fordításhoz, lehetővé téve a newlib fordítási forgatókönyvekhez való kötődés elkerülését és a newlib-ből származó módosítások egyszerűsítését. Egy egyszerűsített inicializáló kód (crt0) került hozzáadásra, amely a végrehajtható fájlhoz csatlakozik és a main() függvény kezelésére való átadása előtt végrehajtódik.
A PicoLibc 1.1-es verziójában:
- Hozzáadva egy segédkönyvtár a "«, amely lehetővé teszi a debugger vagy emulátor környezetében futó kód számára, hogy használja a gazda rendszer bemeneti/kimeneti mechanizmusait;
- A tinystdio-hoz POSIX szabványos bemeneti/kimeneti interfészek, köztük az fopen és fdopen funkciók, valamint a stdin/stdout/stderr kötések hozzáadásra kerültek, amelyek a POSIX által definiált fájl leírókhoz kapcsolódnak;
- A legutóbbi változások átkerültek a newlib kódalapból. Beleértve a libm állványok hozzáadását, amelyek , amelyek használhatók lebegőpontos számítások támogatása nélküli rendszereken;
- Hozzáadva egy Hello world alkalmazás összeállítási példája a picolibc-vel ARM és RISC-V rendszerekhez;
- Eltávolítva a newlib, libm és mathfp mappák, amelyek nem használt kísérleti kódot tartalmaztak.
Forrás: opennet.ru
