Saadaval on standardne C-teek PicoLibc 1.1

Keith Packard, aktiivne Debiani arendaja, projekti X.Org juht ja paljude X laienduste looja, sealhulgas XRender, XComposite ja XRandR, tutvustatud uue standardse C raamatukogu väljalase PicoLibc 1.1, mis on välja töötatud kasutamiseks manustatud seadmetes, millel on piiratud kogus püsimälu ja RAM. Arenduse käigus laenati osa koodist raamatukogust newlib Cygwini projektist ja AVR Libc, mis on välja töötatud Atmel AVR mikrokontrollerite jaoks. PicoLibc kood jaotatud BSD litsentsi alusel. Teegi kokkupanekut toetavad ARM-i (32-bitine), i386, RISC-V, x86_64 ja PowerPC arhitektuurid.

Keith Packard alustas arendamist pärast seda, kui ta ei leidnud korralikku Libc-valikut, mida saaks kasutada vähese RAM-iga manustatud seadmetes. Projekt on arenenud alates eelmisest aastast. Esimeses etapis oli projekt newlibi variant, milles stdio funktsioonid asendati avrlibc kompaktse versiooniga (newlibi stdio ei sobinud oma suure ressursitarbimisega). Kuna Keithi praegune töö hõlmab pidevat tööd RISC-V arhitektuuriga ja manustatud seadmete tööriistade väljatöötamist, vaatas ta hiljuti üle libc-rakenduste seisu ja jõudis järeldusele, et kui natuke kohandada, võib newlib ja avrlibc kombinatsioon olla hea üldotstarbeline. lahendus. Algselt töötati projekt välja "newlib-nano" nime all, kuid segiajamise vältimiseks Newlibi raamatukoguga nimetati see ümber PicoLibciks.

Praegusel kujul on Picolibc juba teinud tööd kogu koodi eemaldamiseks, mida ei pakuta BSD litsentsi alusel (seda koodi ei kasutatud manustatud seadmete ehitamisel), mis on projekti litsentsiga olukorda oluliselt lihtsustanud. Kohalike voogude juurutamine on 'struct _reent'-lt üle viidud TLS-i mehhanismi (niit-kohalik salvestus). Avrlibc teegi koodist laenatud stdio kompaktne versioon on vaikimisi aktiveeritud (ATmel-spetsiifilised assembleri lisad kirjutatakse C-s ümber). Koostamiseks kasutati Mesoni tööriistakomplekti, mis võimaldas mitte olla seotud newlib-i montaažiskriptidega ja lihtsustada muudatuste ülekandmist newlib-ist. Lisatud initsialiseerimiskoodi (crt0) lihtsustatud versioon, mis lisati käivitatavale failile ja käivitati enne juhtimise ülekandmist funktsioonile main().

Picolibci versioonis 1.1:

  • Tehnoloogia toetamiseks on lisatud abiteek "poolhostimine"võimaldab siluris või emulaatorikeskkonnas töötaval koodil kasutada hostsüsteemi I/O mehhanisme;
  • Süsteemide jaoks, mis toetavad süsteemikutsete avamist, sulgemist, lugemist ja kirjutamist, lisab tinystdio standardiseeritud POSIX stdio I/O liidesed, sealhulgas funktsioonid fopen ja fdopen, samuti stdin/stdout/stderr sidumise POSIX-i määratletud failideskriptoritega;
  • Hiljutised muudatused newlib koodibaasist on üle kantud. Kaasa arvatud lisatud libm stubs jaoks fenv.h, mida saab kasutada ilma ujukomatoeta süsteemides;
  • Lisatud näide rakenduse "Hello world" ehitamisest pikolibci abil ARM-i ja RISC-V süsteemide jaoks;
  • Eemaldati kataloogid newlib, libm ja mathfp, mis sisaldasid kasutamata katsekoodi.

Allikas: opennet.ru

Lisa kommentaar