Lançamento da biblioteca C padrão PicoLibc 1.8.6

Foi publicada uma versão da biblioteca C padrão PicoLibc 1.8.6, desenvolvida por Keith Packard (líder do projeto X.Org) para uso em dispositivos embarcados com uma quantidade limitada de armazenamento permanente e RAM. Durante o desenvolvimento, parte do código foi emprestada da biblioteca newlib do projeto Cygwin e AVR Libc, desenvolvida para microcontroladores Atmel AVR. O código PicoLibc é distribuído sob a licença BSD. A montagem da biblioteca é compatível com as arquiteturas ARM (32 bits), Aarch64, i386, RISC-V, x86_64, m68k e PowerPC.

Inicialmente, o projeto foi desenvolvido sob o nome “newlib-nano” e tinha como objetivo retrabalhar algumas das funções de uso intensivo de recursos do Newlib, que eram problemáticas para uso em dispositivos embarcados com pouca RAM. Por exemplo, no PicoLibc as funções stdio são substituídas por uma versão compacta da biblioteca avrlibc. O código também está livre de componentes não usados ​​na montagem do dispositivo incorporado que não são fornecidos sob a licença BSD. Uma versão simplificada do código de inicialização (crt0) foi adicionada e a implementação das chamadas foi transferida de ‘struct _reent’ para o mecanismo TLS (thread-local storage). O kit de ferramentas Meson é usado para montagem.

Na nova versão:

  • Foram transferidas alterações do Newlib 4.4.0, como suporte ao tipo “long double” nas arquiteturas i386, RISC-V, Aarch64 e x86_64, suporte para extensões RISC-V Zfinx/Zdinx, capacidade de usar máscaras ao inserir diretórios , implementação de uma porta para processadores Xtensa, separando manipuladores printf em arquivos separados para reduzir o tamanho ao vincular.
  • Adicionados símbolos "__eh_*" ao picolibc.ld para LLVM libunwind.
  • O suporte de teste para sistemas SPARC de 32 bits está incluído.
  • Forneceu suporte para plataformas de destino com tipos de ponto flutuante não típicos, que agora são refletidos em tipos de 32, 64, 80 e 128 bits no código picolibc.
  • Adicionado suporte para a arquitetura SuperH RISC.
  • Rastreamento de pilha aprimorado ao depurar código de exceção em sistemas RISC-V.
  • Adicionada opção "-Dfast-bufio=true" para melhorar a eficiência de leitura e gravação ao usar o bufio.
  • Funções inline públicas limpas para compartilhar a semântica gnu_inline.
  • A maioria das funções fenv foram movidas para usar funções inline (gnu_inline) em vez de funções regulares para melhorar o desempenho.
  • Foi criada uma implementação alternativa de ctype que não usa o array ctype e realiza uma comparação direta de valores.

Fonte: opennet.ru

Adicionar um comentário