Standard C-bibliotek PicoLibc 1.1 tillgängligt

Keith Packard, aktiv Debianutvecklare, ledare för X.Org-projektet och skapare av många X-tillägg, inklusive XRender, XComposite och XRandR, lämnats release av ett nytt standard C-bibliotek PicoLibc 1.1, utvecklad för användning på inbäddade enheter med begränsad permanent lagring och RAM. Under utvecklingen lånades en del av koden från biblioteket newlib från Cygwin-projektet och AVR Libc, utvecklad för Atmel AVR-mikrokontroller. PicoLibc-kod levererad av under BSD-licens. Bibliotekssammansättning stöds för ARM (32-bitars), i386, RISC-V, x86_64 och PowerPC-arkitekturer.

Keith Packard började utvecklas efter att inte kunna hitta ett anständigt Libc-alternativ som kunde användas på inbäddade enheter med lite RAM. Projektet har utvecklats sedan förra året. I det första skedet var projektet en variant av newlib, där funktionerna i stdio ersattes med en kompakt version från avrlibc (stdio i newlib var inte lämplig för dess höga resursförbrukning). Eftersom Keiths nuvarande arbete omfattar pågående arbete med RISC-V-arkitekturen och utveckling av verktyg för inbäddade enheter, granskade han nyligen tillståndet för libc-implementeringar och drog slutsatsen att med lite justeringar kan kombinationen av newlib och avrlibc vara ett bra allmänt syfte. lösning. Till en början utvecklades projektet under namnet "newlib-nano", men för att undvika förväxling med Newlib-biblioteket döptes det om till PicoLibc.

I sin nuvarande form har Picolibc redan gjort ett arbete för att ta bort all kod som inte tillhandahålls under en BSD-licens (denna kod användes inte när man byggde för inbäddade enheter), vilket avsevärt har förenklat situationen med licensen för projektet. Implementeringen av lokala strömmar har flyttats från 'struct _reent' till TLS-mekanismen (tråd-lokal lagring). Den kompakta versionen av stdio, lånad från avrlibc-bibliotekskoden, är aktiverad som standard (ATmel-specifika assembler-inlägg skrivs om i C). Meson-verktygssatsen användes för montering, vilket gjorde det möjligt att inte vara bunden till newlib-sammansättningsskript och för att förenkla överföringen av ändringar från newlib. Lade till en förenklad version av initieringskoden (crt0), bifogad till den körbara filen och körs innan kontrollen överförs till main()-funktionen.

I Picolibc version 1.1:

  • Lade till extra bibliotek för att stödja tekniken "semihosting"tillåter kod som körs i en debugger- eller emulatormiljö att använda värdsystemets I/O-mekanismer;
  • För system som stöder öppna, stänga, läsa och skriva systemanrop, lägger tinystdio till standardiserade POSIX stdio I/O-gränssnitt, inklusive fopen- och fdopen-funktionerna, samt binder stdin/stdout/stderr till POSIX-definierade filbeskrivningar;
  • De senaste ändringarna från newlib-kodbasen har överförts. Inklusive tillagda libm-stubbar för fenv.h, som kan användas på system utan flyttalstöd;
  • Lade till ett exempel på att bygga "Hello world"-applikationen med picolibc för ARM- och RISC-V-system;
  • Tog bort katalogerna newlib, libm och mathfp, som innehöll oanvänd experimentell kod.

Källa: opennet.ru

Lägg en kommentar