Standart C kutubxonasi PicoLibc 1.1 mavjud

Keyt Packard, faol Debian dasturchisi, X.Org loyihasi rahbari va XRender, XComposite va XRandR kabi koʻplab X kengaytmalarini yaratuvchisi, tanishtirdi yangi standart C kutubxonasining chiqarilishi PicoLibc 1.1, cheklangan doimiy saqlash va RAMga ega bo'lgan o'rnatilgan qurilmalarda foydalanish uchun ishlab chiqilgan. Rivojlanish jarayonida kodning bir qismi kutubxonadan olingan newlib Cygwin loyihasidan va AVR Libc, Atmel AVR mikrokontrollerlari uchun ishlab chiqilgan. PicoLibc kodi tarqaladi BSD litsenziyasi ostida. Kutubxona yig'ilishi ARM (32-bit), i386, RISC-V, x86_64 va PowerPC arxitekturalari uchun qo'llab-quvvatlanadi.

Keyt Packard kichik operativ xotiraga ega o'rnatilgan qurilmalarda ishlatilishi mumkin bo'lgan munosib Libc variantini topa olmaganidan keyin ishlab chiqishni boshladi. Loyiha o'tgan yildan beri ishlab chiqilmoqda. Birinchi bosqichda loyiha newlib varianti boʻlib, stdio funksiyalari avrlibc ning ixcham versiyasiga almashtirildi (newlibdagi stdio uning yuqori resurslar sarfi uchun mos emas edi). Keytning hozirgi ishi RISC-V arxitekturasi va o'rnatilgan qurilmalar uchun asboblarni ishlab chiqish bilan davom etayotgan ishlarni o'z ichiga olganligi sababli, u yaqinda libc dasturlarining holatini ko'rib chiqdi va biroz sozlash bilan newlib va ​​avrlibc kombinatsiyasi yaxshi umumiy maqsad bo'lishi mumkin degan xulosaga keldi. yechim. Dastlab, loyiha "newlib-nano" nomi ostida ishlab chiqilgan, ammo Newlib kutubxonasi bilan chalkashmaslik uchun u PicoLibc deb o'zgartirildi.

Hozirgi ko'rinishida Picolibc allaqachon BSD litsenziyasi bo'yicha taqdim etilmagan barcha kodlarni o'chirish bo'yicha ishlarni amalga oshirgan (bu kod o'rnatilgan qurilmalar uchun qurishda ishlatilmagan), bu esa loyiha uchun litsenziya bilan bog'liq vaziyatni sezilarli darajada soddalashtirdi. Mahalliy oqimlarni amalga oshirish "struct _reent" dan TLS mexanizmiga ko'chirildi (ip-mahalliy saqlash). Avrlibc kutubxona kodidan olingan stdio-ning ixcham versiyasi sukut bo'yicha faollashtirilgan (ATmel-ga xos assembler qo'shimchalari C da qayta yozilgan). Yig'ish uchun Meson asboblar to'plami ishlatilgan, bu newlib yig'ish skriptlariga bog'lanmaslik va newlib-dan o'zgarishlarni uzatishni soddalashtirish imkonini berdi. Initsializatsiya kodining soddalashtirilgan versiyasi qo'shildi (crt0), bajariladigan faylga biriktirilgan va boshqaruv main() funksiyasiga o'tkazilishidan oldin bajarilgan.

Picolibc 1.1 versiyasida:

  • Texnologiyani qo'llab-quvvatlash uchun qo'shilgan yordamchi kutubxona "yarim xosting"xost tizimining kiritish-chiqarish mexanizmlaridan foydalanish uchun disk raskadrovka yoki emulyator muhitida ishlaydigan kodga ruxsat beradi;
  • Tizim qo'ng'iroqlarini ochish, yopish, o'qish va yozishni qo'llab-quvvatlaydigan tizimlar uchun tinystdio standartlashtirilgan POSIX stdio I/U interfeyslarini, shu jumladan fopen va fdopen funktsiyalarini, shuningdek, stdin/stdout/stderr-ni POSIX tomonidan belgilangan fayl identifikatorlari bilan bog'laydi;
  • Newlib kod bazasidagi so'nggi o'zgarishlar amalga oshirildi. Jumladan uchun qoʻshilgan libm stublari fenv.h, suzuvchi nuqta qo'llab-quvvatlamaydigan tizimlarda ishlatilishi mumkin;
  • ARM va RISC-V tizimlari uchun picolibc bilan “Salom dunyo” ilovasini yaratish misoli qo‘shildi;
  • Ishlatilmagan eksperimental kodni o'z ichiga olgan newlib, libm va mathfp kataloglari olib tashlandi.

Manba: opennet.ru

a Izoh qo'shish