Διατίθεται τυπική βιβλιοθήκη C PicoLibc 1.1

Keith Packard, ενεργός προγραμματιστής του Debian, επικεφαλής του έργου X.Org και δημιουργός πολλών επεκτάσεων X, συμπεριλαμβανομένων των XRender, XComposite και XRandR, εισήχθη выпуск новой стандартной Си-библиотеки PicoLibc 1.1, που αναπτύχθηκε για χρήση σε ενσωματωμένες συσκευές με περιορισμένο μόνιμο χώρο αποθήκευσης και RAM. Κατά τη διάρκεια της ανάπτυξης, μέρος του κώδικα δανείστηκε από τη βιβλιοθήκη newlib από το έργο Cygwin και AVR Libc, που αναπτύχθηκε για τους μικροελεγκτές AVR της Atmel. Κώδικας PicoLibc διανέμονται από με άδεια BSD. Η συναρμολόγηση βιβλιοθήκης υποστηρίζεται για αρχιτεκτονικές ARM (32-bit), i386, RISC-V, x86_64 και PowerPC.

Кит Паккард приступил к разработке после того, как не смог найти достойного варианта Libc, который можно было использовать на встраиваемых устройствах с небольшим ОЗУ. Проект развивается с прошлого года. На первом этапе проект представлял собой вариант newlib, функции stdio в котором были заменены на компактный вариант из avrlibc (stdio в newlib не устраивал большим потреблением ресурсов). Так как текущая деятельность Кита связана с постоянной работой с архитектурой RISC-V и развитием инструментария для встраиваемых устройств, недавно он пересмотрел состояние реализаций libc и пришёл к выводу, что при небольшой доработке комбинация newlib и avrlibc может стать хорошим универсальным решением. Изначально проект развивался под именем «newlib-nano», но чтобы избежать путаницы с библиотекой Newlib был переименован в PicoLibc.

В текущем виде в Picolibc уже проведена работа по удалению всего кода, поставляемого не под лицензией BSD (данный код не использовался при сборке для встраиваемых устройств), что значительно упростило ситуацию с лицензией на проект. Реализация локальных потоков переведена с ‘struct _reent’ на механизм TLS (νήμα-τοπική αποθήκευση). Активирован по умолчанию компактный вариант stdio, заимствованный из кода библиотеки avrlibc (специфичные для ATmel ассемблерные вставки переписаны на Си). Для сборки задействован инструментарий Meson, что позволило не привязываться к сборочным сценариям newlib и упростить перенос изменений из newlib. Добавлен упрощённый вариант кода инициализации (crt0), прикрепляемого к исполняемому файлу и выполняемого до передачи управления функции main().

В версии Picolibc 1.1:

  • Добавлена вспомогательная библиотека для поддержки технологии «semihosting«, позволяющей коду, выполняемому в окружении отладчика или эмулятора, использовать механизмы ввода/вывода хост-системы;
  • Для систем, поддерживающих системные вызовы open, close, read и write, в tinystdio добавлены стандартизированные POSIX-интерфейсы ввода/вывода stdio, включая функции fopen и fdopen, а также привязку stdin/stdout/stderr к определённым в POSIX файловым дескрипторам;
  • Перенесены недавние изменения из кодовой базы newlib. В том числе добавлены заглушки libm для fenv.h, которые можно использовать на системах без поддержи вычислений с плавающей точкой;
  • Добавлен пример сборки приложения «Hello world» с picolibc для систем ARM и RISC-V;
  • Удалены каталоги newlib, libm и mathfp, в которых содержался неиспользуемый экспериментальный код.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο