Standard C-bibliotek PicoLibc 1.1 tilgjengelig

Keith Packard, aktiv Debian-utvikler, leder av X.Org-prosjektet og skaper av mange X-utvidelser, inkludert XRender, XComposite og XRandR, innsendt utgivelse av et nytt standard C-bibliotek PicoLibc 1.1, utviklet for bruk på innebygde enheter med begrenset permanent lagring og RAM. Under utviklingen ble en del av koden lånt fra biblioteket newlib fra Cygwin-prosjektet og AVR Libc, utviklet for Atmel AVR mikrokontrollere. PicoLibc-kode distribuert av under BSD-lisens. Biblioteksammenstilling støttes for ARM (32-bit), i386, RISC-V, x86_64 og PowerPC-arkitekturer.

Keith Packard begynte utviklingen etter at han ikke klarte å finne et anstendig Libc-alternativ som kunne brukes på innebygde enheter med lite RAM. Prosjektet har vært under utvikling siden i fjor. I den første fasen var prosjektet en variant av newlib, funksjonene til stdio der ble erstattet med en kompakt versjon fra avrlibc (stdio i newlib var ikke egnet for det høye ressursforbruket). Siden Keiths nåværende arbeid involverer pågående arbeid med RISC-V-arkitekturen og utvikling av verktøy for innebygde enheter, gjennomgikk han nylig tilstanden til libc-implementeringer og konkluderte med at kombinasjonen av newlib og avrlibc kan være en god generell hensikt med litt justeringer. løsning. Opprinnelig utviklet prosjektet seg under navnet "newlib-nano", men for å unngå forvirring med Newlib-biblioteket ble det omdøpt til PicoLibc.

I sin nåværende form har Picolibc allerede jobbet med å fjerne all kode som ikke leveres under en BSD-lisens (denne koden ble ikke brukt ved bygging for innebygde enheter), noe som har forenklet situasjonen med lisensen for prosjektet betydelig. Implementeringen av lokale strømmer har blitt flyttet fra 'struct _reent' til TLS-mekanismen (tråd-lokal lagring). Den kompakte versjonen av stdio, lånt fra avrlibc-bibliotekskoden, er aktivert som standard (ATmel-spesifikke assembler-innlegg skrives om i C). Meson-verktøysettet ble brukt til montering, noe som gjorde det mulig å ikke være knyttet til newlib-monteringsskript og forenkle overføringen av endringer fra newlib. Lagt til en forenklet versjon av initialiseringskoden (crt0), festet til den kjørbare filen og utført før kontrollen overføres til hoved()-funksjonen.

I Picolibc versjon 1.1:

  • Lagt til hjelpebibliotek for å støtte teknologien "semihosting"tillater kode som kjører i et debugger- eller emulatormiljø å bruke vertssystemets I/O-mekanismer;
  • For systemer som støtter åpne, lukke, lese og skrive systemkall, legger tinystdio til standardiserte POSIX stdio I/O-grensesnitt, inkludert fopen- og fdopen-funksjonene, i tillegg til å binde stdin/stdout/stderr til POSIX-definerte filbeskrivelser;
  • Nylige endringer fra newlib-kodebasen er overført. Inkludert lagt til libm-stubber for fenv.h, som kan brukes på systemer uten flytepunktstøtte;
  • Lagt til et eksempel på å bygge "Hello world"-applikasjonen med picolibc for ARM- og RISC-V-systemer;
  • Fjernet katalogene newlib, libm og mathfp, som inneholdt ubrukt eksperimentell kode.

Kilde: opennet.ru

Legg til en kommentar