Ọbá akwụkwọ ọkọlọtọ C PicoLibc 1.1 dị

Keith Packard, onye nrụpụta Debian na-arụsi ọrụ ike, onye ndu nke ọrụ X.Org na onye okike nke ọtụtụ ndọtị X, gụnyere XRender, XComposite na XRandR, webatara выпуск новой стандартной Си-библиотеки PicoLibc 1.1, emepụtara maka ojiji na ngwaọrụ agbakwunyere nwere oke nchekwa na-adịgide adịgide yana RAM. N'oge mmepe, agbaziri akụkụ nke koodu ahụ n'ọbá akwụkwọ ọhụrụlib site na oru ngo Cygwin na AVR Libc, mepụtara maka microcontrollers Atmel AVR. Koodu PicoLibc kesara site n'okpuru ikikere BSD. A na-akwado ọgbakọ ọbá akwụkwọ maka ARM (32-bit), i386, RISC-V, x86_64 na ihe owuwu PowerPC.

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

В текущем виде в Picolibc уже проведена работа по удалению всего кода, поставляемого не под лицензией BSD (данный код не использовался при сборке для встраиваемых устройств), что значительно упростило ситуацию с лицензией на проект. Реализация локальных потоков переведена с ‘struct _reent’ на механизм TLS (eri-nchekwa mpaghara). Активирован по умолчанию компактный вариант 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, в которых содержался неиспользуемый экспериментальный код.

isi: opennet.ru

Tinye a comment