Megjelent a PicoLibc 1.8.9-es verzió, amelyet Keith Packard (az X.Org projekt vezetője) fejlesztett beágyazott eszközök számára, korlátozott állandó tárolókapacitással és RAM-mel. A fejlesztés során a kód egy része a newlib könyvtárból származik, amely a Cygwin és az AVR Libc projektek számára készült az Atmel AVR mikrovezérlőkhöz. A PicoLibc kódja BSD licenc alatt érhető el. Támogatott az ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch és OpenRisc architektúrák verziójának összeállítása.
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:
- Támogatás került hozzáadásra a LoongArch, OpenRISC és LatticMico32 architektúrákhoz.
- Javasolták az uchar.h fejlécfájl megvalósítását, amely a C11 szabványban jelent meg.
- Hozzáadásra került a nano-malloc-clear-freed beállítás a szabadított memória törlésére a free() vagy realloc() végrehajtása után.
- Megvalósítható a clang multilib használata ARM64 rendszereken.
- Átálltak az új picolibc-ci-tools eszköz készletre a folyamatos integrációs rendszerek automatikus összeállításához.
- A MIPS architektúrára megvalósult a 'semihosting' technológia támogatása, amely lehetővé teszi a debugger vagy emulátor környezetében futó kód számára, hogy kihasználja a host rendszer I/O mechanizmusait.
- Xtensa processzorokhoz hozzáadták a picocrt és semihost támogatást.
- Beállítások kerültek hozzáadásra a CoreBoot használatához.
- Hozzáadták a memset_explicit() funkciót, amely a C23 szabványban jelent meg.
- A karakterregiszter átalakító táblázatok frissítve lettek az Unicode 15.1.0 specifikációra.
- Az newlib könyvtárból átvitték az asnprintf() és vasnprintf() funkciókat.
- Támogatás került hozzáadásra az ARM által fejlesztett FVP (Fixed Virtual Platforms) emulátorhoz.
- Támogatás került hozzáadásra a régebbi GCC fordítóverziókhoz (4.4 verzió előtt).
- Az iconv és locale implementációk kompaktabb változatokra lettek cserélve, ahol közös kódot használnak a karakterkódolás kezelésére.
Forrás: opennet.ru
