Utgivelsen av standard C-biblioteket PicoLibc 1.8.9, utviklet av Keith Packard (leder av X.Org-prosjektet) for bruk på innebygde enheter med begrenset lagring og RAM, har blitt publisert. Under utviklingen ble en del av koden lånt fra newlib-biblioteket fra Cygwin-prosjektet og AVR Libc, utviklet for Atmel AVR-mikrokontrollere. PicoLibc-koden distribueres under BSD-lisensen. Biblioteksammenstilling støttes for ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch og OpenRisc arkitekturer.
Opprinnelig ble prosjektet utviklet under navnet "newlib-nano" og var rettet mot å omarbeide noen av de ressurskrevende funksjonene til Newlib, som var problematiske å bruke på innebygde enheter med lite RAM. For eksempel, i PicoLibc er stdio-funksjonene erstattet med en kompakt versjon fra avrlibc-biblioteket. Koden slettes også for komponenter som ikke brukes i den innebygde enhetssammenstillingen som ikke leveres under BSD-lisensen. En forenklet versjon av initialiseringskoden (crt0) er lagt til, og implementeringen av samtaler er overført fra 'struct _reent' til TLS-mekanismen (thread-local storage). Meson-verktøysettet brukes til montering.
I den nye utgivelsen:
- Lagt til støtte for LoongArch, OpenRISC og LatticMico32 arkitekturer.
- En implementering av uchar.h header-filen introdusert i C11-standarden er foreslått.
- Lagt til nano-malloc-clear-freed-innstilling for å tømme minne frigjort etter free() eller realloc().
- Implementerte muligheten til å bruke clang multilib på ARM64-systemer.
- Overgangen til det nye picolibc-ci-tools verktøysettet for automatisk montering i kontinuerlige integrasjonssystemer er fullført.
- MIPS-arkitekturen støtter «semihosting»-teknologi, som gjør at kode kjører i et debugger- eller emulatormiljø for å bruke vertssystemets I/O-mekanismer.
- Lagt til støtte for picocrt og semihost for Xtensa-prosessorer.
- Lagt til innstillinger for bruk med CoreBoot.
- Lagt til funksjonen memset_explicit(), introdusert i C23-standarden.
- Sakskonverteringstabeller er oppdatert til Unicode-spesifikasjon 15.1.0.
- Funksjonene asnprintf() og vasnprintf() har blitt flyttet fra newlib-biblioteket.
- Lagt til støtte for FVP (Fixed Virtual Platforms) emulator utviklet av ARM.
- Lagt til støtte for eldre versjoner av GCC-kompilatoren (eldre enn 4.4).
- Implementeringene iconv og locale er erstattet med mer kompakte versjoner som bruker vanlig kode for å jobbe med kodinger.
Kilde: opennet.ru
