Lançamento da biblioteca C padrão PicoLibc 1.4.7

Keith Packard, desenvolvedor Debian ativo, líder do projeto X.Org e criador de muitas extensões X, incluindo XRender, XComposite e XRandR, опубликовал lançamento da biblioteca C padrão PicoLibc 1.4.7, desenvolvido para uso em dispositivos incorporados com armazenamento permanente e RAM limitados. Durante o desenvolvimento, parte do código foi emprestada da biblioteca novalib do projeto Cygwin e AVR Libc, desenvolvido para microcontroladores Atmel AVR. Código PicoLibc distribuído por sob licença BSD. A montagem da biblioteca é suportada pelas arquiteturas ARM (32 bits), i386, RISC-V, x86_64 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, as funções stdio foram substituídas por uma versão compacta da biblioteca avrlibc. O código também foi limpo de componentes não licenciados pelo BSD não usados ​​na compilação incorporada. Uma versão simplificada do código de inicialização (crt0) foi adicionada e a implementação de threads locais foi movida de 'struct _reent' para o mecanismo TLS (armazenamento local de thread). O kit de ferramentas Meson é usado para montagem.

Na nova versão:

  • Adicionada a capacidade de construir usando verificado matematicamente compilador CompCert.
  • Adicionado suporte para o compilador Clang.
  • O comportamento da função 'gama' foi alinhado com o comportamento do Glibc.
  • A implementação nano-malloc garante que a memória retornada seja limpa.
  • Melhor desempenho do nano-realloc, especialmente ao mesclar blocos livres e expandir o tamanho do heap.
  • Adicionado um conjunto de testes para verificar o correto funcionamento do malloc.
  • Suporte aprimorado para a plataforma Windows e adição da capacidade de construção usando o kit de ferramentas mingw.
  • Em sistemas ARM, se disponível, o registro de hardware TLS (Thread-Local Storage) está habilitado.

Fonte: opennet.ru