Biblioteca C estándar PicoLibc 1.1 dispoñible

Keith Packard, desenvolvedor activo de Debian, líder do proxecto X.Org e creador de moitas extensións X, incluíndo XRender, XComposite e XRandR, introducido lanzamento dunha nova biblioteca C estándar PicoLibc 1.1desenvolvido para o seu uso en dispositivos integrados con almacenamento persistente limitado e RAM. Durante o desenvolvemento, parte do código foi prestado da biblioteca newlib do proxecto Cygwin e AVR Libc, desenvolvido para microcontroladores Atmel AVR. Código PicoLibc distribuído por baixo a licenza BSD. O montaxe da biblioteca é compatible con arquitecturas ARM (32 bits), i386, RISC-V, x86_64 e PowerPC.

Keith Packard comezou o desenvolvemento despois de ser incapaz de atopar unha opción Libc decente que se puidese usar en dispositivos integrados con pouca memoria RAM. O proxecto desenvólvese dende o ano pasado. Na primeira etapa, o proxecto foi unha variante de newlib, as funcións de stdio na que foron substituídas por unha versión compacta de avrlibc (stdio en newlib non era axeitado para o seu alto consumo de recursos). Dado que o traballo actual de Keith implica un traballo continuo coa arquitectura RISC-V e o desenvolvemento de ferramentas para dispositivos integrados, recentemente revisou o estado das implementacións de libc e concluíu que, cun pequeno axuste, a combinación de newlib e avrlibc podería ser un bo propósito xeral. solución. Inicialmente, o proxecto desenvolveuse baixo o nome "newlib-nano", pero para evitar confusións coa biblioteca Newlib pasou a chamarse PicoLibc.

Na súa forma actual, Picolibc xa traballou para eliminar todo o código que non se proporciona baixo unha licenza BSD (este código non se utilizou cando se construíu para dispositivos integrados), o que simplificou significativamente a situación coa licenza do proxecto. A implementación de fluxos locais moveuse de 'struct _reent' ao mecanismo TLS (almacenamento local de fíos). A versión compacta de stdio, tomada do código da biblioteca avrlibc, está activada por defecto (as insercións do ensamblador específicos de ATmel reescríbense en C). Utilizouse o conxunto de ferramentas Meson para a montaxe, o que permitiu non estar ligado a scripts de montaxe newlib e simplificar a transferencia de cambios desde newlib. Engadiuse unha versión simplificada do código de inicialización (crt0), anexada ao ficheiro executable e executada antes de que o control se transfira á función main().

Na versión 1.1 de Picolibc:

  • Engadida biblioteca auxiliar para soportar a tecnoloxía "semihosting"permite que o código que se executa nun ambiente depurador ou emulador utilice os mecanismos de E/S do sistema host;
  • Para os sistemas que admiten chamadas de sistema de apertura, peche, lectura e escritura, tinystdio engade interfaces de E/S POSIX stdio estandarizadas, incluíndo as funcións fopen e fdopen, así como vincular stdin/stdout/stderr aos descritores de ficheiros definidos por POSIX;
  • Os cambios recentes da base de código newlib foron trasladados. Incluíndo os stubs libm engadidos para fenv.h, que se pode usar en sistemas sen soporte de coma flotante;
  • Engadiuse un exemplo de construción da aplicación "Hello world" con picolibc para sistemas ARM e RISC-V;
  • Elimináronse os directorios newlib, libm e mathfp, que contiñan código experimental non utilizado.

Fonte: opennet.ru

Engadir un comentario