Стандартты C кітапханасы PicoLibc 1.1 қол жетімді

Кейт Пакард, белсенді Debian әзірлеушісі, X.Org жобасының жетекшісі және XRender, XComposite және XRandR сияқты көптеген X кеңейтімдерін жасаушы, енгізілді жаңа стандартты C кітапханасын шығару PicoLibc 1.1, шектеулі тұрақты жады және жедел жады бар ендірілген құрылғыларда пайдалану үшін әзірленген. Әзірлеу барысында кодтың бір бөлігі кітапханадан алынды newlib Cygwin жобасынан және AVR Libc, Atmel AVR микроконтроллерлері үшін әзірленген. PicoLibc коды таралады BSD лицензиясы бойынша. Кітапхана жинағына ARM (32-бит), i386, RISC-V, x86_64 және PowerPC архитектуралары үшін қолдау көрсетіледі.

Кит Пакард жедел жады аз ендірілген құрылғыларда қолдануға болатын лайықты Libc опциясын таба алмағаннан кейін дамуды бастады. Жоба былтырдан бері дамып келеді. Бірінші кезеңде жоба newlib нұсқасы болды, онда stdio функциялары avrlibc ықшам нұсқасымен ауыстырылды (newlib ішіндегі stdio оның жоғары ресурстарды тұтынуы үшін қолайлы емес). Кейттің қазіргі жұмысы RISC-V архитектурасымен үздіксіз жұмысты және ендірілген құрылғыларға арналған құралдарды әзірлеуді қамтитындықтан, ол жақында libc енгізулерінің күйін қарап шықты және аздап түзету арқылы newlib және avrlibc комбинациясы жақсы жалпы мақсат болуы мүмкін деген қорытындыға келді. шешім. Бастапқыда жоба «newlib-nano» деген атпен әзірленді, бірақ Newlib кітапханасымен шатастырмау үшін ол PicoLibc деп өзгертілді.

Қазіргі пішінінде Picolibc BSD лицензиясы бойынша берілмеген барлық кодтарды жою бойынша жұмыс жасады (бұл код ендірілген құрылғылар үшін құрастыру кезінде пайдаланылмаған), бұл жобаға арналған лицензияның жағдайын айтарлықтай жеңілдетті. Жергілікті ағындарды іске асыру «struct _reent» жүйесінен TLS механизміне ауыстырылды (жіп-жергілікті сақтау). avrlibc кітапхана кодынан алынған stdio ықшам нұсқасы әдепкі бойынша белсендірілген (ATmel-арнайы ассемблер кірістірулері C тілінде қайта жазылған). Meson құралдар жинағы құрастыру үшін пайдаланылды, ол newlib құрастыру сценарийлеріне қосылмауға және newlib-тен өзгертулерді тасымалдауды жеңілдетуге мүмкіндік берді. Орындалатын файлға тіркелген және басқару негізгі() функциясына тасымалданбас бұрын орындалатын инициализация кодының (crt0) жеңілдетілген нұсқасы қосылды.

Picolibc 1.1 нұсқасында:

  • Технологияны қолдау үшін қосымша кітапхана қосылды »жартылай хостинг"жүйенің енгізу/шығару механизмдерін пайдалану үшін отладчик немесе эмулятор ортасында іске қосылған кодқа мүмкіндік береді;
  • Жүйе қоңырауларын ашу, жабу, оқу және жазуды қолдайтын жүйелер үшін tinystdio стандартталған POSIX stdio I/O интерфейстерін, соның ішінде fopen және fdopen функцияларын қосады, сондай-ақ stdin/stdout/stderr файлын POSIX анықталған файл дескрипторларына байланыстырады;
  • newlib код базасындағы соңғы өзгерістер жүзеге асырылды. Қосылған libm қосындыларын қоса fenv.h, ол өзгермелі нүкте қолдауы жоқ жүйелерде қолданылуы мүмкін;
  • ARM және RISC-V жүйелеріне арналған picolibc көмегімен «Hello world» қолданбасын құру мысалы қосылды;
  • Пайдаланылмаған эксперименттік кодты қамтитын newlib, libm және mathfp каталогтары жойылды.

Ақпарат көзі: opennet.ru

пікір қалдыру