Frigivelse af standard C-biblioteket PicoLibc 1.8.9

Udgivelsen af ​​standard C-biblioteket PicoLibc 1.8.9, udviklet af Keith Packard (leder af X.Org-projektet) til brug på indlejrede enheder med begrænset lagerplads og RAM, er blevet offentliggjort. Under udviklingen blev en del af koden lånt fra newlib-biblioteket fra Cygwin-projektet og AVR Libc, udviklet til Atmel AVR-mikrocontrollere. PicoLibc-koden distribueres under BSD-licensen. Bibliotekssamling er understøttet for ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch og OpenRisc arkitekturer.

Oprindeligt blev projektet udviklet under navnet "newlib-nano" og havde til formål at omarbejde nogle af de ressourcekrævende funktioner i Newlib, som var problematiske at bruge på indlejrede enheder med lidt RAM. For eksempel i PicoLibc erstattes stdio-funktionerne med en kompakt version fra avrlibc-biblioteket. Koden ryddes også for komponenter, der ikke bruges i den indlejrede enhed, som ikke leveres under BSD-licensen. En forenklet version af initialiseringskoden (crt0) er blevet tilføjet, og implementeringen af ​​opkald er blevet overført fra 'struct _reent' til TLS-mekanismen (thread-local storage). Meson værktøjssættet bruges til montering.

I den nye udgivelse:

  • Tilføjet understøttelse af LoongArch, OpenRISC og LatticMico32 arkitekturer.
  • En implementering af uchar.h header-filen introduceret i C11-standarden foreslås.
  • Tilføjet nano-malloc-clear-freed indstilling for at rydde hukommelse frigivet efter free() eller realloc().
  • Implementeret muligheden for at bruge clang multilib på ARM64-systemer.
  • Overgangen til det nye picolibc-ci-tools værktøjssæt til automatisk samling i kontinuerlige integrationssystemer er fuldført.
  • MIPS-arkitekturen understøtter "semihosting"-teknologi, som gør det muligt at køre kode i et debugger- eller emulatormiljø for at bruge værtssystemets I/O-mekanismer.
  • Tilføjet picocrt og semihost-understøttelse til Xtensa-processorer.
  • Tilføjede indstillinger til brug med CoreBoot.
  • Tilføjet memset_explicit()-funktionen, introduceret i C23-standarden.
  • Sagskonverteringstabeller er blevet opdateret til Unicode-specifikation 15.1.0.
  • Funktionerne asnprintf() og vasnprintf() er blevet flyttet fra newlib-biblioteket.
  • Tilføjet understøttelse af FVP (Fixed Virtual Platforms) emulator udviklet af ARM.
  • Tilføjet understøttelse af ældre versioner af GCC-kompileren (ældre end 4.4).
  • Implementeringerne iconv og locale er blevet erstattet med mere kompakte versioner, der bruger fælles kode til at arbejde med kodninger.

Kilde: opennet.ru

Tilføj en kommentar