Wydanie standardowej biblioteki C PicoLibc 1.8.9.

Opublikowano wersję standardowej biblioteki C PicoLibc 1.8.9, rozwijanej przez Keitha Packarda (lidera projektu X.Org) do użycia w urządzeniach wbudowanych z ograniczonym rozmiarem pamięci trwałej i RAM. W trakcie rozwoju część kodu została zaadaptowana z biblioteki newlib z projektu Cygwin oraz AVR Libc, rozwijanej dla mikrokontrolerów Atmel AVR. Kod PicoLibc jest udostępniany na licencji BSD. Obsługiwane są kompilacje biblioteki dla architektur ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch i OpenRisc.

Początkowo projekt rozwijał się pod nazwą „newlib-nano” i był skierowany na przetworzenie niektórych zasobochłonnych funkcji Newlib, które były problematyczne do użycia na urządzeniach wbudowanych z niewielką pamięcią RAM. Na przykład w PicoLibc funkcje stdio zostały zastąpione kompaktową wersją z biblioteki avrlibc. Kod został również oczyszczony z nieużywanych komponentów związanych z buildem dla urządzeń wbudowanych, które nie były dostarczane na licencji BSD. Dodano uproszczoną wersję kodu inicjalizacji (crt0), a implementacja wywołań została przekształcona z „struct _reent” na mechanizm TLS (thread-local storage). Do budowy użyto narzędzi Meson.

W nowym wydaniu:

  • Dodano wsparcie dla architektur LoongArch, OpenRISC i LatticMico32.
  • Zaproponowano implementację pliku nagłówkowego uchar.h, wprowadzonego w standardzie C11.
  • Dodano opcję nano-malloc-clear-freed do czyszczenia pamięci zwolnionej po wywołaniu free() lub realloc().
  • Zrealizowano możliwość korzystania z clang multilib na systemach ARM64.
  • Zrealizowano przejście na nowe narzędzie picolibc-ci-tools do automatycznej kompilacji w systemach ciągłej integracji.
  • Dla architektury MIPS wprowadzono wsparcie technologii «semihosting», pozwalającej kodowi działającemu w środowisku debuggera lub emulatora korzystać z mechanizmów wejścia/wyjścia systemu gospodarza.
  • Dla procesorów Xtensa dodano wsparcie picocrt i semihost.
  • Dodano ustawienia do użycia z CoreBoot.
  • Dodano funkcję memset_explicit(), wprowadzonej w standardzie C23.
  • Tabele konwersji rejestru znaków zaktualizowano do specyfikacji Unicode 15.1.0.
  • Z biblioteki newlib przeniesiono funkcje asnprintf() i vasnprintf().
  • Dodano wsparcie dla emulatora FVP (Fixed Virtual Platforms), rozwijanego przez ARM.
  • Dodano wsparcie dla starszych wersji kompilatora GCC (starszych niż 4.4).
  • Implementacje iconv i locale zostały zastąpione bardziej kompaktowymi wersjami, wykorzystującymi wspólny kod do obsługi kodowań.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster