Wydanie standardowej biblioteki C PicoLibc 1.8.6

Opublikowano wersję standardowej biblioteki C PicoLibc 1.8.6, rozwijanej przez Keitha Packarda (lidera projektu X.Org) do zastosowań na urządzeniach wbudowanych z ograniczoną wielkością pamięci trwałej i RAM. Przy opracowywaniu część kodu została zaadaptowana z biblioteki newlib projektu Cygwin oraz AVR Libc, rozwijanej dla mikrokontrolerów Atmel AVR. Kod PicoLibc jest udostępniany na licencji BSD. Wspierana jest budowa biblioteki dla architektur ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k oraz PowerPC.

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:

  • Przeniesiono zmiany z Newlib 4.4.0, takie jak wsparcie dla typu „long double” na architekturach i386, RISC-V, Aarch64 i x86_64, wsparcie dla rozszerzeń RISC-V Zfinx/Zdinx, możliwość używania masek przy dodawaniu katalogów oraz realizację portu dla procesorów Xtensa, wydzielono obsługiwacze printf do oddzielnych plików w celu zmniejszenia rozmiaru podczas linkowania.
  • W pliku picolibc.ld dodano symbole „__eh_*” dla biblioteki LLVM libunwind.
  • Dodano testowe wsparcie dla 32-bitowych systemów SPARC.
  • Zapewniono wsparcie dla platform docelowych z nietypowymi typami zmiennoprzecinkowymi, które teraz są odzwierciedlane w typach 32-, 64-, 80- i 128-bitowych w kodzie picolibc.
  • Dodano wsparcie dla architektury RISC SuperH.
  • Ulepszono śledzenie stosu podczas debugowania kodu wyjątków w systemach RISC-V.
  • Dodano opcję „-Dfast-bufio=true” w celu zwiększenia wydajności przy odczycie i zapisie z użyciem bufio.
  • Przeprowadzono oczyszczenie publicznych funkcji inline dla wspólnej semantyki gnu_inline.
  • Większość funkcji fenv dla zwiększenia wydajności została przeniesiona na użycie funkcji inline (gnu_inline) zamiast tradycyjnych.
  • Stworzono alternatywną implementację ctype, która nie korzysta z tablicy ctype i dokonuje bezpośredniego porównania wartości.

Ź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