Está disponible la biblioteca estándar en C PicoLibc 1.1

Keith Packard, desarrollador activo de Debian, líder del proyecto X.Org y creador de numerosas extensiones X, incluyendo XRender, XComposite y XRandR, presentó lanzamiento de una nueva biblioteca estándar de C PicoLibc 1.1, desarrollada para ser utilizada en dispositivos embebidos con tamaño de almacenamiento permanente y memoria RAM limitados. Al desarrollar, parte del código se tomó de la biblioteca newlib del proyecto Cygwin y AVR Libc, desarrollada para microcontroladores de Atmel AVR. El código de PicoLibc se distribuye se publica bajo la licencia BSD. Se soporta la construcción de la biblioteca para arquitecturas ARM (32-bit), i386, RISC-V, x86_64 y PowerPC.

Keith Packard comenzó el desarrollo después de no poder encontrar una opción adecuada de Libc que pudiera utilizarse en dispositivos embebidos con poca RAM. El proyecto se ha estado desarrollando desde el año pasado. En la primera etapa, el proyecto representó una variante de newlib, cuyas funciones de stdio fueron reemplazadas por una versión compacta de avrlibc (el stdio en newlib no era adecuado debido a su alto consumo de recursos). Dado que la actividad actual de Keith está relacionada con un trabajo continuo con la arquitectura RISC-V y el desarrollo de herramientas para dispositivos embebidos, recientemente revisó el estado de las implementaciones de libc y concluyó que con algunas modificaciones, la combinación de newlib y avrlibc podría convertirse en una buena solución universal. Inicialmente, el proyecto se desarrolló bajo el nombre de “newlib-nano”, pero para evitar confusiones con la biblioteca Newlib, se cambió a PicoLibc.

En su estado actual, ya se ha trabajado en Picolibc para eliminar todo el código que no se proporciona bajo la licencia BSD (este código no se utilizó en la construcción para dispositivos embebidos), lo que simplificó significativamente la situación con la licencia del proyecto. La implementación de hilos locales se ha cambiado de ‘struct _reent’ al mecanismo TLS (almacenamiento local de hilos). Se activó por defecto una versión compacta de stdio, tomada del código de la biblioteca avrlibc (inserciones específicas de ATmel reescritas en C). Se utilizó la herramienta Meson para la construcción, lo que permitió no depender de los scripts de construcción de newlib y simplificó la transferencia de cambios de newlib. Se agregó una versión simplificada del código de inicialización (crt0), que se adjunta al archivo ejecutable y se ejecuta antes de pasar el control a la función main().

En la versión Picolibc 1.1:

  • Se añadió una biblioteca auxiliar para soportar la tecnología “semihosting«, permitiendo que el código, ejecutándose en un entorno de depuración o emulador, use los mecanismos de entrada/salida del sistema anfitrión;
  • Para sistemas que soportan llamadas al sistema open, close, read y write, se han añadido interfaces estándar de entrada/salida POSIX a tinystdio, incluyendo las funciones fopen y fdopen, así como la vinculación de stdin/stdout/stderr a descriptores de archivos definidos en POSIX;
  • Se han trasladado los cambios recientes de la base de código de newlib. Se han añadido también los stubs de libm para fenv.h, que se pueden utilizar en sistemas sin soporte para cálculos de punto flotante;
  • Se ha añadido un ejemplo de construcción de la aplicación "Hello world" con picolibc para sistemas ARM y RISC-V;
  • Se han eliminado los directorios newlib, libm y mathfp, que contenían código experimental no utilizado.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster