La bibliothèque standard C PicoLibc 1.1 est disponible

Keith Packard, développeur actif de Debian, leader du projet X.Org et créateur de nombreuses extensions X, y compris XRender, XComposite et XRandR, présenté le lancement d'une nouvelle bibliothèque standard C PicoLibc 1.1, développée pour être utilisée sur des appareils embarqués avec un stockage permanent et une mémoire vive limités. Dans le 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 de PicoLibc est distribué sous licence BSD. La bibliothèque est compilée pour les architectures ARM (32 bits), i386, RISC-V, x86_64 et PowerPC.

Keith Packard a commencé le développement après avoir cherché une alternative adéquate à Libc qui pourrait être utilisée sur des appareils embarqués avec une faible RAM. Le projet est en cours de développement depuis l'année dernière. À ses débuts, le projet était une variante de newlib, dont les fonctions stdio ont été remplacées par une version compacte d'avrlibc (stdio dans newlib consommait trop de ressources). Comme les activités actuelles de Keith sont liées à un travail constant avec l'architecture RISC-V et au développement d'outils pour des appareils embarqués, il a récemment réévalué les états des implémentations de libc et a conclu qu'avec quelques ajustements, la combinaison de newlib et d'avrlibc pourrait devenir une bonne solution universelle. Initialement, le projet se développait sous le nom de « newlib-nano », mais pour éviter toute confusion avec la bibliothèque Newlib, il a été renommé PicoLibc.

Dans son état actuel, PicoLibc a déjà supprimé tout le code qui n'est pas distribué sous licence BSD (ce code n'a pas été utilisé lors de la compilation pour des appareils embarqués), ce qui a considérablement simplifié la situation concernant la licence du projet. L'implémentation des flux locaux a été convertie de 'struct _reent' au mécanisme TLS (stockage local des threads). Une version compacte par défaut de stdio, empruntée à la code de la bibliothèque avrlibc (les insertions en assembleur spécifiques à Atmel ont été réécrites en C), a été activée. Le cadre de compilation Meson a été utilisé, ce qui a permis de ne pas dépendre des scripts de compilation de newlib et de simplifier le transfert des modifications de newlib. Une version simplifiée du code d'initialisation (crt0), attachée à l'exécutable et exécutée avant de transférer le contrôle à la fonction main(), a été ajoutée.

Dans la version PicoLibc 1.1 :

  • Une bibliothèque auxiliaire a été ajoutée pour supporter la technologie «semihosting«, permettant au code exécuté dans un environnement de débogage ou d'émulation d'utiliser les mécanismes d'entrée/sortie du système hôte;
  • Pour les systèmes prenant en charge les appels système open, close, read et write, des interfaces d'entrée/sortie stdio standardisées POSIX ont été ajoutées dans tinystdio, y compris les fonctions fopen et fdopen, ainsi que le lien stdin/stdout/stderr à des descripteurs de fichiers définis dans POSIX;
  • Des modifications récentes du code de newlib ont été transférées. Y compris des stubs libm pour fenv.h, qui peuvent être utilisés sur des systèmes sans prise en charge des calculs à virgule flottante;
  • Un exemple de construction d'une application « Hello world » avec picolibc pour les systèmes ARM et RISC-V a été ajouté;
  • Les répertoires newlib, libm et mathfp, contenant du code expérimental inutilisé, ont été supprimés.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster