Dostupna standardna C biblioteka PicoLibc 1.1

Keith Packard, aktivni Debian programer, voditelj X.Org projekta i kreator mnogih X ekstenzija, uključujući XRender, XComposite i XRandR, podnijeti izdanje nove standardne C biblioteke PicoLibc 1.1, razvijen za korištenje na ugrađenim uređajima s ograničenom količinom trajne pohrane i RAM-a. Tijekom razvoja, dio koda je posuđen iz knjižnice nova biblioteka iz Cygwin projekta i AVR Libc, razvijen za Atmel AVR mikrokontrolere. PicoLibc kod distribuira pod BSD licencom. Sastavljanje biblioteke podržano je za arhitekture ARM (32-bit), i386, RISC-V, x86_64 i PowerPC.

Keith Packard započeo je razvoj nakon što nije uspio pronaći pristojnu Libc opciju koja bi se mogla koristiti na ugrađenim uređajima s malo RAM-a. Projekt se razvija od prošle godine. U prvoj fazi projekt je bio varijanta newlib-a, u kojem su funkcije stdio-a zamijenjene kompaktnom verzijom iz avrlibc-a (stdio u newlib-u nije bio prikladan zbog velike potrošnje resursa). Budući da Keithov trenutačni rad uključuje kontinuirani rad s arhitekturom RISC-V i razvoj alata za ugrađene uređaje, nedavno je pregledao stanje implementacija libc-a i zaključio da bi uz malo dotjerivanja kombinacija newlib-a i avrlibc-a mogla biti dobra opća namjena riješenje. U početku se projekt razvijao pod imenom “newlib-nano”, ali da bi se izbjegla zabuna s bibliotekom Newlib preimenovan je u PicoLibc.

U svom trenutnom obliku, Picolibc je već radio na uklanjanju svih kodova koji nisu isporučeni pod BSD licencom (ovaj kod nije korišten prilikom izgradnje za ugrađene uređaje), što je značajno pojednostavilo situaciju s licencom za projekt. Implementacija lokalnih streamova premještena je s 'struct _reent' na TLS mehanizam (nit-lokalna pohrana). Kompaktna verzija stdio, posuđena iz koda knjižnice avrlibc, aktivirana je prema zadanim postavkama (umetci asemblera specifični za ATmel prepisani su u C). Za asembler je korišten Meson toolkit, što je omogućilo nevezanje za asemblerske skripte newlib-a i pojednostavljenje prijenosa promjena iz newlib-a. Dodana je pojednostavljena verzija koda za inicijalizaciju (crt0), priložena izvršnoj datoteci i izvršena prije prijenosa kontrole na funkciju main().

U Picolibc verziji 1.1:

  • Dodana je pomoćna biblioteka za podršku tehnologije "semihosting"dopušta kodu koji se izvodi u okruženju programa za ispravljanje pogrešaka ili emulatora za korištenje I/O mehanizama glavnog sustava;
  • Za sustave koji podržavaju sistemske pozive za otvaranje, zatvaranje, čitanje i pisanje, tinystdio dodaje standardizirana POSIX stdio I/O sučelja, uključujući fopen i fdopen funkcije, kao i vezanje stdin/stdout/stderr na POSIX-definirane deskriptore datoteka;
  • Nedavne promjene iz newlib baze kodova su prenesene. Uključujući dodane libm priključke za fenv.h, koji se može koristiti na sustavima bez podrške za pokretni zarez;
  • Dodan primjer izgradnje aplikacije “Hello world” s picolibc za ARM i RISC-V sustave;
  • Uklonjeni su direktoriji newlib, libm i mathfp koji su sadržavali neiskorišteni eksperimentalni kod.

Izvor: opennet.ru

Dodajte komentar