Standard C-bibliotek PicoLibc 1.1 tilgængelig

Keith Packard, aktiv Debian-udvikler, leder af X.Org-projektet og skaber af mange X-udvidelser, herunder XRender, XComposite og XRandR, indsendt frigivelse af et nyt standard C-bibliotek PicoLibc 1.1, udviklet til brug på indlejrede enheder med begrænset permanent lagerplads og RAM. Under udviklingen blev en del af koden lånt fra biblioteket newlib fra Cygwin-projektet og AVR Libc, udviklet til Atmel AVR mikrocontrollere. PicoLibc kode distribueret af under BSD-licens. Bibliotekssamling er understøttet for ARM (32-bit), i386, RISC-V, x86_64 og PowerPC arkitekturer.

Keith Packard begyndte udviklingen efter at have været ude af stand til at finde en anstændig Libc-mulighed, der kunne bruges på indlejrede enheder med lidt RAM. Projektet har været under udvikling siden sidste år. I den første fase var projektet en variant af newlib, hvor funktionerne i stdio blev erstattet med en kompakt version fra avrlibc (stdio i newlib var ikke egnet til dets høje ressourceforbrug). Da Keiths nuværende arbejde involverer igangværende arbejde med RISC-V-arkitekturen og udvikling af værktøj til indlejrede enheder, gennemgik han for nylig tilstanden af ​​libc-implementeringer og konkluderede, at kombinationen af ​​newlib og avrlibc kunne være et godt generelt formål med en lille justering. løsning. Oprindeligt udviklede projektet sig under navnet "newlib-nano", men for at undgå forveksling med Newlib-biblioteket blev det omdøbt til PicoLibc.

I sin nuværende form har Picolibc allerede arbejdet på at fjerne al kode, der ikke leveres under en BSD-licens (denne kode blev ikke brugt, når man byggede til indlejrede enheder), hvilket væsentligt har forenklet situationen med licensen til projektet. Implementeringen af ​​lokale streams er blevet flyttet fra 'struct _reent' til TLS-mekanismen (tråd-lokal opbevaring). Den kompakte version af stdio, lånt fra avrlibc-bibliotekskoden, er aktiveret som standard (ATmel-specifikke assembler-indlæg omskrives i C). Meson-værktøjssættet blev brugt til assembly, hvilket gjorde det muligt ikke at være bundet til newlib assembly scripts og forenkle overførslen af ​​ændringer fra newlib. Tilføjet en forenklet version af initialiseringskoden (crt0), knyttet til den eksekverbare fil og udført før kontrol overføres til main()-funktionen.

I Picolibc version 1.1:

  • Tilføjet hjælpebibliotek for at understøtte teknologien "semihosting"tillader kode, der kører i et debugger- eller emulatormiljø, at bruge værtssystemets I/O-mekanismer;
  • For systemer, der understøtter åbne, lukke, læse og skrive systemkald, tilføjer tinystdio standardiserede POSIX stdio I/O-grænseflader, inklusive fopen- og fdopen-funktionerne, samt binding af stdin/stdout/stderr til POSIX-definerede filbeskrivelser;
  • Nylige ændringer fra newlib-kodebasen er blevet overført. Inklusiv tilføjede libm stubs til fenv.h, som kan bruges på systemer uden floating-point support;
  • Tilføjet et eksempel på opbygning af "Hello world"-applikationen med picolibc til ARM- og RISC-V-systemer;
  • Fjernede mapperne newlib, libm og mathfp, som indeholdt ubrugt eksperimentel kode.

Kilde: opennet.ru

Tilføj en kommentar