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

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

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

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

  • Добавена е поддръжка за LoongArch, OpenRISC и LatticMico32 архитектури.
  • Предлага се реализация на заглавния файл uchar.h, въведен в стандарта C11.
  • Добавена е настройка nano-malloc-clear-freed за изчистване на паметта, освободена след free() или realloc().
  • Реализирана е възможността за използване на clang multilib на ARM64 системи.
  • Преходът към новия инструментариум picolibc-ci-tools за автоматично асемблиране в системи за непрекъсната интеграция е завършен.
  • Архитектурата на MIPS поддържа технологията "полухостинг", която позволява на код, работещ в среда за отстраняване на грешки или емулатор, да използва I/O механизмите на хост системата.
  • Добавена е поддръжка на picocrt и semihost за процесори Xtensa.
  • Добавени са настройки за използване с CoreBoot.
  • Добавена е функцията memset_explicit(), въведена в стандарта C23.
  • Таблиците за преобразуване на главни и малки букви са актуализирани до Unicode спецификация 15.1.0.
  • Функциите asnprintf() и vasnprintf() са преместени от библиотеката newlib.
  • Добавена е поддръжка за FVP (фиксирани виртуални платформи) емулатор, разработен от ARM.
  • Добавена е поддръжка за по-стари версии на GCC компилатора (по-стари от 4.4).
  • Реализациите на iconv и локалите са заменени с по-компактни версии, които използват общ код за работа с кодировки.

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

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