È disponibile la libreria C standard PicoLibc 1.1

Keith Packard, sviluppatore attivo di Debian, leader del progetto X.Org e creatore di numerosi X-extension, tra cui XRender, XComposite e XRandR, ha presentato lancio della nuova libreria standard C PicoLibc 1.1, sviluppata per applicazioni su dispositivi embedded con spazio di memoria permanente e RAM limitati. Durante lo sviluppo, parte del codice è stata presa dalla libreria newlib dal progetto Cygwin e AVR Libc, sviluppata per microcontrollori Atmel AVR. Il codice di PicoLibc è distribuito è sotto licenza BSD. È supportata la compilazione della libreria per architetture ARM (32-bit), i386, RISC-V, x86_64 e PowerPC.

Kit Packard ha iniziato lo sviluppo dopo non essere riuscito a trovare una valida alternativa a Libc da utilizzare su dispositivi embedded con poca RAM. Il progetto è in sviluppo dall'anno scorso. Inizialmente, il progetto rappresentava una variante di newlib, in cui le funzioni stdio erano state sostituite da una versione compatta di avrlibc (stdio in newlib non soddisfaceva per l'elevato 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 esaminato lo stato delle implementazioni libc e ha concluso che con piccole modifiche la combinazione di newlib e avrlibc potrebbe diventare una buona soluzione universale. Inizialmente, il progetto era sviluppato con il nome "newlib-nano", ma per evitare confusione con la libreria Newlib è stato rinominato 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 per la compilazione di dispositivi embedded), il che ha semplificato notevolmente la situazione con la licenza del progetto. L'implementazione dei thread locali è stata trasferita da ‘struct _reent’ al meccanismo TLS (thread-local storage). È attivata per impostazione predefinita una versione compatta di stdio, derivata dal codice della libreria avrlibc (le inserzioni assembler specifiche per ATmel sono state riscritte in C). Per la compilazione è stato utilizzato lo strumento Meson, permettendo di non dipendere dagli script di compilazione di newlib e semplificando il porting delle modifiche da newlib. È stata aggiunta una versione semplificata del codice di inizializzazione (crt0), allegata al file eseguibile e eseguita prima di passare il controllo alla funzione main().

Nella versione Picolibc 1.1:

  • È stata aggiunta una libreria ausiliaria per supportare 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, sono stati aggiunti interfacce standardizzate POSIX di input/output stdio in tinystdio, comprese le funzioni fopen e fdopen, oltre al binding di stdin/stdout/stderr a specifici descrittori di file definiti in POSIX;
  • Sono state trasferite recenti modifiche dalla base di codice di newlib. Inclusi stub libm per fenv.h, che possono essere utilizzati su sistemi senza supporto per i 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 contenevano codice sperimentale non utilizzato.

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