Biblioteca C padrão PicoLibc 1.1 disponível

Keith Packard, desenvolvedor Debian ativo, líder do projeto X.Org e criador de muitas extensões X, incluindo XRender, XComposite e XRandR, introduzido lançamento de uma nova biblioteca C padrão PicoLibc 1.1, 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.

Keith Packard iniciou o desenvolvimento depois de não conseguir encontrar uma opção Libc decente que pudesse ser usada em dispositivos embarcados com pouca RAM. O projeto vem se desenvolvendo desde o ano passado. Na primeira fase, o projeto era uma variante do newlib, cujas funções do stdio foram substituídas por uma versão compacta do avrlibc (stdio no newlib não era adequado para seu alto consumo de recursos). Como o trabalho atual de Keith envolve trabalho contínuo com a arquitetura RISC-V e desenvolvimento de ferramentas para dispositivos embarcados, ele revisou recentemente o estado das implementações da libc e concluiu que, com alguns ajustes, a combinação de newlib e avrlibc poderia ser uma boa solução de uso geral. solução. Inicialmente, o projeto foi desenvolvido com o nome “newlib-nano”, mas para evitar confusão com a biblioteca Newlib foi renomeado como PicoLibc.

Na sua forma atual, o Picolibc já trabalhou para remover todo o código que não é fornecido sob licença BSD (esse código não foi usado na construção para dispositivos embarcados), o que simplificou significativamente a situação com a licença do projeto. A implementação de streams locais foi movida de 'struct _reent' para o mecanismo TLS (armazenamento local de thread). A versão compacta do stdio, emprestada do código da biblioteca avrlibc, é ativada por padrão (as inserções do assembler específicas do ATmel são reescritas em C). O kit de ferramentas Meson foi utilizado para montagem, o que possibilitou não ficar vinculado aos scripts assembly newlib e simplificar a transferência de alterações do newlib. Adicionada uma versão simplificada do código de inicialização (crt0), anexada ao arquivo executável e executada antes que o controle seja transferido para a função main().

Na versão 1.1 do Picolibc:

  • Adicionada biblioteca auxiliar para suporte à tecnologia "semi-hospedagem"permite que o código executado em um ambiente de depurador ou emulador use os mecanismos de E/S do sistema host;
  • Para sistemas que suportam chamadas de sistema open, close, read e write, tinystdio adiciona interfaces de E/S stdio POSIX padronizadas, incluindo as funções fopen e fdopen, bem como vinculação stdin/stdout/stderr a descritores de arquivo definidos por POSIX;
  • Mudanças recentes da base de código newlib foram transferidas. Incluindo stubs libm adicionados para fenv.h, que pode ser usado em sistemas sem suporte de ponto flutuante;
  • Adicionado um exemplo de construção da aplicação “Hello world” com picolibc para sistemas ARM e RISC-V;
  • Removidos os diretórios newlib, libm e mathfp, que continham código experimental não utilizado.

Fonte: opennet.ru

Adicionar um comentário