Biblioteca C estándar PicoLibc 1.1 disponible

Keith Packard, desarrollador activo de Debian, líder del proyecto X.Org y creador de muchas extensiones X, incluidas XRender, XComposite y XRandR, presentado lanzamiento de una nueva biblioteca C estándar PicoLibc 1.1, desarrollado para su uso en dispositivos integrados con almacenamiento permanente y RAM limitados. Durante el desarrollo, parte del código fue tomado prestado de la biblioteca. nueva biblioteca del proyecto Cygwin y Librería AVR, desarrollado para microcontroladores Atmel AVR. código picolibc distribuido por bajo licencia BSD. El ensamblaje de la biblioteca es compatible con las arquitecturas ARM (32 bits), i386, RISC-V, x86_64 y PowerPC.

Keith Packard comenzó el desarrollo después de no poder encontrar una opción de Libc decente que pudiera usarse en dispositivos integrados con poca RAM. El proyecto se viene desarrollando desde el año pasado. En la primera etapa, el proyecto era una variante de newlib, cuyas funciones de stdio fueron reemplazadas por una versión compacta de avrlibc (stdio en newlib no era adecuado por su alto consumo de recursos). Dado que el trabajo actual de Keith implica un trabajo continuo con la arquitectura RISC-V y el desarrollo de herramientas para dispositivos integrados, recientemente revisó el estado de las implementaciones de libc y concluyó que con algunos ajustes, la combinación de newlib y avrlibc podría ser una buena solución de propósito general. solución. Inicialmente, el proyecto se desarrolló con el nombre “newlib-nano”, pero para evitar confusiones con la biblioteca Newlib pasó a llamarse PicoLibc.

En su forma actual, Picolibc ya ha trabajado para eliminar todo el código que no se suministra bajo una licencia BSD (este código no se usó cuando se construyó para dispositivos integrados), lo que simplificó significativamente la situación con la licencia para el proyecto. La implementación de transmisiones locales se ha movido de 'struct _reent' al mecanismo TLS (almacenamiento local de subprocesos). La versión compacta de stdio, tomada del código de la biblioteca avrlibc, está activada de forma predeterminada (las inserciones del ensamblador específicas de ATmel se reescriben en C). Para el ensamblaje se utilizó el kit de herramientas Meson, lo que permitió no estar vinculado a los scripts de ensamblaje de newlib y simplificar la transferencia de cambios desde newlib. Se agregó una versión simplificada del código de inicialización (crt0), adjunta al archivo ejecutable y ejecutada antes de que el control se transfiera a la función main().

En Picolibc versión 1.1:

  • Se agregó una biblioteca auxiliar para respaldar la tecnología "semihospedaje"permite que el código que se ejecuta en un entorno de depuración o emulador utilice los mecanismos de E/S del sistema host;
  • Para los sistemas que admiten las llamadas del sistema de apertura, cierre, lectura y escritura, tinystdio agrega interfaces de E/S POSIX stdio estandarizadas, incluidas las funciones fopen y fdopen, además de vincular stdin/stdout/stderr a descriptores de archivos definidos por POSIX;
  • Se han transferido los cambios recientes del código base de newlib. Incluyendo stubs libm agregados para fenv.h, que se puede utilizar en sistemas sin soporte de punto flotante;
  • Se agregó un ejemplo de creación de la aplicación "Hola mundo" con picolibc para sistemas ARM y RISC-V;
  • Se eliminaron los directorios newlib, libm y mathfp, que contenían código experimental no utilizado.

Fuente: opennet.ru

Añadir un comentario