Wydanie standardowej biblioteki C PicoLibc 1.8.6

Opublikowano wydanie standardowej biblioteki C PicoLibc 1.8.6, opracowanej przez Keitha Packarda (lidera projektu X.Org) do użytku na urządzeniach wbudowanych z ograniczoną ilością trwałej pamięci i pamięci RAM. Podczas programowania część kodu została zapożyczona z biblioteki newlib z projektu Cygwin i AVR Libc, opracowanej dla mikrokontrolerów Atmel AVR. Kod PicoLibc jest rozpowszechniany na licencji BSD. Montaż bibliotek jest obsługiwany dla architektur ARM (32-bitowych), Aarch64, i386, RISC-V, x86_64, m68k i PowerPC.

Początkowo projekt rozwijał się pod nazwą „newlib-nano” i miał na celu przeróbkę niektórych funkcji Newlib wymagających dużych zasobów, których używanie na urządzeniach wbudowanych z małą ilością pamięci RAM było problematyczne. Na przykład w PicoLibc funkcje stdio zostały zastąpione wersją kompaktową z biblioteki avrlibc. Z kodu usunięto także komponenty nieużywane w zestawie urządzenia wbudowanego, które nie są dostarczane na podstawie licencji BSD. Dodano uproszczoną wersję kodu inicjującego (crt0), a realizację wywołań przeniesiono z „struct _reent” do mechanizmu TLS (thread-local Storage). Do montażu służy zestaw narzędzi Meson.

W nowym wydaniu:

  • Przeniesiono zmiany z Newlib 4.4.0, takie jak obsługa typu „long double” na architekturach i386, RISC-V, Aarch64 i x86_64, obsługa rozszerzeń RISC-V Zfinx/Zdinx, możliwość używania masek podczas wstawiania katalogów , implementacja portu dla procesorów Xtensa, rozdzielanie procedur obsługi printf na osobne pliki w celu zmniejszenia rozmiaru podczas łączenia.
  • Dodano symbole „__eh_*” do picolibc.ld dla LLVM libunwind.
  • Dołączone jest wsparcie testowe dla 32-bitowych systemów SPARC.
  • Zapewniono obsługę platform docelowych z nietypowymi typami zmiennoprzecinkowymi, które są teraz odzwierciedlone w typach 32-, 64-, 80- i 128-bitowych w kodzie picolibc.
  • Dodano obsługę architektury SuperH RISC.
  • Ulepszone śledzenie stosu podczas debugowania kodu wyjątku w systemach RISC-V.
  • Dodano opcję „-Dfast-bufio=true”, aby poprawić wydajność odczytu i zapisu podczas korzystania z bufio.
  • Poprawiono publiczne funkcje inline, aby współdzielić semantykę gnu_inline.
  • Większość funkcji fenv została przeniesiona tak, aby korzystała z funkcji wbudowanych (gnu_inline) zamiast zwykłych, aby poprawić wydajność.
  • Stworzono alternatywną implementację ctype, która nie wykorzystuje tablicy ctype i dokonuje bezpośredniego porównania wartości.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster