Vakio C-kirjaston PicoLibc julkaisu 1.8.9

Keith Packardin (X.Org-projektin johtaja) kehittämä standardi C-kirjasto PicoLibc 1.8.9 on julkaistu sulautetuissa laitteissa, joissa on rajoitettu tallennustila ja RAM-muisti. Kehityksen aikana osa koodista lainattiin Newlib-kirjastosta Cygwin-projektista ja AVR Libc:stä, joka on kehitetty Atmelin AVR-mikrokontrollereille. PicoLibc-koodia jaetaan BSD-lisenssillä. Kirjastokokoonpanoa tuetaan ARM (32-bittinen), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch ja OpenRisc arkkitehtuureille.

Aluksi projekti kehitettiin nimellä "newlib-nano", ja sen tarkoituksena oli muokata joitain Newlibin resurssiintensiivisiä toimintoja, joita oli ongelmallista käyttää sulautetuissa laitteissa, joissa oli vähän RAM-muistia. Esimerkiksi PicoLibcissä stdio-funktiot korvataan kompaktilla versiolla avrlibc-kirjastosta. Koodi poistetaan myös komponenteista, joita ei käytetä sulautetussa laitekokoonpanossa ja joita ei toimiteta BSD-lisenssin alaisina. Alustuskoodin (crt0) yksinkertaistettu versio on lisätty ja kutsujen toteutus on siirretty 'struct _reent':stä TLS (thread-local storage) -mekanismiin. Kokoonpanossa käytetään Meson-työkalusarjaa.

Uudessa julkaisussa:

  • Lisätty tuki LoongArch-, OpenRISC- ja LatticMico32-arkkitehtuureille.
  • Ehdotetaan C11-standardissa käyttöönotetun uchar.h-otsikkotiedoston toteutusta.
  • Lisätty nano-malloc-clear-freed-asetus tyhjentääksesi free()- tai realloc()-kohdan jälkeen vapautetun muistin.
  • Otettu käyttöön mahdollisuus käyttää clang multilibiä ARM64-järjestelmissä.
  • Siirtyminen uuteen pikolibc-ci-tools-työkalupakettiin jatkuvan integroinnin järjestelmissä automaattista kokoonpanoa varten on saatu päätökseen.
  • MIPS-arkkitehtuuri tukee "semihosting"-tekniikkaa, joka sallii virheenkorjaus- tai emulaattoriympäristössä ajettavan koodin käyttää isäntäjärjestelmän I/O-mekanismeja.
  • Lisätty picocrt- ja semihost-tuki Xtensan prosessoreille.
  • Lisätty asetukset käytettäväksi CoreBootin kanssa.
  • Lisätty memset_explicit()-funktio, joka on otettu käyttöön C23-standardissa.
  • Tapausmuunnostaulukot on päivitetty Unicode-spesifikaatioon 15.1.0.
  • Funktiot asnprintf() ja vasnprintf() on siirretty newlib-kirjastosta.
  • Lisätty tuki ARM:n kehittämälle FVP (Fixed Virtual Platforms) -emulaattorille.
  • Lisätty tuki GCC-kääntäjän vanhemmille versioille (vanhemmat kuin 4.4).
  • Iconv- ja locale-toteutukset on korvattu kompaktemmilla versioilla, jotka käyttävät yhteistä koodia koodausten kanssa työskentelemiseen.

Lähde: opennet.ru

Lisää kommentti