Utgivelse av standard C-biblioteket PicoLibc 1.8.9

Utgivelsen av standard C-biblioteket PicoLibc 1.8.9, utviklet av Keith Packard (leder av X.Org-prosjektet) for bruk på innebygde enheter med begrenset lagring og RAM, har blitt publisert. Under utviklingen ble en del av koden lånt fra newlib-biblioteket fra Cygwin-prosjektet og AVR Libc, utviklet for Atmel AVR-mikrokontrollere. PicoLibc-koden distribueres under BSD-lisensen. Biblioteksammenstilling støttes for ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch og OpenRisc arkitekturer.

Opprinnelig ble prosjektet utviklet under navnet "newlib-nano" og var rettet mot å omarbeide noen av de ressurskrevende funksjonene til Newlib, som var problematiske å bruke på innebygde enheter med lite RAM. For eksempel, i PicoLibc er stdio-funksjonene erstattet med en kompakt versjon fra avrlibc-biblioteket. Koden slettes også for komponenter som ikke brukes i den innebygde enhetssammenstillingen som ikke leveres under BSD-lisensen. En forenklet versjon av initialiseringskoden (crt0) er lagt til, og implementeringen av samtaler er overført fra 'struct _reent' til TLS-mekanismen (thread-local storage). Meson-verktøysettet brukes til montering.

I den nye utgivelsen:

  • Lagt til støtte for LoongArch, OpenRISC og LatticMico32 arkitekturer.
  • En implementering av uchar.h header-filen introdusert i C11-standarden er foreslått.
  • Lagt til nano-malloc-clear-freed-innstilling for å tømme minne frigjort etter free() eller realloc().
  • Implementerte muligheten til å bruke clang multilib på ARM64-systemer.
  • Overgangen til det nye picolibc-ci-tools verktøysettet for automatisk montering i kontinuerlige integrasjonssystemer er fullført.
  • MIPS-arkitekturen støtter «semihosting»-teknologi, som gjør at kode kjører i et debugger- eller emulatormiljø for å bruke vertssystemets I/O-mekanismer.
  • Lagt til støtte for picocrt og semihost for Xtensa-prosessorer.
  • Lagt til innstillinger for bruk med CoreBoot.
  • Lagt til funksjonen memset_explicit(), introdusert i C23-standarden.
  • Sakskonverteringstabeller er oppdatert til Unicode-spesifikasjon 15.1.0.
  • Funksjonene asnprintf() og vasnprintf() har blitt flyttet fra newlib-biblioteket.
  • Lagt til støtte for FVP (Fixed Virtual Platforms) emulator utviklet av ARM.
  • Lagt til støtte for eldre versjoner av GCC-kompilatoren (eldre enn 4.4).
  • Implementeringene iconv og locale er erstattet med mer kompakte versjoner som bruker vanlig kode for å jobbe med kodinger.

Kilde: opennet.ru

Legg til en kommentar