Byla zveřejněna verze standardní C knihovny PicoLibc 1.8.9, kterou vyvíjí Keith Packard (vedoucí projektu X.Org) pro použití na vestavných zařízeních s omezenou velikostí trvalého úložiště a operační paměti. Při vývoji byla část kódu převzata z knihovny newlib projektu Cygwin a AVR Libc, vyvíjené pro mikrokontroléry Atmel AVR. Kód PicoLibc je distribuován pod licencí BSD. Podporováno je sestavení knihovny pro architektury ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch a OpenRisc.
Projekt byl původně vyvíjen pod názvem „newlib-nano“ a měl za cíl optimalizovat některé výpočetně náročné funkce Newlib, které bylo problematické použít na vestavných zařízeních s malou RAM. Například v PicoLibc byly funkce stdio nahrazeny kompaktní verzí z knihovny avrlibc. Kód byl také zbaven nepoužívaných komponent v rámci sestavení pro vestavná zařízení, které nejsou dodávány pod licencí BSD. Přidána byla zjednodušená varianta inicializačního kódu (crt0) a implementace volání byla převedena ze 'struct _reent' na TLS (thread-local storage). K sestavení byl použit nástroj Meson.
V novém vydání:
- Byla přidána podpora architektur LoongArch, OpenRISC a LatticMico32.
- Byla navržena implementace hlavičkového souboru uchar.h, který se objevil ve standardu C11.
- Byla přidána možnost nastavení nano-malloc-clear-freed pro vyčištění paměti uvolněné po provedení free() nebo realloc().
- Byla implementována možnost použití clang multilib na systémech ARM64.
- Byl uskutečněn přechod na nový nástroj picolibc-ci-tools pro automatickou kompilaci v systémech kontinuální integrace.
- Pro architekturu MIPS byla implementována podpora technologie „semihosting“, která umožňuje kódu běžícímu v prostředí ladění nebo emulátoru používat vstupní/výstupní mechanismy hostitelského systému.
- Pro procesory Xtensa byla přidána podpora picocrt a semihost.
- Byla přidána nastavení pro použití s CoreBoot.
- Byla přidána funkce memset_explicit(), která se objevila ve standardu C23.
- Tabulky pro převod znakových registrů byly aktualizovány na specifikaci Unicode 15.1.0.
- Z knihovny newlib byly přeneseny funkce asnprintf() a vasnprintf().
- Byla přidána podpora emulátoru FVP (Fixed Virtual Platforms), vyvíjeného společností ARM.
- Byla přidána podpora starších verzí překladače GCC (starších než 4.4).
- Implementace iconv a locale byly nahrazeny kompaktnějšími variantami, které využívají společný kód pro práci s kódováním.
Zdroj: opennet.ru
