Biblioteca standard C PicoLibc 1.1 este disponibilă

Keith Packard, un dezvoltator activ Debian, liderul proiectului X.Org și creatorul multor extensii X, inclusiv XRender, XComposite și XRandR, a prezentat lansarea noii biblioteci standard C PicoLibc 1.1, care este dezvoltată pentru utilizarea pe dispozitive integrate cu un spațiu de stocare permanent și memorie RAM limitate. În timpul dezvoltării, o parte din cod a fost împrumutată din biblioteca newlib proiectului Cygwin și AVR Libc, dezvoltată pentru microcontrolerele Atmel AVR. Codul PicoLibc se răspândește este sub licența BSD. Se suportă compilarea bibliotecii pentru arhitecturi ARM (32-bit), i386, RISC-V, x86_64 și PowerPC.

Keith Packard a început dezvoltarea după ce nu a găsit o variantă adecvată de Libc care să poată fi utilizată pe dispozitive integrate cu RAM mică. Proiectul este în desfășurare din anul trecut. În prima etapă, proiectul a fost o variantă a newlib, în care funcțiile stdio au fost înlocuite cu o variantă compactă din avrlibc (stdio în newlib nu era satisfăcător din cauza consumului mare de resurse). Dat fiind că activitatea actuală a lui Keith este legată de lucrul constant cu arhitectura RISC-V și de dezvoltarea instrumentarului pentru dispozitive integrate, a revizuit recent starea implementărilor libc și a ajuns la concluzia că, cu unele modificări minore, combinația newlib și avrlibc ar putea fi o soluție universală bună. Inițial, proiectul a fost dezvoltat sub numele „newlib-nano”, dar pentru a evita confuzia cu biblioteca Newlib a fost redenumit în PicoLibc.

În forma sa actuală, în PicoLibc a fost realizată o muncă de eliminare a tot codul care nu este livrat sub licența BSD (acest cod nu a fost utilizat la compilarea pentru dispozitive integrate), ceea ce a simplificat considerabil situația licenței proiectului. Implementarea firului local a fost convertită din ‘struct _reent’ pe mecanismul TLS (stocare locală a firului). A fost activat implicit un variant compact de stdio, împrumutat din codul bibliotecii avrlibc (inserțiile assembler specifice ATmel au fost rescrise în C). Pentru compilare a fost folosit instrumentarul Meson, ceea ce a permis abținerea de la scenariile de compilare ale newlib și a simplificat transferul modificărilor din newlib. A fost adăugată o variantă simplificată a codului de inițializare (crt0), care se atașează fișierului executabil și este executată înainte de a transfera controlul funcției main().

În versiunea PicoLibc 1.1:

  • A fost adăugată o bibliotecă auxiliară pentru suportul tehnologiei „semihosting«, permițând codului, care rulează în medii de depanare sau emulatoare, să utilizeze mecanismele de intrare/ieșire ale sistemului gazdă;
  • Pentru sistemele care suportă apeluri de sistem open, close, read și write, în tinystdio au fost adăugate interfețe standardizate de intrare/ieșire POSIX, inclusiv funcțiile fopen și fdopen, precum și legarea stdin/stdout/stderr la descriptorii de fișiere specificați în POSIX;
  • S-au transferat recentele modificări din baza de cod newlib. Printre acestea s-au inclus stubs libm pentru fenv.h, care pot fi utilizate pe sisteme fără suport pentru calcule cu virgulă mobilă;
  • Adăugat un exemplu de construcție a aplicației „Hello world” cu picolibc pentru sistemele ARM și RISC-V;
  • Au fost șterse directoarele newlib, libm și mathfp, care conțineau cod experimental neutilizat.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster