Elérhető a PicoLibc 1.1 standard C könyvtár

Keith Packard, a prominent developer of Debian, leader of the X.Org project, and creator of multiple X extensions including XRender, XComposite, and XRandR, bemutatott az új szabvány C könyvtár kiadása PicoLibc 1.1, amelyet beágyazott eszközökön való használatra fejlesztenek, korlátozott állandó tároló és RAM mérettel. A fejlesztés során a kód egy része a newlib a Cygwin projektből és AVR Libc, amely az Atmel AVR mikrokontrollerhez készült. A PicoLibc kódja terjesztésre kerül BSD licensz alatt áll. A könyvtár építése ARM (32-bit), i386, RISC-V, x86_64 és PowerPC architektúrákra támogatott.

Keith Packard akkor kezdett el dolgozni a projekten, amikor nem talált megfelelő Libc megoldást, amelyet beágyazott eszközökön, kis RAM-mel lehetett volna használni. A projekt tavaly óta fejlődik. Az első szakaszban a projekt a newlib egy verzióját jelentette, amelyben a stdio funkciókat avrlibc kompakt változatai váltották fel (a newlib stdio túl sok erőforrást használt). Mivel Keith jelenlegi tevékenysége szorosan kapcsolódik a RISC-V architektúrához és a beágyazott eszközökhöz szükséges eszközök fejlesztéséhez, nemrégiben felülvizsgálta a libc megvalósításának állapotát, és arra a következtetésre jutott, hogy a newlib és az avrlibc kombinációja, kis módosításokkal, jó univerzális megoldás lehet. A projekt eredetileg "newlib-nano" néven indult, de a Newlib könyvtárral való zűrzavar elkerülése érdekében PicoLibc-re nevezték át.

A jelenlegi formájában a Picolibc már elvégezte a nem BSD licenc alatt álló kód eltávolítását (ez a kód nem volt felhasználva beágyazott eszközöknél), ami jelentősen egyszerűsítette a projekt licencelési helyzetét. A helyi szálak megvalósítása a 'struct _reent'-ről TLS mechanizmusra váltott (szál-specifikus tárolás). Alapértelmezés szerint aktiválva van a kompakt stdio változat, amely az avrlibc kódjából származik (az Atmel-specifikus assembly beszúrásokat C nyelvre írták át). A Meson eszközkészletet használták a fordításhoz, lehetővé téve a newlib fordítási forgatókönyvekhez való kötődés elkerülését és a newlib-ből származó módosítások egyszerűsítését. Egy egyszerűsített inicializáló kód (crt0) került hozzáadásra, amely a végrehajtható fájlhoz csatlakozik és a main() függvény kezelésére való átadása előtt végrehajtódik.

A PicoLibc 1.1-es verziójában:

  • Hozzáadva egy segédkönyvtár a "semihosting«, amely lehetővé teszi a debugger vagy emulátor környezetében futó kód számára, hogy használja a gazda rendszer bemeneti/kimeneti mechanizmusait;
  • A tinystdio-hoz POSIX szabványos bemeneti/kimeneti interfészek, köztük az fopen és fdopen funkciók, valamint a stdin/stdout/stderr kötések hozzáadásra kerültek, amelyek a POSIX által definiált fájl leírókhoz kapcsolódnak;
  • A legutóbbi változások átkerültek a newlib kódalapból. Beleértve a libm állványok hozzáadását, amelyek fenv.h, amelyek használhatók lebegőpontos számítások támogatása nélküli rendszereken;
  • Hozzáadva egy Hello world alkalmazás összeállítási példája a picolibc-vel ARM és RISC-V rendszerekhez;
  • Eltávolítva a newlib, libm és mathfp mappák, amelyek nem használt kísérleti kódot tartalmaztak.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster