A fost lansată versiunea 1.8.9 a bibliotecii standard C PicoLibc, dezvoltată de Keith Packard (liderul proiectului X.Org) pentru utilizarea pe dispozitive încorporate cu spațiu de stocare și memorie RAM limitate. În dezvoltare, o parte din cod a fost preluată din biblioteca newlib a proiectului Cygwin și AVR Libc, dezvoltată pentru microcontrolerele Atmel AVR. Codul PicoLibc este distribuit sub licența BSD. Este susținută compilarea bibliotecii pentru arhitecturi ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch și OpenRisc.
Inițial, proiectul a fost dezvoltat sub numele „newlib-nano” și a fost destinat să reproiecteze unele funcții consumatoare de resurse din Newlib, care erau greu de utilizat pe dispozitive încorporate cu memorie RAM mică. De exemplu, în PicoLibc, funcțiile stdio au fost înlocuite cu o variantă compactă din biblioteca avrlibc. Codul a fost, de asemenea, curățat de componentele neutilizate în compilarea pentru dispozitive încorporate, care nu sunt livrate sub licența BSD. A fost adăugată o variantă simplificată a codului de inițializare (crt0), iar implementarea apelurilor a fost transformată din „struct _reent” în mecanismul TLS (thread-local storage). Pentru compilare a fost folosit instrumentarul Meson.
În noua versiune:
- A fost adăugat suport pentru arhitecturile LoongArch, OpenRISC și LatticMico32.
- A fost propusă implementarea fișierului de antet uchar.h, care a apărut în standardul C11.
- A fost adăugată opțiunea nano-malloc-clear-freed pentru curățarea memoriei eliberate după execuția funcțiilor free() sau realloc().
- A fost implementată capacitatea de utilizare a clang multilib pe sistemele ARM64.
- S-a realizat trecerea la noul instrumentar picolibc-ci-tools pentru compilarea automată în sistemele de integrare continuă.
- Pentru arhitectura MIPS, a fost implementat suportul pentru tehnologia „semihosting” care permite codului rulat în medii de depanare sau emulatori să folosească mecanismele de intrare/ieșire ale sistemului gazdă.
- Pentru procesoarele Xtensa, a fost adăugat suportul pentru picocrt și semihost.
- Au fost adăugate setări pentru utilizarea cu CoreBoot.
- A fost adăugată funcția memset_explicit(), apărută în standardul C23.
- Tabelele de conversie a registrului caracterelor au fost actualizate la specificația Unicode 15.1.0.
- Funcțiile asnprintf() și vasnprintf() au fost mutate din biblioteca newlib.
- A fost adăugat suport pentru emulatorul FVP (Fixed Virtual Platforms), dezvoltat de ARM.
- A fost adăugat suport pentru versiunile vechi ale compilatorului GCC (sub 4.4).
- Implementările iconv și locale au fost înlocuite cu variante mai compacte, care utilizează cod comun pentru lucru cu codificările.
Sursa: opennet.ro
