Standardna knjižnica C PicoLibc 1.1 je na voljo

Keith Packard, aktivni razvijalec Debiana, vodja projekta X.Org in ustvarjalec številnih razširitev X, vključno z XRender, XComposite in XRandR, uveden izdaja nove standardne knjižnice C PicoLibc 1.1, razvit za uporabo v vgrajenih napravah z omejenim trajnim pomnilnikom in RAM-om. Med razvojem je bil del kode izposojen iz knjižnice newlib iz projekta Cygwin in AVR Libc, razvit za mikrokontrolerje Atmel AVR. koda PicoLibc distributer pod licenco BSD. Sestavljanje knjižnice je podprto za arhitekture ARM (32-bit), i386, RISC-V, x86_64 in PowerPC.

Keith Packard je začel razvijati, potem ko ni mogel najti spodobne možnosti Libc, ki bi jo lahko uporabljali na vgrajenih napravah z malo RAM-a. Projekt se razvija od lanskega leta. Na prvi stopnji je bil projekt različica newlib, v katerem so bile funkcije stdio nadomeščene s kompaktno različico iz avrlibc (stdio v newlib ni bil primeren zaradi velike porabe virov). Ker Keithovo trenutno delo vključuje stalno delo z arhitekturo RISC-V in razvoj orodij za vgrajene naprave, je pred kratkim pregledal stanje implementacij libc in ugotovil, da bi lahko bila z malo prilagajanja kombinacija newlib in avrlibc dobra za splošne namene rešitev. Sprva se je projekt razvijal pod imenom »newlib-nano«, a da bi se izognili zamenjavi s knjižnico Newlib, so ga preimenovali v PicoLibc.

V svoji trenutni obliki je Picolibc že opravil delo za odstranitev vse kode, ki ni dobavljena z licenco BSD (ta koda ni bila uporabljena pri gradnji za vgrajene naprave), kar je bistveno poenostavilo situacijo z licenco za projekt. Implementacija lokalnih tokov je bila premaknjena iz 'struct _reent' v mehanizem TLS (lokalna shramba niti). Kompaktna različica stdio, izposojena iz kode knjižnice avrlibc, je privzeto aktivirana (za ATmel specifični asemblerski vstavki so prepisani v C). Za sestavljanje je bil uporabljen komplet orodij Meson, ki je omogočil nevezanost na skripte za sestavljanje newlib in poenostavitev prenosa sprememb iz newlib. Dodana je poenostavljena različica inicializacijske kode (crt0), priložena izvršljivi datoteki in izvedena, preden se nadzor prenese na funkcijo main().

V različici Picolibc 1.1:

  • Dodana pomožna knjižnica za podporo tehnologije "polgostovanje"omogoča kodi, ki se izvaja v okolju razhroščevalnika ali emulatorja, da uporablja V/I mehanizme gostiteljskega sistema;
  • Za sisteme, ki podpirajo sistemske klice za odpiranje, zapiranje, branje in pisanje, tinystdio dodaja standardizirane V/I vmesnike POSIX stdio, vključno s funkcijama fopen in fdopen, kot tudi vezavo stdin/stdout/stderr na deskriptorje datotek, ki jih definira POSIX;
  • Nedavne spremembe kodne baze newlib so bile prenesene. Vključno z dodanimi škrbinami libm za fenv.h, ki se lahko uporablja v sistemih brez podpore za plavajočo vejico;
  • Dodan primer gradnje aplikacije »Hello world« s picolibc za sisteme ARM in RISC-V;
  • Odstranjeni so bili imeniki newlib, libm in mathfp, ki so vsebovali neuporabljeno eksperimentalno kodo.

Vir: opennet.ru

Dodaj komentar