Yra standartinė C biblioteka PicoLibc 1.1

Keithas Packardas, aktyvus Debian kūrėjas, X.Org projekto vadovas ir daugelio X plėtinių, įskaitant XRender, XComposite ir XRandR, kūrėjas, pristatė išleista nauja standartinė C biblioteka PicoLibc 1.1, sukurtas naudoti įterptuosiuose įrenginiuose su ribotu nuolatinės atminties kiekiu ir RAM. Kūrimo metu dalis kodo buvo pasiskolinta iš bibliotekos newlib iš Cygwin projekto ir AVR Libc, sukurtas Atmel AVR mikrovaldikliams. PicoLibc kodas išplatino pagal BSD licenciją. Bibliotekos surinkimas palaikomas ARM (32 bitų), i386, RISC-V, x86_64 ir PowerPC architektūrose.

Keithas Packardas pradėjo kurti, kai negalėjo rasti tinkamos „Libc“ parinkties, kurią būtų galima naudoti įterptiniuose įrenginiuose su mažai RAM. Projektas vystomas nuo praėjusių metų. Pirmajame etape projektas buvo „newlib“ variantas, kuriame „stdio“ funkcijos buvo pakeistos kompaktiška „avrlibc“ versija (stdio in newlib nebuvo tinkamas dėl didelio išteklių suvartojimo). Kadangi dabartinis Keito darbas susijęs su nuolatiniu darbu su RISC-V architektūra ir įterptųjų įrenginių įrankių kūrimu, jis neseniai peržiūrėjo libc diegimo būseną ir padarė išvadą, kad šiek tiek pakeitus newlib ir avrlibc derinys galėtų būti geras bendrosios paskirties. sprendimas. Iš pradžių projektas buvo sukurtas pavadinimu „newlib-nano“, tačiau siekiant išvengti painiavos su Newlib biblioteka, jis buvo pervadintas į PicoLibc.

Savo dabartine forma Picolibc jau atliko darbą, kad pašalintų visą kodą, kuris nėra pateiktas pagal BSD licenciją (šis kodas nebuvo naudojamas kuriant įterptiesiems įrenginiams), o tai žymiai supaprastino situaciją dėl projekto licencijos. Vietinių srautų diegimas buvo perkeltas iš „struct _reent“ į TLS mechanizmą (gijų vietinė saugykla). Kompaktiška stdio versija, pasiskolinta iš avrlibc bibliotekos kodo, yra aktyvuota pagal numatytuosius nustatymus (ATmel specifiniai surinkėjo įterpimai perrašomi C). Surinkimui buvo naudojamas Meson įrankių rinkinys, kuris leido neprisirišti prie newlib surinkimo scenarijų ir supaprastinti pakeitimų perkėlimą iš newlib. Pridėta supaprastinta inicijavimo kodo versija (crt0), pridedama prie vykdomojo failo ir vykdoma prieš perduodant valdymą į main() funkciją.

Picolibc 1.1 versijoje:

  • Pridėta pagalbinė biblioteka, skirta palaikyti technologiją "pusiau priegloba"leidžia kodui, veikiančiam derinimo arba emuliatoriaus aplinkoje, naudoti pagrindinės sistemos įvesties / išvesties mechanizmus;
  • Sistemoms, kurios palaiko atvirą, uždarytą, skaitymo ir rašymo sistemos iškvietimą, tinystdio prideda standartizuotas POSIX stdio I/O sąsajas, įskaitant fopen ir fdopen funkcijas, taip pat susieja stdin/stdout/stderr su POSIX apibrėžtais failų deskriptoriais;
  • Paskutiniai „newlib“ kodų bazės pakeitimai buvo perkelti. Įskaitant pridėtas libm stubs, skirtas fenv.h, kuris gali būti naudojamas sistemose be slankiojo kablelio palaikymo;
  • Pridėtas „Hello world“ programos su pikolibc kūrimo pavyzdys ARM ir RISC-V sistemoms;
  • Pašalinti newlib, libm ir mathfp katalogai, kuriuose buvo nenaudojamas eksperimentinis kodas.

Šaltinis: opennet.ru

Добавить комментарий