Biblioteka standarde C PicoLibc 1.1 e disponueshme

Keith Packard, zhvillues aktiv i Debian, udhëheqës i projektit X.Org dhe krijues i shumë shtesave X, duke përfshirë XRender, XComposite dhe XRandR, paraqitur lëshimi i një biblioteke të re standarde C PicoLibc 1.1, i zhvilluar për përdorim në pajisjet e integruara me hapësirë ​​të kufizuar të përhershme dhe RAM. Gjatë zhvillimit, një pjesë e kodit u huazua nga biblioteka newlib nga projekti Cygwin dhe AVR Libc, i zhvilluar për mikrokontrolluesit AVR Atmel. Kodi PicoLibc shperndare nga nën licencën BSD. Asambleja e bibliotekës mbështetet për arkitekturat ARM (32-bit), i386, RISC-V, x86_64 dhe PowerPC.

Keith Packard filloi zhvillimin pasi nuk ishte në gjendje të gjente një opsion të mirë Libc që mund të përdoret në pajisjet e integruara me pak RAM. Projekti është duke u zhvilluar që nga viti i kaluar. Në fazën e parë, projekti ishte një variant i newlib, funksionet e stdio në të cilat u zëvendësuan me një version kompakt nga avrlibc (stdio në newlib nuk ishte i përshtatshëm për konsumin e tij të lartë të burimeve). Meqenëse puna aktuale e Keith përfshin punën e vazhdueshme me arkitekturën RISC-V dhe zhvillimin e veglave për pajisjet e integruara, ai së fundi rishikoi gjendjen e zbatimeve të libc dhe arriti në përfundimin se me një ndryshim të vogël, kombinimi i newlib dhe avrlibc mund të jetë një qëllim i mirë i përgjithshëm. zgjidhje. Fillimisht, projekti u zhvillua me emrin "newlib-nano", por për të shmangur konfuzionin me bibliotekën Newlib u riemërua PicoLibc.

Në formën e tij aktuale, Picolibc ka bërë tashmë punë për të hequr të gjithë kodin që nuk ofrohet nën një licencë BSD (ky kod nuk është përdorur gjatë ndërtimit për pajisjet e integruara), gjë që ka thjeshtuar ndjeshëm situatën me licencën për projektin. Zbatimi i rrymave lokale është zhvendosur nga 'struct_reent' në mekanizmin TLS (thread-magazinim lokal). Versioni kompakt i stdio, i huazuar nga kodi i bibliotekës avrlibc, aktivizohet si parazgjedhje (insertet e montimit specifik të ATmel rishkruhen në C). Për montim u përdor paketa e veglave Meson, e cila bëri të mundur që të mos lidhej me skriptet e montimit të newlib dhe të thjeshtonte transferimin e ndryshimeve nga newlib. U shtua një version i thjeshtuar i kodit të inicializimit (crt0), i bashkëngjitur skedarit të ekzekutueshëm dhe i ekzekutuar përpara se kontrolli të transferohet në funksionin main().

Në versionin 1.1 të Picolibc:

  • U shtua biblioteka ndihmëse për të mbështetur teknologjinë "gjysmëhosting"lejon kodin që ekzekutohet në një mjedis korrigjues ose emulator për të përdorur mekanizmat I/O të sistemit pritës;
  • Për sistemet që mbështesin thirrjet e sistemit të hapjes, mbylljes, leximit dhe shkrimit, tinystdio shton ndërfaqe të standardizuara POSIX stdio I/O, duke përfshirë funksionet fopen dhe fdopen, si dhe lidh stdin/stdout/stderr me përshkruesit e skedarëve të përcaktuar nga POSIX;
  • Ndryshimet e fundit nga baza e kodeve newlib janë bartur. Përfshirë cungët e shtuar të gjymtyrëve për fenv.h, i cili mund të përdoret në sisteme pa mbështetje me pikë lundruese;
  • U shtua një shembull i ndërtimit të aplikacionit “Hello world” me picolibc për sistemet ARM dhe RISC-V;
  • U hoqën drejtoritë newlib, libm dhe mathfp, të cilat përmbanin kod eksperimental të papërdorur.

Burimi: opennet.ru

Shto një koment