K dispozici je standardní C knihovna PicoLibc 1.1

Keith Packard, aktivní vývojář Debianu, vedoucí projektu X.Org a tvůrce mnoha rozšíření X, včetně XRender, XComposite a XRandR, představen vydání nové standardní knihovny C PicoLibc 1.1, vyvinutý pro použití na vestavěných zařízeních s omezeným trvalým úložištěm a RAM. Během vývoje byla část kódu vypůjčena z knihovny newlib z projektu Cygwin a AVR Libc, vyvinuté pro mikrokontroléry Atmel AVR. PicoLibc kód distribuovány pod licencí BSD. Sestavení knihovny je podporováno pro architektury ARM (32bitové), i386, RISC-V, x86_64 a PowerPC.

Keith Packard začal s vývojem poté, co nebyl schopen najít slušnou možnost Libc, kterou by bylo možné použít na vestavěných zařízeních s malou RAM. Projekt se rozvíjí od loňského roku. Projekt byl v první fázi variantou newlib, ve které byly funkce stdio nahrazeny kompaktní verzí od avrlibc (stdio v newlib nebylo vhodné pro svou vysokou spotřebu zdrojů). Vzhledem k tomu, že Keithova současná práce zahrnuje pokračující práci s architekturou RISC-V a vývojem nástrojů pro vestavěná zařízení, nedávno zhodnotil stav implementací libc a dospěl k závěru, že s malým vylepšením by kombinace newlib a avrlibc mohla být dobrým obecným účelem. řešení. Zpočátku se projekt vyvíjel pod názvem „newlib-nano“, ale aby nedošlo k záměně s knihovnou Newlib, byl přejmenován na PicoLibc.

Ve své současné podobě Picolibc již provedl práci na odstranění veškerého kódu, který není dodáván pod licencí BSD (tento kód nebyl použit při vytváření pro embedded zařízení), což výrazně zjednodušilo situaci s licencí pro projekt. Implementace místních streamů byla přesunuta z 'struct _reent' do mechanismu TLS (vlákno-místní úložiště). Kompaktní verze stdio, vypůjčená z kódu knihovny avrlibc, je standardně aktivována (vložky assembleru specifické pro ATmel jsou přepsány v C). Pro sestavení byl použit Meson toolkit, který umožnil nevázat se na sestavení skriptů newlib a zjednodušit přenos změn z newlib. Přidána zjednodušená verze inicializačního kódu (crt0), připojená ke spustitelnému souboru a spuštěná před přenesením řízení do funkce main().

Ve verzi Picolibc 1.1:

  • Přidána pomocná knihovna na podporu technologie "semihosting"umožňuje běh kódu v prostředí ladicího programu nebo emulátoru pro použití I/O mechanismů hostitelského systému;
  • Pro systémy, které podporují systémová volání open, close, read a write, tinystdio přidává standardizovaná I/O rozhraní POSIX stdio, včetně funkcí fopen a fdopen, stejně jako navázání stdin/stdout/stderr na deskriptory souborů definované POSIX;
  • Nedávné změny z kódové základny newlib byly přeneseny. Včetně přidaných libm útržků pro fenv.h, který lze použít na systémech bez podpory s pohyblivou řádovou čárkou;
  • Přidán příklad sestavení aplikace „Hello world“ s picolibc pro systémy ARM a RISC-V;
  • Byly odstraněny adresáře newlib, libm a mathfp, které obsahovaly nepoužitý experimentální kód.

Zdroj: opennet.ru

Přidat komentář