נאָרמאַל C ביבליאָטעק PicoLibc 1.1 בנימצא

קיט פּאַקקאַרד, אַקטיוו דעביאַן דעוועלאָפּער, פירער פון די 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, который можно было использовать на встраиваемых устройствах с небольшим ОЗУ. Проект развивается с прошлого года. На первом этапе проект представлял собой вариант 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

לייגן אַ באַמערקונג