Vakio C-kirjasto PicoLibc 1.1 saatavilla

Keith Packard, aktiivinen Debian-kehittäjä, X.Org-projektin johtaja ja monien X-laajennusten luoja, mukaan lukien XRender, XComposite ja XRandR, toimitettu uuden standardin C-kirjaston julkaisu PicoLibc 1.1, kehitetty käytettäväksi sulautetuissa laitteissa, joissa on rajoitettu pysyvä tallennustila ja RAM. Kehityksen aikana osa koodista lainattiin kirjastosta newlib Cygwin-projektista ja AVR Libc, kehitetty Atmel AVR -mikro-ohjaimille. PicoLibc koodi jakelija BSD-lisenssillä. Kirjastokokoonpanoa tuetaan ARM- (32-bittinen), i386-, RISC-V-, x86_64- ja PowerPC-arkkitehtuureissa.

Keith Packard aloitti kehityksen sen jälkeen, kun hän ei löytänyt kunnollista Libc-vaihtoehtoa, jota voitaisiin käyttää sulautetuissa laitteissa, joissa on vähän RAM-muistia. Hanketta on kehitetty viime vuodesta lähtien. Ensimmäisessä vaiheessa projekti oli variantti newlibistä, jossa stdion toiminnot korvattiin kompaktilla versiolla avrlibc:stä (newlibin stdio ei sopinut suureen resurssienkulutukseensa). Koska Keithin nykyinen työ sisältää jatkuvaa työtä RISC-V-arkkitehtuurin parissa ja sulautettujen laitteiden työkalujen kehittämistä, hän tarkasteli äskettäin libc-toteutusten tilaa ja totesi, että newlib- ja avrlibc-yhdistelmä voisi olla hyvä yleiskäyttöinen. ratkaisu. Aluksi projekti kehitettiin nimellä "newlib-nano", mutta sekaannusten välttämiseksi Newlib-kirjaston kanssa se nimettiin uudelleen PicoLibc:ksi.

Nykyisessä muodossaan Picolibc on jo tehnyt työtä poistaakseen kaiken koodin, jota ei toimiteta BSD-lisenssillä (tätä koodia ei käytetty sulautettujen laitteiden rakentamisessa), mikä on merkittävästi yksinkertaistanut tilannetta projektin lisenssin kanssa. Paikallisten streamien toteutus on siirretty 'struct _reent':stä TLS-mekanismiin (lankapaikallinen tallennustila). Avrlibc-kirjastokoodista lainattu kompakti stdio-versio on oletusarvoisesti aktivoitu (ATmel-kohtaiset assembler-lisäkkeet kirjoitetaan uudelleen C:ssä). Kokoonpanossa käytettiin Meson-työkalupakkia, joka mahdollisti sen, että se ei ollut sidottu newlib-kokoonpanoskripteihin ja yksinkertaisti muutosten siirtoa newlibistä. Lisätty yksinkertaistettu versio alustuskoodista (crt0), liitetty suoritettavaan tiedostoon ja suoritettu ennen kuin ohjaus siirretään main()-funktioon.

Picolibc-versiossa 1.1:

  • Lisätty apukirjasto tukemaan tekniikkaa "puolihosting"sallii virheenkorjaus- tai emulaattoriympäristössä ajettavan koodin käyttää isäntäjärjestelmän I/O-mekanismeja;
  • Järjestelmiin, jotka tukevat järjestelmäkutsujen avaamista, sulkemista, lukemista ja kirjoittamista, tinystdio lisää standardoidut POSIX stdio I/O -liitännät, mukaan lukien fopen- ja fdopen-funktiot, sekä sitomisen stdin/stdout/stderr POSIXin määrittämiin tiedostokuvauksiin;
  • Viimeaikaiset muutokset newlib-koodikannasta on siirretty. Sisältää lisätyt libm stubs for fenv.h, jota voidaan käyttää järjestelmissä ilman liukulukutukea;
  • Lisätty esimerkki "Hello world" -sovelluksen rakentamisesta pikolibcilla ARM- ja RISC-V-järjestelmille;
  • Poistettiin newlib-, libm- ja mathfp-hakemistot, jotka sisälsivät käyttämätöntä kokeellista koodia.

Lähde: opennet.ru

Lisää kommentti