បណ្ណាល័យ C ស្តង់ដារ PicoLibc 1.1 មាន

Keith Packard អ្នកអភិវឌ្ឍន៍ Debian សកម្ម អ្នកដឹកនាំគម្រោង X.Org និងអ្នកបង្កើតកម្មវិធីបន្ថែម X ជាច្រើន រួមទាំង XRender, XComposite និង XRandR, ណែនាំ выпуск новой стандартной Си-библиотеки PicoLibc 1.1ដែលត្រូវបានបង្កើតឡើងសម្រាប់ប្រើប្រាស់នៅលើឧបករណ៍ដែលបានបង្កប់ជាមួយនឹងទំហំផ្ទុកអចិន្ត្រៃយ៍ និង RAM មានកំណត់។ កំឡុងពេលអភិវឌ្ឍន៍ ផ្នែកមួយនៃកូដត្រូវបានខ្ចីពីបណ្ណាល័យ newlib ពីគម្រោង Cygwin និង AVR Libcដែលត្រូវបានបង្កើតឡើងសម្រាប់ឧបករណ៍បញ្ជា microcontrollers Atmel AVR ។ លេខកូដ PicoLibc ចែកចាយ​ដោយ ក្រោមអាជ្ញាប័ណ្ណ BSD ។ ការផ្គុំបណ្ណាល័យត្រូវបានគាំទ្រសម្រាប់ ARM (32-bit), 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

បន្ថែមមតិយោបល់