Biblioteca C estàndard PicoLibc 1.1 disponible

Keith Packard, desenvolupador actiu de Debian, líder del projecte X.Org i creador de moltes extensions X, incloses XRender, XComposite i XRandR, introduït llançament d'una nova biblioteca estàndard C PicoLibc 1.1, desenvolupat per al seu ús en dispositius incrustats amb emmagatzematge permanent limitat i RAM. Durant el desenvolupament, part del codi es va agafar en préstec de la biblioteca newlib del projecte Cygwin i AVR Libc, desenvolupat per als microcontroladors Atmel AVR. Codi PicoLibc Distribuït per sota llicència BSD. El muntatge de la biblioteca és compatible amb arquitectures ARM (32 bits), i386, RISC-V, x86_64 i PowerPC.

Keith Packard va començar el desenvolupament després de no poder trobar una opció Libc decent que es pogués utilitzar en dispositius incrustats amb poca memòria RAM. El projecte es desenvolupa des de l'any passat. En la primera etapa, el projecte era una variant de newlib, les funcions de stdio en la qual es van substituir per una versió compacta d'avrlibc (stdio a newlib no era adequat per al seu alt consum de recursos). Atès que el treball actual de Keith implica un treball continu amb l'arquitectura RISC-V i el desenvolupament d'eines per a dispositius incrustats, recentment va revisar l'estat de les implementacions de libc i va concloure que amb una mica de retoc, la combinació de newlib i avrlibc podria ser una bona finalitat general. solució. Inicialment, el projecte es va desenvolupar amb el nom de "newlib-nano", però per evitar confusions amb la biblioteca Newlib va ​​ser rebatejat com a PicoLibc.

En la seva forma actual, Picolibc ja ha treballat per eliminar tot el codi que no s'ofereix sota una llicència BSD (aquest codi no es va utilitzar quan es va construir per a dispositius incrustats), cosa que ha simplificat significativament la situació amb la llicència del projecte. La implementació dels fluxos locals s'ha mogut de 'struct _reent' al mecanisme TLS (emmagatzematge local de fils). La versió compacta de stdio, manllevada del codi de la biblioteca avrlibc, s'activa per defecte (les insercions de l'assemblador específics d'ATmel es tornen a escriure en C). El conjunt d'eines Meson es va utilitzar per al muntatge, que va permetre no estar lligat als scripts de muntatge newlib i simplificar la transferència de canvis de newlib. S'ha afegit una versió simplificada del codi d'inicialització (crt0), adjunta al fitxer executable i executada abans que el control es transfereixi a la funció main().

A la versió 1.1 de Picolibc:

  • S'ha afegit una biblioteca auxiliar per donar suport a la tecnologia "semihosting"permet que el codi que s'executa en un entorn depurador o emulador utilitzi els mecanismes d'E/S del sistema amfitrió;
  • Per als sistemes que admeten les trucades de sistema d'obertura, tancament, lectura i escriptura, tinystdio afegeix interfícies d'E/S POSIX stdio estandarditzades, incloses les funcions fopen i fdopen, així com l'enllaç stdin/stdout/stderr als descriptors de fitxers definits per POSIX;
  • S'han transferit els canvis recents de la base de codi newlib. Incloent els talons libm afegits per fenv.h, que es pot utilitzar en sistemes sense suport de coma flotant;
  • S'ha afegit un exemple de creació de l'aplicació "Hello world" amb picolibc per a sistemes ARM i RISC-V;
  • S'han eliminat els directoris newlib, libm i mathfp, que contenien codi experimental no utilitzat.

Font: opennet.ru

Afegeix comentari