È disponibile la libreria standard C PicoLibc 1.1

Keith Packard, sviluppatore attivo di Debian, leader del progetto X.Org e creatore di numerosi estensioni X, tra cui XRender, XComposite e XRandR, ha presentato rilascio della nuova libreria standard C PicoLibc 1.1, sviluppata per l'uso su dispositivi embedded con spazio di archiviazione permanente e memoria RAM limitati. Durante lo sviluppo, parte del codice è stato preso dalla libreria newlib del progetto Cygwin e AVR Libc, sviluppata per i microcontrollori Atmel AVR. Il codice di PicoLibc distribuito è concesso in licenza BSD. È supportata la compilazione della libreria per le architetture ARM (32-bit), i386, RISC-V, x86_64 e PowerPC.

Kit Packard ha iniziato a sviluppare dopo non essere riuscito a trovare una valida alternativa a Libc da utilizzare su dispositivi embedded con poca RAM. Il progetto è in evoluzione dall'anno scorso. Nella prima fase, il progetto consisteva in un'alternativa a newlib, in cui le funzioni stdio sono state sostituite con una versione compatta di avrlibc (stdio in newlib non era soddisfacente per l'alto consumo di risorse). Poiché l'attività attuale di Kit è legata al lavoro costante con l'architettura RISC-V e allo sviluppo di strumenti per dispositivi embedded, ha recentemente riesaminato lo stato delle implementazioni di libc e ha concluso che con qualche piccola modifica la combinazione di newlib e avrlibc può diventare una buona soluzione universale. Inizialmente, il progetto si è sviluppato sotto il nome di "newlib-nano", ma per evitare confusione con la libreria Newlib è stato ribattezzato in PicoLibc.

Nella sua forma attuale, in Picolibc è già stato effettuato un lavoro di rimozione di tutto il codice fornito non sotto licenza BSD (questo codice non è stato utilizzato nella compilazione per dispositivi embedded), il che ha semplificato notevolmente la situazione con la licenza del progetto. L'implementazione dei flussi locali è stata modificata da 'struct _reent' al meccanismo TLS (thread-local storage). È attivata di default la versione compatta di stdio, prelevata dal codice della libreria avrlibc (le inserzioni assembler specifiche per ATmel sono state riscritte in C). Per la compilazione è stato utilizzato l'ambiente di sviluppo Meson, che ha permesso di non essere legati agli script di compilazione di newlib e ha semplificato il trasferimento delle modifiche da newlib. È stata aggiunta una versione semplificata del codice di inizializzazione (crt0), allegato al file eseguibile e eseguito prima di passare il controllo alla funzione main().

Nella versione Picolibc 1.1:

  • È stata aggiunta una libreria di supporto per la tecnologia "semihosting" che consente al codice eseguito in un ambiente di debug o emulatore di utilizzare i meccanismi di input/output del sistema host;
  • Per i sistemi che supportano le chiamate di sistema open, close, read e write, in tinystdio sono stati aggiunti interfacce di input/output POSIX standardizzate per stdio, incluse le funzioni fopen e fdopen, nonché il binding di stdin/stdout/stderr a specifici descrittori di file definiti da POSIX;
  • Sono state trasferite recenti modifiche dalla base di codice di newlib, tra cui sono stati aggiunti stub per libm per fenv.h, utilizzabili su sistemi privi di supporto per calcoli in virgola mobile;
  • È stato aggiunto un esempio di compilazione dell'applicazione "Hello world" con picolibc per sistemi ARM e RISC-V;
  • Sono state rimosse le directory newlib, libm e mathfp, che contendono codice sperimentale non utilizzato.

Fonte: opennet.ru

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