Sortie de la bibliothèque standard C PicoLibc 1.8.6

Une version de la bibliothèque C standard PicoLibc 1.8.6 a été publiée, développée par Keith Packard (chef de projet X.Org) pour une utilisation sur des appareils embarqués avec une quantité limitée de stockage permanent et de RAM. Lors du développement, une partie du code a été empruntée à la bibliothèque newlib du projet Cygwin et AVR Libc, développée pour les microcontrôleurs Atmel AVR. Le code PicoLibc est distribué sous licence BSD. L'assemblage de bibliothèques est pris en charge pour les architectures ARM (32 bits), Aarch64, i386, RISC-V, x86_64, m68k et PowerPC.

Initialement, le projet était développé sous le nom de « newlib-nano » et visait à retravailler certaines des fonctions gourmandes en ressources de Newlib, qui étaient problématiques à utiliser sur des appareils embarqués avec peu de RAM. Par exemple, dans PicoLibc, les fonctions stdio sont remplacées par une version compacte de la bibliothèque avrlibc. Le code est également débarrassé des composants non utilisés dans l'assemblage de périphériques intégrés qui ne sont pas fournis sous la licence BSD. Une version simplifiée du code d'initialisation (crt0) a été ajoutée et l'implémentation des appels a été transférée de 'struct _reent' vers le mécanisme TLS (thread-local storage). La boîte à outils Meson est utilisée pour l'assemblage.

Dans la nouvelle version :

  • Les modifications de Newlib 4.4.0 ont été transférées, comme la prise en charge du type « long double » sur les architectures i386, RISC-V, Aarch64 et x86_64, la prise en charge des extensions RISC-V Zfinx/Zdinx, la possibilité d'utiliser des masques lors de l'insertion de répertoires. , implémentation d'un port pour les processeurs Xtensa, séparant les gestionnaires printf en fichiers séparés pour réduire la taille lors de la liaison.
  • Ajout des symboles "__eh_*" à picolibc.ld pour LLVM libunwind.
  • La prise en charge des tests pour les systèmes SPARC 32 bits est incluse.
  • Prise en charge des plates-formes cibles avec des types à virgule flottante atypiques, qui sont désormais reflétés dans les types 32, 64, 80 et 128 bits dans le code picolibc.
  • Ajout de la prise en charge de l'architecture SuperH RISC.
  • Trace de pile améliorée lors du débogage du code d’exception sur les systèmes RISC-V.
  • Ajout de l'option "-Dfast-bufio=true" pour améliorer l'efficacité de lecture et d'écriture lors de l'utilisation de bufio.
  • Nettoyage des fonctions publiques en ligne pour partager la sémantique gnu_inline.
  • La plupart des fonctions fenv ont été déplacées pour utiliser des fonctions en ligne (gnu_inline) au lieu des fonctions habituelles pour améliorer les performances.
  • Une implémentation alternative de ctype a été créée qui n'utilise pas le tableau ctype et effectue une comparaison directe des valeurs.

Source: opennet.ru

Ajouter un commentaire