Keith Packard, desarrollador activo de Debian, líder del proyecto X.Org y creador de numerosas extensiones X, incluyendo XRender, XComposite y XRandR, lanzamiento de la biblioteca estándar de C , 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 del proyecto Cygwin y , desarrollada para microcontroladores de Atmel AVR. El código de PicoLibc 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.
Inicialmente, el proyecto se desarrolló bajo el nombre «newlib-nano» y estaba destinado a rehacer algunas funciones de Newlib que consumían muchos recursos y que eran problemáticas de usar en dispositivos integrados con poca RAM. Por ejemplo, las funciones de stdio fueron reemplazadas por una versión compacta de la biblioteca avrlibc. El código también fue limpiado de componentes no utilizados en la compilación para dispositivos integrados que no se suministraban bajo la licencia BSD. Se agregó una versión simplificada del código de inicialización (crt0), y la implementación de flujos locales fue trasladada de ‘struct _reent’ al mecanismo TLS (). Se utilizó la herramienta Meson para la compilación.
En esta nueva versión:
- Se añadió la capacidad de compilación utilizando matemáticamente verificado .
- Se añadió soporte para el compilador Clang.
- El comportamiento de la función ‘gamma’ ha sido ajustado para coincidir con el comportamiento de Glibc.
- En la implementación de nano-malloc se garantiza la limpieza obligatoria de la memoria devuelta.
- Se mejoró el rendimiento de nano-realloc, especialmente al realizar operaciones de fusión de bloques libres y ampliación del tamaño del montón.
- Se añadió un conjunto de pruebas para comprobar la corrección del funcionamiento de malloc.
- Se mejoró el soporte para la plataforma Windows y se añadió la capacidad de compilación utilizando la herramienta mingw.
- En los sistemas ARM se utiliza el registro de hardware TLS (Thread-Local Storage) si está disponible.
Fuente: opennet.ru
