Доступна стандартная Си-библиотека PicoLibc 1.1

Кит Паккард (Keith Packard), активен в разработке на Debian, лидер проекта X.Org и создатель множества X-расширений, включая XRender, XComposite и XRandR, представи выпуск на новата стандартна Си-библиотека PicoLibc 1.1, разрабатываемая за употреба на вградени устройства с ограничен размер на постоянното хранилище и оперативната памет. При разработката част от кода е заимствана от библиотеката newlib от проекта Cygwin и AVR Libc, развивана за микроконтролери Atmel AVR. Кодът на PicoLibc разпространява е под лицензия BSD. Поддържа се компилация на библиотеката за архитектури ARM (32-битови), i386, RISC-V, x86_64 и PowerPC.

Кит Паккард започна разработката, след като не можа да намери адекватен вариант на Libc, който да може да се използва на вградени устройства с малко RAM. Проектът се развива от миналата година. В първоначалния етап проектът представляваше вариант на newlib, чиято stdio функция е заменена с компактен вариант от avrlibc (stdio в newlib не беше задоволителен заради високото потребление на ресурси). Тъй като настоящата дейност на Кит е свързана с работа с архитектурата RISC-V и развитието на средства за вградени устройства, наскоро той преразгледа състоянието на реализирането на libc и стигна до заключението, че с малки корекции комбинацията от newlib и avrlibc може да стане добро универсално решение. В началото проектът се развиваше под името „newlib-nano“, но за да се избегне объркване с библиотеката Newlib, беше преименуван на PicoLibc.

В настоящия си вид в PicoLibc вече е извършена работа по премахването на целия код, предоставен не под лицензия BSD (този код не е бил използван при компилацията за вградени устройства), което значително улесни ситуацията с лицензията на проекта. Реализацията на локалните потоци е преминала от ‘struct _reent’ към механизма TLS (storage of thread-local). Компактният вариант на 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster