È stato pubblicato il rilascio della libreria standard C PicoLibc 1.8.6, sviluppata da Keith Packard (Leader del progetto X.Org) per l'uso su dispositivi embedded con spazio di archiviazione permanente e memoria operativa limitati. Durante lo sviluppo, parte del codice è stato preso in prestito dalla libreria newlib del progetto Cygwin e AVR Libc, sviluppata per microcontrollori Atmel AVR. Il codice di PicoLibc è distribuito con licenza BSD. Viene supportata la compilazione della libreria per architetture ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k e PowerPC.
Inizialmente il progetto è stato sviluppato con il nome di «newlib-nano» ed era mirato a rielaborare alcune funzioni economiche di Newlib, che era difficile utilizzare su dispositivi embedded con poca RAM. Ad esempio, in PicoLibc le funzioni stdio sono state sostituite con una versione compatta dalla libreria avrlibc. Il codice è stato anche ripulito dalle componenti non utilizzate nella compilazione per i dispositivi embedded, fornite non con licenza BSD. È stata aggiunta una versione semplificata del codice di inizializzazione (crt0), e l'implementazione delle chiamate è stata trasferita dal ‘struct _reent’ al meccanismo TLS (thread-local storage). Per la compilazione è stato utilizzato lo strumento Meson.
Nel nuovo rilascio:
- Sono state trasferite modifiche da Newlib 4.4.0 come il supporto per il tipo «long double» sulle architetture i386, RISC-V, Aarch64 e x86_64, il supporto per le estensioni RISC-V Zfinx/Zdinx, la possibilità di utilizzare maschere durante l'inserimento di directory, l'implementazione di un port per processori Xtensa, e l'estrazione dei gestori printf in file separati per ridurre le dimensioni durante il linking.
- Nel picolibc.ld sono stati aggiunti i simboli «__eh_*» per LLVM libunwind.
- Supporto di test per sistemi SPARC a 32 bit è stato incluso.
- È stato garantito il supporto per piattaforme target con tipi di float non convenzionali, che ora si riflettono in tipi a 32, 64, 80 e 128 bit nel codice picolibc.
- È stato aggiunto il supporto per l'architettura RISC SuperH.
- Miglioramento del tracciamento dello stack durante il debugging del codice delle eccezioni su sistemi RISC-V.
- È stata aggiunta un'opzione «-Dfast-bufio=true» per migliorare l'efficienza nella lettura e scrittura utilizzando bufio.
- È stata effettuata una pulizia delle funzioni inline pubbliche per condividere la semantica gnu_inline.
- La maggior parte delle funzioni fenv è stata ottimizzata per l'uso di funzioni inline (gnu_inline) invece delle normali.
- È stata creata un'implementazione alternativa di ctype, in cui non viene utilizzato un array ctype e vi è un confronto diretto dei valori.
Fonte: opennet.ru
