Dostupna standardna C biblioteka PicoLibc 1.1

Keith Packard, aktivni Debian programer, vođa X.Org projekta i kreator mnogih X ekstenzija, uključujući XRender, XComposite i XRandR, uveo izdanje nove standardne C biblioteke PicoLibc 1.1, razvijen za upotrebu na ugrađenim uređajima s ograničenom trajnom pohranom i RAM-om. Tokom razvoja, dio koda je posuđen iz biblioteke newlib iz Cygwin projekta i AVR Libc, razvijen za Atmel AVR mikrokontrolere. PicoLibc kod distribuira pod BSD licencom. Sklop biblioteke je podržan za ARM (32-bitne), i386, RISC-V, x86_64 i PowerPC arhitekture.

Keith Packard je započeo razvoj nakon što nije mogao pronaći pristojnu Libc opciju koja bi se mogla koristiti na ugrađenim uređajima sa malo RAM-a. Projekat se razvija od prošle godine. U prvoj fazi, projekat je bio varijanta newlib-a, funkcije stdio-a u kojem su zamijenjene kompaktnom verzijom iz avrlibc-a (stdio u newlib-u nije bio pogodan za njegovu veliku potrošnju resursa). Budući da Keithov trenutni rad uključuje stalni rad sa RISC-V arhitekturom i razvojem alata za ugrađene uređaje, nedavno je pregledao stanje implementacije libc-a i zaključio da bi uz malo podešavanja, kombinacija newlib i avrlibc mogla biti dobra opća namjena rješenje. U početku se projekat razvijao pod imenom “newlib-nano”, ali da bi se izbjegla zabuna sa bibliotekom Newlib preimenovan je u PicoLibc.

U sadašnjem obliku, Picolibc je već uradio posao na uklanjanju svih kodova koji nisu isporučeni pod BSD licencom (ovaj kod nije korišten prilikom izgradnje za embeddirane uređaje), što je značajno pojednostavilo situaciju s licencom za projekat. Implementacija lokalnih tokova je premještena sa 'struct _reent' na TLS mehanizam (lokalna pohrana niti). Kompaktna verzija stdio-a, posuđena iz koda biblioteke avrlibc, aktivira se po defaultu (umetci asemblera specifični za ATmel prepisani su u C). Mesonov komplet alata je korišten za asembler, što je omogućilo da se ne vezuju za newlib asemblerske skripte i da se pojednostavi prijenos promjena iz newlib-a. Dodata je pojednostavljena verzija inicijalizacionog koda (crt0), priložena izvršnoj datoteci i izvršena prije nego što se kontrola prenese na main() funkciju.

U Picolibc verziji 1.1:

  • Dodata pomoćna biblioteka za podršku tehnologiji "semihosting"omogućava kodu koji radi u okruženju za otklanjanje grešaka ili emulatora da koristi I/O mehanizme host sistema;
  • Za sisteme koji podržavaju sistemske pozive otvaranja, zatvaranja, čitanja i pisanja, tinystdio dodaje standardizovane POSIX stdio I/O interfejse, uključujući fopen i fdopen funkcije, kao i vezivanje stdin/stdout/stderr za POSIX-definisane deskriptore datoteka;
  • Nedavne promjene iz newlib kodne baze su prenesene. Uključujući dodane libm stubove za fenv.h, koji se može koristiti na sistemima bez podrške s pomičnim zarezom;
  • Dodan primer izgradnje aplikacije “Hello world” sa picolibc za ARM i RISC-V sisteme;
  • Uklonjeni su direktoriji newlib, libm i mathfp, koji su sadržavali neiskorišteni eksperimentalni kod.

izvor: opennet.ru

Dodajte komentar