A szabványos C könyvtár PicoLibc kiadása 1.4.7

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, közzétett a szabványos C könyvtár kiadása PicoLibc 1.4.7, 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.

Kezdetben a projektet „newlib-nano” néven fejlesztették ki, és a Newlib erőforrás-igényes funkcióinak átdolgozására irányult, amelyek használata nehézkes volt a kis RAM-mal rendelkező beágyazott eszközökön. Például az stdio függvényeket az avrlibc könyvtár kompakt verziójára cserélték. A kódot megtisztították a nem BSD-licenccel rendelkező összetevőktől is, amelyeket nem használtak a beágyazott buildben. Az inicializálási kód (crt0) egyszerűsített változata hozzáadásra került, és a helyi szálak megvalósítása átkerült a 'struct _reent'-ről a TLS mechanizmusba (szál-helyi tárhely). Az összeszereléshez a Meson szerszámkészletet használják.

Az új kiadásban:

  • Hozzáadtuk a segítségével történő építési képességet matematikailag igazolt fordítóprogram CompCert.
  • Hozzáadott támogatás a Clang fordítóhoz.
  • A „gamma” függvény viselkedése összhangba került a Glibc viselkedésével.
  • A nano-malloc megvalósítás biztosítja a visszaküldött memória törlését.
  • A nano-realloc jobb teljesítménye, különösen a szabad blokkok egyesítésénél és a kupac méretének bővítésekor.
  • Hozzáadott egy tesztkészletet a malloc megfelelő működésének ellenőrzésére.
  • Továbbfejlesztett támogatás a Windows platformhoz, és a mingw eszközkészlettel való építés lehetősége.
  • Az ARM rendszereken, ha elérhető, a TLS (Thread-Local Storage) hardverregiszter engedélyezve van.

Forrás: opennet.ru