Standardní C knihovna PicoLibc 1.1 je k dispozici

Keith Packard, aktivní vývojář Debianu, vedoucí projektu X.Org a tvůrce mnoha X rozšíření, včetně XRender, XComposite a XRandR, představil novou standardní C knihovnu PicoLibc 1.1, která je vyvíjena pro použití na vestavných zařízeních s omezenou velikostí trvalého úložiště a operační paměti. Při vývoji byla část kódu převzata z knihovny newlib z projektu Cygwin a AVR Libc, která byla vyvíjena pro mikrokontroléry Atmel AVR. Kód PicoLibc distribuováno je licencován pod licencí BSD. Knihovna je podpůrná pro architektury ARM (32-bit), i386, RISC-V, x86_64 a PowerPC.

Keith Packard začal vyvíjet po tom, co nenašel vhodnou variantu Libc, kterou by bylo možné použít na vestavných zařízeních s malou RAM. Projekt se vyvíjí od loňského roku. V první fázi projekt představoval variantu newlib, jejíž funkce stdio byly nahrazeny kompaktní variantou z avrlibc (stdio v newlib nevyhovovalo kvůli vysoké spotřebě zdrojů). Vzhledem k tomu, že aktuální činnost Keitha souvisí s neustálou prací s architekturou RISC-V a vývojem nástrojů pro vestavná zařízení, nedávno přehodnotil stav realizací libc a dospěl k závěru, že s malými úpravami může být kombinace newlib a avrlibc dobrým univerzálním řešením. Původně byl projekt vyvíjen pod názvem „newlib-nano“, ale aby se předešlo záměně s knihovnou Newlib, byl přejmenován na PicoLibc.

V aktuální verzi PicoLibc byla již provedena práce na odstranění veškerého kódu, který není poskytován pod licencí BSD (tento kód nebyl používán při sestavování pro vestavná zařízení), což výrazně usnadnilo situaci s licencí na projekt. Realizace lokálních vláken byla převedena z ‘struct _reent’ na mechanismus TLS (thread-local storage). Výchozí kompaktní varianta stdio, převzatá z kódu knihovny avrlibc, byla aktivována (specifické pro ATmel assemblerové vklady byly převedeny do C). Pro sestavení byl použit nástroj Meson, což umožnilo nezavázat se ke scénářům pro sestavení newlib a usnadnit přenos změn z newlib. Byla přidána zjednodušená varianta inicializačního kódu (crt0), který je připojen k spustitelnému souboru a vykonává se před předáním řízení funkci main().

Ve verzi PicoLibc 1.1:

  • Byla přidána pomocná knihovna pro podporu technologie „semihosting«, která umožňuje kódu běžícímu v prostředí ladicího nebo emulačního nástroje využívat mechanismy vstupu/výstupu hostitelského systému;
  • Pro systémy, které podporují systémové výskyty open, close, read a write, byly do tinystdio přidány standardizované POSIX rozhraní pro vstup/výstup stdio, včetně funkcí fopen a fdopen, a také byla provedena vazba stdin/stdout/stderr na konkrétní POSIX file deskriptory;
  • Byly přeneseny nedávné změny z kódové základny newlib. Mezi ně patří přidání stubů libm pro fenv.h, které lze použít v systémech bez podpory výpočtů s plovoucí desetinnou čárkou;
  • Byl 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster