Издаване на стандартната C библиотека PicoLibc 1.8.6

Публикувана е версия на стандартната C библиотека PicoLibc 1.8.6, разработена от Keith Packard (ръководител на проекта X.Org) за използване на вградени устройства с ограничено количество постоянно съхранение и RAM. По време на разработката част от кода е заимстван от библиотеката newlib от проекта Cygwin и AVR Libc, разработен за микроконтролери Atmel AVR. Кодът на PicoLibc се разпространява под лиценз BSD. Сглобяването на библиотека се поддържа за ARM (32-битова), Aarch64, i386, RISC-V, x86_64, m68k и PowerPC архитектури.

Първоначално проектът беше разработен под името „newlib-nano“ и имаше за цел да преработи някои от ресурсоемките функции на Newlib, които бяха проблематични за използване на вградени устройства с малко RAM. Например в PicoLibc функциите stdio са заменени с компактна версия от библиотеката avrlibc. Кодът също се изчиства от компоненти, които не се използват в сглобката на вграденото устройство, които не се доставят под BSD лиценза. Добавена е опростена версия на кода за инициализация (crt0) и изпълнението на повикванията е прехвърлено от „struct _reent“ към механизма TLS (локално съхранение на нишки). За сглобяване се използва инструментариумът Meson.

В новата версия:

  • Промените от Newlib 4.4.0 са прехвърлени, като поддръжка за типа „long double“ на i386, RISC-V, Aarch64 и x86_64 архитектури, поддръжка за RISC-V Zfinx/Zdinx разширения, възможност за използване на маски при вмъкване на директории , внедряване на порт за процесори Xtensa, разделяне на манипулаторите на printf в отделни файлове за намаляване на размера при свързване.
  • Добавени са символи "__eh_*" към picolibc.ld за LLVM libunwind.
  • Включена е тестова поддръжка за 32-битови SPARC системи.
  • Осигурена поддръжка за целеви платформи с нетипични типове с плаваща запетая, които сега са отразени в 32-, 64-, 80- и 128-битови типове в кода на picolibc.
  • Добавена е поддръжка за SuperH RISC архитектурата.
  • Подобрено проследяване на стека при отстраняване на грешки в код на изключение на RISC-V системи.
  • Добавена е опция "-Dfast-bufio=true" за подобряване на ефективността на четене и запис при използване на bufio.
  • Изчистени публични вградени функции за споделяне на семантиката на gnu_inline.
  • Повечето функции на fenv са преместени да използват вградени функции (gnu_inline) вместо обикновените, за да се подобри производителността.
  • Създадена е алтернативна реализация на ctype, която не използва масива ctype и извършва директно сравнение на стойности.

Източник: opennet.ru

Добавяне на нов коментар