Megjelent a PicoLibc 1.8.6 szabvány C könyvtár, amelyet Keith Packard (az X.Org projekt vezetője) fejlesztett beágyazott eszközök számára, amelyek korlátozott állandó tároló- és memóriamérettel rendelkeznek. A fejlesztés során a kód egy része az újlib könyvtárból származik, amely a Cygwin projekt és az AVR Libc számára készült, amelyet Atmel AVR mikrokontrollerekhez fejlesztettek. A PicoLibc kódja BSD licenc alatt terjed. A könyvtár építése támogatott ARM (32-bites), Aarch64, i386, RISC-V, x86_64, m68k és PowerPC architektúrákra.
A projekt eredetileg a „newlib-nano” néven indult, és a Newlib néhány erőforrásigényes funkciójának újragondolására összpontosított, amelyeket nehéz volt használni beágyazott eszközökön, kis RAM-mal. Például a PicoLibc stdio funkcióit az avrlibc könyvtár kompakt változata váltotta fel. A kód eltávolította azokat a nem BSD licenc alatt álló, a beágyazott eszközökhöz nem használt összetevőket is. Egyszerűsített inicializáló kód (crt0) került hozzáadásra, és a hívások megvalósítása a ‘struct _reent’ -ről a TLS (szál-specifikus tárolás) mechanizmusra lett átírva. A Meson eszköz készletét használták az összeállításhoz.
Az új kiadásban:
- Átvitték a Newlib 4.4.0-ból származó változtatásokat, például a „long double” típus támogatását i386, RISC-V, Aarch64 és x86_64 architektúrákon, a RISC-V Zfinx/Zdinx kiterjesztések támogatását, a könyvtárak beszúrásánál felhasználható maszkok lehetőségét, Xtensa processzorokhoz való portot, valamint a printf kezelők külön fájlokba való kiemelését a linkelési méret csökkentése érdekében.
- A picolibc.ld-hez hozzáadták az „__eh_*” szimbólumokat az LLVM libunwind számára.
- Bevezették a 32-bites SPARC rendszerek tesztelési támogatását.
- Támogatást nyújtanak a céleszközök számára, amelyek nem tipikus lebegőpontos típusokat használnak, amelyek most már 32-, 64-, 80- és 128-bites típusokként kerülnek megjelenítésre a picolibc kódban.
- Támogatást kaptak a SuperH RISC architektúra.
- Javították a verem nyomkövetését a RISC-V rendszerek kivételkezelési kódjának hibakeresése során.
- Hozzáadva a „-Dfast-bufio=true” opció a bufio használatával végzett olvasás és írás hatékonyságának növelése érdekében.
- A nyilvános inline funkciók tisztítása a gnu_inline szemantika közös használatához.
- A teljesítmény növelése érdekében a fenv funkciók többsége gnu_inline inline funkciók használatára lett átkonvertálva a hagyományos helyett.
- Létrehoztak egy alternatív ctype megvalósítást, amely nem használ ctype tömböt, és közvetlen érték összehasonlítást végez.
Forrás: opennet.ru
