Випуск стандартної Бібліотеки PicoLibc 1.4.7

Кіт Паккард (Keith Packard), активний розробник Debian, лідер проекту X.Org та творець безлічі X-розширень, включаючи XRender, XComposite та XRandR, опублікував випуск стандартної Сі-бібліотеки PicoLibc 1.4.7, що розвивається для застосування на вбудовуваних пристроях з обмеженим розміром постійного сховища та оперативної пам'яті. При розробці частина коду запозичена з бібліотеки newlib від проекту Сygwin та AVR Libc, що розвивалася для мікроконтролерів Atmel AVR. Код PicoLibc поширюється під ліцензією BSD. Підтримується збірка бібліотеки для архітектур ARM (32-bit), i386, RISC-V, x86_64 та PowerPC.

Спочатку проект розвивався під ім'ям «newlib-nano» і був націлений на переробку деяких ресурсомістких функцій Newlib, які було проблематично використовувати на пристроях, що вбудовуються з невеликим ОЗУ. Наприклад, функції stdio були замінені на компактний варіант бібліотеки avrlibc. Код також був очищений від компонентів, що не використовуються у збірці для вбудованих пристроїв, що поставляються не під ліцензією BSD. Доданий спрощений варіант коду ініціалізації (crt0), а реалізація локальних потоків переведена з 'struct _reent' на механізм TLS (локально-потокове сховище). Для складання задіяний інструментарій Meson.

У новому випуску:

  • Додана можливість збирання з використанням математично верифікованого компілятора CompCert.
  • Додано підтримку компілятора Clang.
  • Поведінка функції 'gamma' приведена у відповідність до поведінки Glibc.
  • У реалізації nano-malloc забезпечено обов'язкове очищення пам'яті, що повертається.
  • Підвищена продуктивність nano-realloc, особливо при виконанні операцій злиття вільних блоків та розширення розміру купи.
  • Додано набір тестів для перевірки правильності роботи malloc.
  • Поліпшено підтримку платформи Windows та додано можливість складання з використанням інструментарію mingw.
  • На системах ARM за наявності апаратний регістр TLS (Thread-Local Storage).

Джерело: opennet.ru