Keith Packard, aktiivne Debian arendaja, X.Org projekti juht ja mitmete X-laienduste, sealhulgas XRender, XComposite ja XRandR looja, väljaande uus standardne C-raamatukogu , mis on arendatud kasutamiseks sisseehitatud seadmetes, millel on piiratud püsivälimuse ja mälu suurus. Arendamisel on osa koodist laenatud raamatukogust Cygwin projektist ja , mis on arendatud Atmeli AVR mikroprotsessorite jaoks. PicoLibc kood on BSD litsentsi all. Raamatukogu koostamine toetab arhitektuure ARM (32-bit), i386, RISC-V, x86_64 ja PowerPC.
Kita Packard alustas arendust pärast seda, kui ta ei suutnud leida sobivat Libc varianti, mida saaks kasutada vähenenud RAM-iga sisseehitatud seadmetes. Projekt on arenemas alates eelmise aasta. Esimeses etapis esindas projekt newlib varianti, mille stdio funktsioonid vahetati välja avrlibc kompaktse variandi vastu (newlibi stdio ei sobinud suure ressursikasutuse tõttu). Kuna Kita tegevus on tihedalt seotud RISC-V arhitektuuri ja sisseehitatud seadmete tööriistade arendamisega, on ta hiljuti üle vaadanud libc rakenduste seisukorra ja järeldanud, et väikeste kohandustega võib newlib ja avrlibc kombinatsioon saada heaks üldlahenduseks. Alguses arenes projekt nime all 'newlib-nano', kuid et vältida segadust Newlib raamatukoguga, muudeti see nimeks PicoLibc.
Picolibc-s on juba tehtud tööd, et eemaldada kõik mitte BSD litsentsiga tarnitud kood (see kood ei olnud kasutusel sisseehitatud seadmete kokkupanekul), mis on oluliselt lihtsustanud projekti litsentsingu olukorda. Kohalike kiudude teostamine on muudetud 'struct _reent' pealt TLS mehhanismiks (). Vaikimisi on aktiveeritud kompaktne stdio variant, mis on laenatud avrlibc raamatukogu koodist (ATmelile spetsiifilised assemblerise sätetööd on kirjutatud ümber C keelde). Kokkupanekuks on kasutatud Meson tööriistu, mis on võimaldanud mitte kinni jääda newlib kokkupanekuskemaatikasse ja lihtsustada muudatuste üleviimist newlibist. Lisatud on lihtsustatud initsialiseerimise kood (crt0), mis on kinnitatud täitmisfailile ja käivitatakse enne juhtimise edastamist main() funktsioonile.
Picolibc versioonis 1.1:
- Lisatud on abiraamatukogu, et toetada tehnoloogiat „“, mis võimaldab koodil, mis töötab silumis- või emulaatorikeskkonnas, kasutada host-süsteemi sisend-/väljundmehhanisme;
- Süsteemidele, mis toetavad süsteemikõnesid open, close, read ja write, on tinystdio-sse lisatud standardiseeritud POSIX sisendi / väljundi liideseid stdio, sealhulgas funktsioone fopen ja fdopen, samuti stdin / stdout / stderr sidumine POSIX-is määratletud failidesse;
- Hiljutised muudatused on kantud newlibi koodibaasi. Nendesse on lisatud libm-i pealsed, et , mida saab kasutada süsteemides, kus ei toetata ujukoma arvutusi;
- Lisatud "Hello world" rakenduse koostamisnäide picolibci jaoks ARM- ja RISC-V süsteemide jaoks;
- Kustutatud on kataloogid newlib, libm ja mathfp, kus paiknes kasutamata eksperimentaalne kood.
Allikas: opennet.ru
