Pieejama standarta C bibliotēka PicoLibc 1.1

Kīts Pakards, aktīvs Debian izstrādātājs, X.Org projekta vadītājs un daudzu X paplašinājumu, tostarp XRender, XComposite un XRandR, radītājs, ieviesa jaunas standarta C bibliotēkas izlaišana PicoLibc 1.1, izstrādāts lietošanai iegultās ierīcēs ar ierobežotu pastāvīgo atmiņu un operatīvo atmiņu. Izstrādes laikā daļa koda tika aizgūta no bibliotēkas newlib no Cygwin projekta un AVR Libc, izstrādāts Atmel AVR mikrokontrolleriem. PicoLibc kods izplata saskaņā ar BSD licenci. Bibliotēkas montāža tiek atbalstīta ARM (32 bitu), i386, RISC-V, x86_64 un PowerPC arhitektūrām.

Keith Packard sāka izstrādāt pēc tam, kad nevarēja atrast pienācīgu Libc opciju, ko varētu izmantot iegultās ierīcēs ar mazu RAM. Projekts tiek attīstīts kopš pagājušā gada. Pirmajā posmā projekts bija newlib variants, kurā stdio funkcijas tika aizstātas ar kompakto versiju no avrlibc (stdio in newlib nebija piemērots tā lielajam resursu patēriņam). Tā kā Kīts pašreizējais darbs ir saistīts ar nepārtrauktu darbu ar RISC-V arhitektūru un iegulto ierīču rīku izstrādi, viņš nesen pārskatīja libc ieviešanas stāvokli un secināja, ka ar nelielu pielāgošanu newlib un avrlibc kombinācija varētu būt laba vispārēja pielietojuma. risinājums. Sākotnēji projekts tika izstrādāts ar nosaukumu “newlib-nano”, taču, lai izvairītos no sajaukšanas ar Newlib bibliotēku, tas tika pārdēvēts par PicoLibc.

Pašreizējā formā Picolibc jau ir paveicis darbu, lai noņemtu visu kodu, kas netiek piegādāts saskaņā ar BSD licenci (šis kods netika izmantots, veidojot iegultajām ierīcēm), kas ir ievērojami vienkāršojis situāciju ar projekta licenci. Vietējo straumju ieviešana ir pārvietota no 'struct _reent' uz TLS mehānismu (pavedienu lokālā krātuve). Kompaktā stdio versija, kas aizņemta no avrlibc bibliotēkas koda, ir aktivizēta pēc noklusējuma (ATmel specifiskie montāžas ieliktņi tiek pārrakstīti C valodā). Montāžai tika izmantots Meson rīku komplekts, kas ļāva nepiesaistīties newlib montāžas skriptiem un vienkāršot izmaiņu pārsūtīšanu no newlib. Pievienota vienkāršota inicializācijas koda (crt0) versija, kas pievienota izpildāmajam failam un izpildīta pirms vadības pārsūtīšanas uz main() funkciju.

Picolibc versijā 1.1:

  • Pievienota palīgbibliotēka, lai atbalstītu tehnoloģiju "pushostings"ļauj kodam, kas darbojas atkļūdotāja vai emulatora vidē, izmantot resursdatora sistēmas I/O mehānismus;
  • Sistēmām, kas atbalsta sistēmas izsaukumu atvēršanu, aizvēršanu, lasīšanu un rakstīšanu, tinystdio pievieno standartizētas POSIX stdio I/O saskarnes, tostarp funkcijas fopen un fdopen, kā arī piesaista stdin/stdout/stderr ar POSIX definētajiem failu deskriptoriem;
  • Jaunākās izmaiņas no newlib kodu bāzes ir pārnestas. Ieskaitot pievienotos libm stubs for fenv.h, ko var izmantot sistēmās bez peldošā komata atbalsta;
  • Pievienots piemērs lietojumprogrammas “Hello world” izveidei ar pikolibc ARM un RISC-V sistēmām;
  • Noņemti newlib, libm un mathfp direktoriji, kuros bija neizmantots eksperimentālais kods.

Avots: opennet.ru

Pievieno komentāru