Keith Packard, aktivni programer Debian, vođa projekta X.Org i kreator mnogih X ekstenzija, uključujući XRender, XComposite i XRandR, izdanje nove standardne C biblioteke , razvijen za korištenje na ugrađenim uređajima s ograničenom količinom trajne pohrane i RAM-a. Tijekom razvoja, dio koda je posuđen iz knjižnice iz Cygwin projekta i , razvijen za Atmel AVR mikrokontrolere. PicoLibc kod pod BSD licencom. Sastavljanje biblioteke podržano je za arhitekture ARM (32-bit), i386, RISC-V, x86_64 i PowerPC.
Keith Packard je započeo razvoj libc biblioteke nakon što nije uspio pronaći prikladnu Libc implementaciju prikladnu za ugrađene uređaje s ograničenom RAM memorijom. Projekt je u razvoju od prošle godine. U početku je to bila varijanta newlib-a, zamjenjujući stdio funkcije kompaktnom verzijom iz avrlibc-a (newlib-ov stdio nije bio zadovoljavajući zbog potrošnje resursa). Budući da Keithov trenutni rad uključuje stalan rad s RISC-V arhitekturom i razvoj alata za ugrađene uređaje, nedavno je pregledao stanje libc implementacija i zaključio da bi, uz manja poboljšanja, kombinacija newlib-a i avrlibc-a mogla postati dobro univerzalno rješenje. Projekt je u početku razvijen pod nazivom "newlib-nano", ali kako bi se izbjegla zabuna s Newlib bibliotekom, preimenovan je u PicoLibc.
U svom trenutnom obliku, Picolibc je već očišćen od sveg koda koji nije licenciran od strane BSD-a (ovaj kod nije korišten u izradi za ugrađene uređaje), što značajno pojednostavljuje situaciju s licenciranjem projekta. Implementacija lokalnih niti migrirana je iz 'struct _reent' u TLS mehanizam (). Kompaktna stdio varijanta, posuđena iz koda biblioteke avrlibc, omogućena je prema zadanim postavkama (ATmel-specifični asemblerski kod je prepisan u C). Meson alatni lanac se koristi za izgradnju, eliminirajući potrebu za ovisnošću o skriptama za izgradnju newlib-a i pojednostavljujući migraciju promjena iz newlib-a. Dodan je pojednostavljeni inicijalizacijski kod (crt0), pridružen izvršnoj datoteci i izvršen prije nego što se kontrola prenese na funkciju main().
U Picolibc verziji 1.1:
- Dodana je pomoćna biblioteka za podršku "tehnologije"", što omogućuje kodu koji se izvršava u okruženju programa za ispravljanje pogrešaka ili emulatora da koristi I/O mehanizme glavnog sustava;
- Za sustave koji podržavaju sistemske pozive za otvaranje, zatvaranje, čitanje i pisanje, tinystdio dodaje standardizirana POSIX stdio I/O sučelja, uključujući funkcije fopen i fdopen, te povezivanje stdin/stdout/stderr s POSIX-definiranim deskriptorima datoteka;
- Nedavne promjene iz newlib kodne baze su prenesene. To uključuje dodavanje libm stubova za , koji se može koristiti na sustavima bez podrške za operacije s pomičnim zarezom;
- Dodan je primjer izgradnje aplikacije "Hello world" s picolibc-om za ARM i RISC-V sustave;
- Uklonjeni su direktoriji newlib, libm i mathfp koji su sadržavali nekorišteni eksperimentalni kod.
Izvor: opennet.ru
