Китобхонаи стандартии C PicoLibc 1.1 дастрас аст

Кит Паккард, таҳиягари фаъоли Debian, роҳбари лоиҳаи X.Org ва созандаи бисёр васеъшавии X, аз ҷумла XRender, XComposite ва XRandR, муаррифӣ кард баровардани китобхонаи нави стандартии C PicoLibc 1.1, барои истифода дар дастгоҳҳои дарунсохти бо нигаҳдории доимии маҳдуд ва RAM таҳия шудааст. Ҳангоми таҳия, як қисми рамз аз китобхона гирифта шуд newlib аз лоиҳаи Cygwin ва AVR Libc, барои микроконтроллерҳои Atmel AVR таҳия шудааст. Рамзи PicoLibc паҳн мекунад таҳти иҷозатномаи BSD. Маҷмаи китобхона барои меъмории ARM (32-бит), i386, RISC-V, x86_64 ва PowerPC дастгирӣ карда мешавад.

Кит Паккард пас аз пайдо кардани варианти муносиби Libc, ки метавонад дар дастгоҳҳои дарунсохт бо хотираи ками RAM истифода шавад, ба рушд оғоз кард. Лоиҳа аз соли гузашта таҳия карда мешавад. Дар марҳилаи аввал, лоиҳа як варианти newlib буд, ки функсияҳои stdio бо версияи паймоне аз avrlibc иваз карда шуданд (stdio дар newlib барои истеъмоли зиёди захираҳои он мувофиқ набуд). Азбаски кори кунунии Кит кори доимӣ бо меъмории RISC-V ва таҳияи асбобҳо барои дастгоҳҳои дарунсохтро дар бар мегирад, ӯ ба наздикӣ вазъи татбиқи libc-ро баррасӣ кард ва ба хулосае омад, ки бо каме ислоҳ, омезиши newlib ва avrlibc метавонад як ҳадафи хуби умумӣ бошад. ҳалли. Дар аввал, лоиҳа бо номи "newlib-nano" таҳия шуда буд, аммо барои пешгирӣ кардани иштибоҳ бо китобхонаи Newlib он PicoLibc номгузорӣ шуд.

Дар шакли кунунии худ, Picolibc аллакай кореро анҷом додааст, ки ҳама рамзҳоеро, ки таҳти литсензияи BSD дода нашудаанд (ин код ҳангоми сохтани дастгоҳҳои воридшуда истифода нашуда буд), ки вазъиятро бо иҷозатномаи лоиҳа ба таври назаррас содда кардааст. Татбиқи ҷараёнҳои маҳаллӣ аз "struct _reent" ба механизми TLS гузаронида шуд (захираи риштаи маҳаллӣ). Варианти паймоне аз stdio, ки аз коди китобхонаи avrlibc гирифта шудааст, ба таври нобаёнӣ фаъол карда мешавад (Вставкаҳои ассемблерҳои мушаххаси ATmel дар C аз нав навишта мешаванд). Маҷмӯаи асбобҳои Meson барои васлкунӣ истифода мешуд, ки имкон дод, ки ба скриптҳои монтажи newlib пайваст нашаванд ва интиқоли тағиротро аз newlib содда кунанд. Варианти соддакардашудаи рамзи оғозёбӣ (crt0) илова карда шуд, ки ба файли иҷрошаванда замима карда шудааст ва пеш аз интиқоли назорат ба функсияи main() иҷро карда мешавад.

Дар версияи Picolibc 1.1:

  • Китобхонаи ёрирасон барои дастгирии технология илова карда шуд "нимхостинг"Иҷозат медиҳад, ки код дар муҳити ислоҳкунанда ё эмулятор кор кунад, то механизмҳои воридот ва баромади системаи ҳостро истифода барад;
  • Барои системаҳое, ки зангҳои системавии кушода, пӯшида, хондан ва навиштанро дастгирӣ мекунанд, tinystdio интерфейсҳои стандартишудаи POSIX stdio I/O, аз ҷумла функсияҳои fopen ва fdopen, инчунин stdin/stdout/stderr-ро ба тавсифкунандагони файли муайяншудаи POSIX илова мекунад;
  • Тағироти охирин аз пойгоҳи коди newlib гузаронида шуданд. Аз ҷумла libm нотаҳои иловашуда барои fenv.h, ки метавонад дар системаҳои бе дастгирии нуқтаи шинокунанда истифода шавад;
  • Намунаи сохтани барномаи "Салом ҷаҳон" бо picolibc барои системаҳои ARM ва RISC-V илова карда шуд;
  • Феҳристҳои newlib, libm ва mathfp, ки дорои рамзи таҷрибавии истифоданашуда буданд, хориҷ карда шуданд.

Манбаъ: opennet.ru

Илова Эзоҳ