Dostupna standardna C biblioteka PicoLibc 1.1

Keith Packard, aktivni razvijač Debiana, vođa projekta X.Org i stvaratelj mnogih X-ekstenzija, uključujući XRender, XComposite i XRandR, predstavio izdanje nove standardne C biblioteke PicoLibc 1.1, koja se razvija za primjenu na ugrađenim uređajima s ograničenim kapacitetom trajne memorije i radne memorije. Tijekom razvoja dio koda preuzet je iz biblioteke newlib iz projekta Cygwin i AVR Libc, koja se razvijala za Atmel AVR mikrocontroller. Kod PicoLibc distribuira se je pod BSD licencom. Podržava se izrada biblioteke za arhitekture ARM (32-bit), i386, RISC-V, x86_64 i PowerPC.

Keith Packard započeo je razvoj nakon što nije mogao pronaći dostojnu verziju Libc koja se mogla koristiti na ugrađenim uređajima s malim RAM-om. Projekt se razvija od prošle godine. U prvoj fazi projekt je predstavio verziju newlib-a, čije su funkcije stdio zamijenjene kompaktnijom verzijom iz avrlibc (stdio u newlib-u nije bio prihvatljiv zbog velikog potrošnje resursa). Budući da je trenutna aktivnost Keitha povezana s stalnim radom s RISC-V arhitekturom i razvojem alata za ugrađene uređaje, nedavno je preispitao stanje realizacija libc i došao do zaključka da uz malo dorade kombinacija newlib-a i avrlibc-a može postati dobro univerzalno rješenje. Izvorno se projekt razvijao pod imenom 'newlib-nano', ali je, kako bi se izbjegla zabuna s Newlib bibliotekama, preimenovan u PicoLibc.

U trenutnoj verziji Picolibc već je obavljen rad na uklanjanju svake koda koji se ne distribuira pod BSD licencom (taj kod nije korišten prilikom izrade za ugrađene uređaje), što je značajno olakšalo situaciju s licencom projekta. Realizacija lokalnih niti prebačena je sa 'struct _reent' na TLS mehanizam (thread-local storage). Aktivirana je po defaultu kompaktnija verzija stdio, preuzeta iz koda biblioteke avrlibc (assembler umetci specifični za Atmel prepisani su u C). Za izradu je korišten alat Meson, što je omogućilo da se ne veže uz scenarije izrade newlib-a i olakša prijenos promjena iz newlib-a. Dodana je pojednostavljena verzija koda inicijalizacije (crt0), koja se povezuje s izvršnom datotekom i izvršava prije nego što predaje kontrolu funkciji main().

U verziji Picolibc 1.1:

  • Dodana je pomoćna biblioteka za podršku tehnologiji 'semihosting«, omogućujući kodu, koji se izvršava u okruženju debagera ili emulatora, da koristi mehanizme ulaza/izlaza host-sistema;
  • Za sisteme koji podržavaju sistemske pozive open, close, read i write, tinystdio je dodao standardizovane POSIX interfejse za ulaz/izlaz stdio, uključujući funkcije fopen i fdopen, kao i vezivanje stdin/stdout/stderr na određene POSIX deskriptore datoteka;
  • Nedavne promene su prenesene iz kodne baze newlib. Uključujući dodavanje stubova libm za fenv.h, koji se mogu koristiti na sistemima bez podrške za računanja s pomičnom zarezom;
  • Dodata je primer gradnje aplikacije „Hello world“ sa picolibc za ARM i RISC-V sisteme;
  • Uklonjeni su direktorijumi newlib, libm i mathfp, koji su sadržavali neiskorišćeni eksperimentalni kod.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster