Достапна е стандардна C библиотека PicoLibc 1.1

Кит Пакард, активен развивач на Debian, водач на проектот X.Org и креатор на многу екстензии на X, вклучувајќи ги XRender, XComposite и XRandR, воведено издавање на нова стандардна C библиотека PicoLibc 1.1, развиен за употреба на вградени уреди со ограничено трајно складирање и RAM меморија. За време на развојот, дел од кодот беше позајмен од библиотеката 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 (нишка-локално складирање). Компактната верзија на stdio, позајмена од кодот на библиотеката avrlibc, е стандардно активирана (специфичните асемблери на ATmel се препишуваат во C). За склопување се користеше алатката Meson, што овозможи да не се врзуваат за скриптите за склопување newlib и да се поедностави преносот на промените од newlib. Додадена е поедноставена верзија на кодот за иницијализација (crt0), прикачен на извршната датотека и извршена пред да се пренесе контролата во функцијата main().

Во верзијата 1.1 на Picolibc:

  • Додадена е помошна библиотека за поддршка на технологијата "полухостинг„дозволува кодот што работи во околина за дебагер или емулатор да ги користи механизмите за влез/излез на системот домаќин;
  • За системи кои поддржуваат системски повици за отворање, затворање, читање и пишување, tinystdio додава стандардизирани POSIX stdio I/O интерфејси, вклучувајќи ги функциите fopen и fdopen, како и врзување stdin/stdout/stderr за дескриптори на датотеки дефинирани од POSIX;
  • Неодамнешните промени од базата на кодови newlib се пренесени. Вклучувајќи додадени никулци за фенв.ч, кој може да се користи на системи без поддршка со подвижна запирка;
  • Додаден пример за градење на апликацијата „Hello world“ со picolibc за системи ARM и RISC-V;
  • Отстранети се директориумите newlib, libm и mathfp, кои содржеа неискористен експериментален код.

Извор: opennet.ru

Додадете коментар