PicoLibc 1.8.9 Versión da biblioteca estándar C

Publicouse o lanzamento da biblioteca C estándar PicoLibc 1.8.9, desenvolvida por Keith Packard (líder do proxecto X.Org) para o seu uso en dispositivos incorporados con almacenamento e memoria RAM limitados. Durante o desenvolvemento, parte do código foi tomado prestado da biblioteca newlib do proxecto Cygwin e AVR Libc, desenvolvido para microcontroladores Atmel AVR. O código PicoLibc distribúese baixo a licenza BSD. A montaxe da biblioteca é compatible con arquitecturas ARM (32 bits), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch e OpenRisc.

Inicialmente, o proxecto foi desenvolvido baixo o nome de "newlib-nano" e tiña como obxectivo reelaborar algunhas das funcións de Newlib, que usaban un gran número de recursos, que eran problemáticas para usar en dispositivos integrados con pouca memoria RAM. Por exemplo, en PicoLibc as funcións stdio substitúense por unha versión compacta da biblioteca avrlibc. O código tamén se borra de compoñentes non utilizados no conxunto do dispositivo incorporado que non se proporcionan baixo a licenza BSD. Engadiuse unha versión simplificada do código de inicialización (crt0) e a implementación das chamadas foi transferida de 'struct _reent' ao mecanismo TLS (almacenamento local de fíos). O conxunto de ferramentas Meson úsase para a montaxe.

Na nova versión:

  • Engadido soporte para arquitecturas LoongArch, OpenRISC e LatticMico32.
  • Proponse unha implementación do ficheiro de cabeceira uchar.h introducido no estándar C11.
  • Engadiuse a configuración nano-malloc-clear-freed para borrar a memoria liberada despois de free() ou realloc().
  • Implementouse a capacidade de usar clang multilib en sistemas ARM64.
  • Completouse a transición ao novo conxunto de ferramentas picolibc-ci-tools para a montaxe automática en sistemas de integración continua.
  • A arquitectura MIPS admite a tecnoloxía "semihosting", que permite que o código executado nun ambiente depurador ou emulador utilice os mecanismos de E/S do sistema host.
  • Engadiuse compatibilidade con picocrt e semihost para procesadores Xtensa.
  • Engadiuse a configuración para usar con CoreBoot.
  • Engadida a función memset_explicit(), introducida no estándar C23.
  • Actualizáronse as táboas de conversión de maiúsculas e minúsculas á especificación Unicode 15.1.0.
  • As funcións asnprintf() e vasnprintf() foron movidas da biblioteca newlib.
  • Engadido soporte para o emulador FVP (Fixed Virtual Platforms) desenvolvido por ARM.
  • Engadiuse soporte para versións antigas do compilador GCC (maior que a 4.4).
  • As implementacións iconv e locais foron substituídas por versións máis compactas que usan código común para traballar con codificacións.

Fonte: opennet.ru

Engadir un comentario