A PicoLibc 1.1 szabványos C-könyvtár elérhető

Keith Packard, aktív Debian-fejlesztő, az X.Org projekt vezetője és számos X-bővítmény, köztük az XRender, az XComposite és az XRandR alkotója, benyújtott egy új szabványos C könyvtár kiadása PicoLibc 1.1, amelyet korlátozott állandó tárhellyel és RAM-mal rendelkező beágyazott eszközökön való használatra fejlesztettek ki. A fejlesztés során a kód egy részét a könyvtárból kölcsönözték newlib a Cygwin projektből és AVR Libc, amelyet Atmel AVR mikrokontrollerekhez fejlesztettek ki. PicoLibc kód forgalmazza BSD licenc alatt. A Library-összeállítás az ARM (32 bites), i386, RISC-V, x86_64 és PowerPC architektúrákhoz támogatott.

Keith Packard azután kezdte el a fejlesztést, hogy nem talált megfelelő Libc opciót, amelyet kevés RAM-mal rendelkező beágyazott eszközökön is lehetne használni. A projektet tavaly óta fejlesztik. Az első szakaszban a projekt a newlib egy változata volt, amelyben az stdio funkcióit az avrlibc kompakt változatára cserélték (az stdio a newlibben nem volt megfelelő a magas erőforrás-fogyasztáshoz). Mivel Keith jelenlegi munkája a RISC-V architektúrával és a beágyazott eszközök eszközeinek fejlesztésével foglalkozik, nemrég áttekintette a libc implementációinak állapotát, és arra a következtetésre jutott, hogy egy kis módosítással a newlib és az avrlibc kombinációja jó általános cél lehet. megoldás. Kezdetben a projektet „newlib-nano” néven fejlesztették ki, de a Newlib könyvtárral való összetéveszthetőség elkerülése érdekében PicoLibc névre keresztelték.

Jelenlegi formájában a Picolibc már végzett minden olyan kód eltávolítását, amelyet nem BSD-licenc alapján szállítanak (ezt a kódot nem használták a beágyazott eszközök építésekor), ami jelentősen leegyszerűsítette a helyzetet a projekt licencével. A helyi adatfolyamok megvalósítása átkerült a 'struct _reent'-ről a TLS-mechanizmusba (szál-helyi tárhely). Az avrlibc könyvtárkódból kölcsönzött stdio kompakt verziója alapértelmezés szerint aktiválva van (az ATmel-specifikus assembler beillesztések át vannak írva C-ben). Az összeállításhoz a Meson eszközkészletet használták, ami lehetővé tette, hogy ne legyen newlib assembly szkriptekhez kötve, és leegyszerűsödjön a változtatások átvétele a newlibről. Az inicializálási kód (crt0) egyszerűsített változata hozzáadva a végrehajtható fájlhoz, és a vezérlés main() függvényre való átvitele előtt végrehajtva.

A Picolibc 1.1-es verziójában:

  • Kiegészítő könyvtár hozzáadva a technológia támogatásához "félhosting"lehetővé teszi a hibakereső vagy emulátor környezetben futó kódnak a gazdagép I/O mechanizmusainak használatát;
  • A nyitási, bezárási, olvasási és írási rendszerhívásokat támogató rendszerek esetében a tinystdio szabványos POSIX stdio I/O interfészt ad hozzá, beleértve az fopen és fdopen függvényeket, valamint az stdin/stdout/stderr-t a POSIX által meghatározott fájlleírókhoz;
  • A newlib kódbázis legutóbbi módosításai átkerültek. Beleértve a hozzáadott libm csonkokat a számára fenv.h, amely lebegőpontos támogatás nélküli rendszereken használható;
  • Példa hozzáadva a „Hello world” alkalmazás picolibc segítségével ARM és RISC-V rendszerekhez való felépítésére;
  • Eltávolította a newlib, libm és mathfp könyvtárakat, amelyek nem használt kísérleti kódot tartalmaztak.

Forrás: opennet.ru

Hozzászólás