Кит Паккард (Keith Packard), активен в разработке на Debian, лидер проекта X.Org и создатель множества X-расширений, включая XRender, XComposite и XRandR, выпуск на новата стандартна Си-библиотека , разрабатываемая за употреба на вградени устройства с ограничен размер на постоянното хранилище и оперативната памет. При разработката част от кода е заимствана от библиотеката от проекта Cygwin и , развивана за микроконтролери 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 (). Компактният вариант на stdio, заимстван от кода на библиотеката avrlibc, е активиран по подразбиране (асемблерните инжекции, специфични за ATmel, са пренаписани на Си). За компилацията е използван инструментариумът Meson, което позволи да не се привързва към сценарии за компилация на newlib и да се улесни преноса на промени от newlib. Добавено е опростено инициализационно кодово (crt0), прикрепвано към изпълнимия файл и изпълнявано преди предаването на управление на функцията main().
В версията PicoLibc 1.1:
- Добавена е помощна библиотека за подкрепа на технологията “«, позволяваща на кода, изпълняван в отладчик или емулатор, да използва механизмите за вход/изход на хост системата;
- За системи, които поддържат системни извиквания open, close, read и write, в tinystdio са добавени стандартизирани POSIX интерфейси за вход/изход stdio, включително функции fopen и fdopen, както и свързването на stdin/stdout/stderr с определени файлови дескриптори в POSIX;
- Наскоро извършени промени от кода на newlib. Включително добавени са дублиращи libm за , които могат да се използват на системи без подкрепа за изчисления с плаваща точка;
- Добавен е пример за изграждане на приложението „Hello world“ с picolibc за системи ARM и RISC-V;
- Изтеглени са директориите newlib, libm и mathfp, които съдържаха неизползван експериментален код.
Източник: opennet.ru
