PicoLibc 1.4.7 Standard C Library Release

Keith Packard, dezvoltator Debian activ, lider al proiectului X.Org și creator al multor extensii X, inclusiv XRender, XComposite și XRandR, a publicat lansarea bibliotecii standard C PicoLibc 1.4.7, dezvoltat pentru utilizare pe dispozitive încorporate cu stocare permanentă limitată și RAM. În timpul dezvoltării, o parte a codului a fost împrumutată din bibliotecă newlib din proiectul Cygwin și AVR Libc, dezvoltat pentru microcontrolere Atmel AVR. Cod PicoLibc distribuit de sub licență BSD. Asamblarea bibliotecii este acceptată pentru arhitecturile ARM (32 de biți), i386, RISC-V, x86_64 și PowerPC.

Inițial, proiectul a fost dezvoltat sub numele „newlib-nano” și a avut ca scop reelaborarea unora dintre funcțiile Newlib care consumau multe resurse, care erau problematice de utilizat pe dispozitive încorporate cu puțină memorie RAM. De exemplu, funcțiile stdio au fost înlocuite cu o versiune compactă din biblioteca avrlibc. Codul a fost, de asemenea, curățat de componentele care nu au licență BSD, care nu sunt utilizate în versiunea încorporată. A fost adăugată o versiune simplificată a codului de inițializare (crt0), iar implementarea thread-urilor locale a fost mutată de la „struct _reent” la mecanismul TLS (stocare locală a firelor). Setul de instrumente Meson este folosit pentru asamblare.

În noua versiune:

  • S-a adăugat capacitatea de a construi folosind verificat matematic compilator CompCert.
  • S-a adăugat suport pentru compilatorul Clang.
  • Comportamentul funcției „gamma” a fost adus în conformitate cu comportamentul lui Glibc.
  • Implementarea nano-malloc asigură ștergerea memoriei returnate.
  • Performanță îmbunătățită a nano-realloc, în special atunci când îmbinăm blocuri gratuite și extindeți dimensiunea heap.
  • S-au adăugat un set de teste pentru a verifica funcționarea corectă a malloc-ului.
  • S-a îmbunătățit suportul pentru platforma Windows și a adăugat capacitatea de a construi folosind setul de instrumente mingw.
  • Pe sistemele ARM, dacă este disponibil, registrul hardware TLS (Thread-Local Storage) este activat.

Sursa: opennet.ru