Rilascio della libreria standard C PicoLibc 1.8.9

È stato rilasciato la versione 1.8.9 della libreria standard C PicoLibc, sviluppata da Keith Packard (leader del progetto X.Org) per l'uso in dispositivi embedded con spazio di archiviazione e memoria limitati. Durante lo sviluppo, parte del codice è stata presa in prestito dalla libreria newlib del progetto Cygwin e AVR Libc, sviluppata per i microcontrollori Atmel AVR. Il codice PicoLibc è distribuito con licenza BSD. È supportata la compilazione della libreria per le architetture ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch e OpenRisc.

Inizialmente, il progetto è stato sviluppato con il nome "newlib-nano" ed era mirato a rielaborare alcune funzioni di Newlib ad alto consumo di risorse, che era problematico utilizzare su dispositivi embedded con poca RAM. Ad esempio, in PicoLibc le funzioni stdio sono state sostituite con una versione compatta della libreria avrlibc. Il codice è stato anche ripulito dai componenti non utilizzati nella compilazione per dispositivi embedded non distribuiti con licenza BSD. È stata aggiunta una versione semplificata del codice di inizializzazione (crt0), e l'implementazione delle chiamate è stata convertita da 'struct _reent' al meccanismo TLS (thread-local storage). È stato utilizzato lo strumento Meson per la compilazione.

Nel nuovo rilascio:

  • È stata aggiunta la supporto per le architetture LoongArch, OpenRISC e LatticMico32.
  • È stata proposta un'implementazione del file di intestazione uchar.h, che è apparso nello standard C11.
  • È stata aggiunta l'opzione nano-malloc-clear-freed per pulire la memoria liberata dopo l'esecuzione di free() o realloc().
  • È stata implementata la possibilità di utilizzare clang multilib sui sistemi ARM64.
  • È stato fatto il passaggio al nuovo strumento picolibc-ci-tools per la compilazione automatica nei sistemi di integrazione continua.
  • Per l'architettura MIPS è stata implementata la supporto per la tecnologia "semihosting", che consente al codice eseguito in un ambiente di debugger o emulatore di utilizzare i meccanismi di input/output del sistema host.
  • Per i processori Xtensa è stata aggiunta la supporto per picocrt e semihost.
  • Sono state aggiunte impostazioni per l'uso con CoreBoot.
  • È stata aggiunta la funzione memset_explicit(), che è apparsa nello standard C23.
  • Le tabelle di conversione dei registri dei simboli sono state aggiornate alla specifica Unicode 15.1.0.
  • Le funzioni asnprintf() e vasnprintf() sono state trasferite dalla libreria newlib.
  • È stata aggiunta la supporto per l'emulatore FVP (Fixed Virtual Platforms), sviluppato da ARM.
  • È stata aggiunta la supporto per le versioni precedenti del compilatore GCC (precedenti alla 4.4).
  • Le implementazioni di iconv e locale sono state sostituite con versioni più compatte che utilizzano codice comune per la gestione delle codifiche.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster