Keith Packard, sviluppatore attivo di Debian, leader del progetto X.Org e creatore di numerosi estensioni X, tra cui XRender, XComposite e XRandR, rilascio della nuova libreria standard C , 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 del progetto Cygwin e , sviluppata per i microcontrollori Atmel AVR. Il codice di PicoLibc è 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 (). È 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 "" 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 , 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
