PicoLibc la biblioteca C para sistemas embebidos llega a su version 1.8.6
La nueva versión de PicoLibc 1.8.6 ya fue liberada y en este nuevo lanzamiento se han implementado diversas mejoras tales como las de optimización, limpieza de código, también se ha mejorado el soporte para nuevas plataformas, correcciones de errores y más.
Para quienes desconocen de PicoLibc, deben saber que esta es una biblioteca C diseñada específicamente para su uso en dispositivos integrados con recursos limitados, como microcontroladores y sistemas embebidos. PicoLibc ha experimentado importantes mejoras y optimizaciones a lo largo de su desarrollo.
Se ha eliminado todo el código no licenciado bajo BSD, lo que simplifica la situación con respecto a la licencia del proyecto. Además, la implementación de subprocesos locales se ha trasladado al mecanismo TLS (almacenamiento local de subprocesos), y se activa una versión compacta de stdio por defecto, basada en el código de avrlibc.
Principales novedades de PicoLibc 1.8.6
En esta nueva versión que se presenta de PicoLibc 1.8.6 uno de sus cambios más importantes, la transferencia de los cambios de Newlib 4.4.0 con lo cual se ha ampliado el soporte para datos del tipo «long double» en arquitecturas como i386, RISC-V, Aarch64 y x86_64, asi como también la capacidad de usar máscaras al insertar directorios
Además de ello, en PicoLibc 1.8.6 se ha ampliado el soporte para diferentes arquitecturas, ya que se ha añadido el soporte para los procesadores Xtensa, también para las plataformas SPARC de 32 bits y la arquitectura SuperH RISC, lo que amplía el alcance de PicoLibc a una variedad más amplia de dispositivos y sistemas integrados.
Otro de los aspectos destacados de esta nueva versión, es la optimización de tamaño y rendimiento, pues se ha introducido la opción «-Dfast-bufio=true» para mejorar la eficiencia de lectura y escritura al utilizar bufio y además los controladores printf se han separado en archivos individuales, lo que ayuda a reducir el tamaño al vincularse.
La nueva versión de PicoLibc 1.8.6 también incluye la optimización de funciones y limpieza de código, ya que se ha optimizado el rendimiento mediante la implementación de funciones en línea (gnu_inline) en lugar de las normales para la mayoría de las funciones de fenv. Se han limpiado las funciones públicas en línea para compartir un mecanismo común para usar la semántica gnu_inline, lo que garantiza que no existan declaraciones estáticas en línea en los encabezados de API públicos que deben ser símbolos de enlace externo.
Por otra parte, se ha creado una implementación alternativa de ctype que mejora la eficiencia al no utilizar la matriz ctype y realizar comparaciones directas de valores (sólo funciona cuando picolibc está limitado a ASCII) y se ha incorporado soporte para extensiones RISC-V Zfinx/Zdinx.
De los demás cambios que se destacan:
- Mejoras en la depuración y seguimiento de pila: Se ha mejorado el seguimiento de pila al depurar código de excepción en sistemas RISC-V, lo que facilita la identificación y resolución de problemas en este tipo de sistemas.
- Se agregaron símbolos «__eh_*» a picolibc.ld para LLVM libunwind.
- Se solucionaron un montón de errores de fmemopen
- Se brindó soporte para plataformas de destino con tipos de punto flotante no típicos, que ahora se reflejan en tipos de 32, 64, 80 y 128 bits en código picolibc.
- Se añadió el soporte SuperH, incluida la infraestructura de prueba.
- Se mejoró el seguimiento de la pila del depurador en el código de excepción risc-v.
- Se corrigió el uso de cmake de las variables FORMAT_
- Elimine la definición explícita _POSIX_C_SOURCE en zephyr/zephr.cmake.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Comenzar a utilizar Picolibc
Para poder comenzar a utilizar Picolibc, deben saber que este hace uso del sistema de compilación Meson para compilar para varias plataformas de hardware en un host Linux usando GCC. Es por ello que deben contar con Meson como parte del entorno de desarrollo, además de que deben contar con Python 3 y Ninja instalados. Para ello pueden consultar la guía de ello en el siguiente enlace.
Finalmente para poder obtener el código de Picolibc lo pueden hacer desde el siguiente enlace, donde podrán encontrar la documentación necesaria.
O de igual forma pueden consultar la siguiente guía que encontré en la red y tiene información detallada.