Versão da biblioteca do sistema Glibc 2.36

Após seis meses de desenvolvimento, foi lançada a biblioteca do sistema GNU C Library (glibc) 2.36, que atende integralmente aos requisitos dos padrões ISO C11 e POSIX.1-2017. A nova versão inclui correções de 59 desenvolvedores.

Algumas das melhorias implementadas no Glibc 2.36 incluem:

  • Adicionado suporte para o novo formato de realocação de endereço DT_RELR (relocação relativa), que permite reduzir o tamanho das realocações relativas em objetos compartilhados e arquivos executáveis ​​vinculados no modo PIE (executáveis ​​independentes de posição). O uso do campo DT_RELR em arquivos ELF requer suporte para a opção "-z pack-relative-relocs" no vinculador, introduzida no lançamento do binutils 2.38.
  • Para a plataforma Linux, são implementadas as funções pidfd_open, pidfd_getfd e pidfd_send_signal, fornecendo acesso à funcionalidade pidfd que ajuda a lidar com situações de reutilização de PID para identificar com mais precisão os processos que acessam arquivos monitorados (o pidfd está associado a um processo específico e não muda, enquanto o PID pode ser anexado a outro processo após o término do processo atual associado a esse PID).
  • Para a plataforma Linux, a função process_madvise() foi adicionada para permitir que um processo emita a chamada de sistema madvise() em nome de outro processo, identificando o processo alvo usando pidfd. Através de madvise(), você pode informar o kernel sobre os recursos de trabalho com memória para otimizar o gerenciamento de memória do processo; por exemplo, com base nas informações transmitidas, o kernel pode iniciar a liberação de memória livre adicional. Uma chamada para madvise() por outro processo pode ser necessária em uma situação onde as informações necessárias para otimização são desconhecidas para o processo atual, mas são coordenadas por um processo de controle de segundo plano separado, que pode iniciar de forma independente a remoção de memória não utilizada dos processos.
  • Para a plataforma Linux, foi adicionada a função process_mrelease(), que permite agilizar a liberação de memória para um processo que completa sua execução. Em circunstâncias normais, a liberação de recursos e o encerramento do processo não são instantâneos e podem ser atrasados ​​por vários motivos, interferindo nos sistemas de resposta antecipada da memória do espaço do usuário, como o oomd (fornecido pelo systemd). Ao chamar process_mrelease, tais sistemas podem acionar de forma mais previsível a recuperação de memória de processos forçados.
  • O suporte para a opção “no-aaaa” foi adicionado à implementação integrada do resolvedor DNS, que permite desabilitar o envio de solicitações DNS para registros AAAA (determinando um endereço IPv6 pelo nome do host), inclusive ao executar NSS funções como getaddrinfo(), para simplificar o diagnóstico de problemas. Esta opção não afeta o processamento de ligações de endereços IPv6 definidas em /etc/hosts e chamadas para getaddrinfo() com o sinalizador AI_PASSIVE.
  • Para a plataforma Linux, as funções fsopen, fsmount, move_mount, fsconfig, fspick, open_tree e mount_setattr foram adicionadas, fornecendo acesso a uma nova API do kernel para gerenciar a montagem do sistema de arquivos com base em namespaces de montagem. As funções propostas permitem processar separadamente diferentes etapas de montagem (processar o superbloco, obter informações sobre o sistema de arquivos, montar, anexar ao ponto de montagem), que foram realizadas anteriormente usando a função comum mount(). Funções separadas fornecem a capacidade de executar cenários de montagem mais complexos e executar operações separadamente, como reconfigurar o superbloco, ativar opções, alterar o ponto de montagem e mover para outro namespace. Além disso, o processamento separado permite determinar com precisão os motivos da saída de códigos de erro e definir múltiplas fontes para sistemas de arquivos multicamadas, como overlayfs.
  • localedef fornece suporte para processamento de arquivos de definição de localidade fornecidos na codificação UTF-8 em vez de ASCII.
  • Funções adicionadas para converter codificações mbrtoc8 e c8rtomb multibyte para especificações ISO C2X N2653 e C++20 P0482R6.
  • Adicionado suporte para o tipo char8_t definido no rascunho do padrão ISO C2X N2653.
  • Adicionadas funções arc4random, arc4random_buf e arc4random_uniform que fornecem wrappers sobre a chamada de sistema getrandom e a interface /dev/urandom que retorna números pseudoaleatórios de alta qualidade.
  • Ao rodar na plataforma Linux, ele suporta a arquitetura do conjunto de instruções LoongArch usada nos processadores Loongson 3 5000 e implementa o novo RISC ISA, semelhante ao MIPS e RISC-V. Na sua forma atual, apenas o suporte para a versão de 64 bits do LoongArch (LA64) está disponível. Para funcionar, você precisa de pelo menos as versões binutils 2.38, GCC 12 e Linux kernel 5.19.
  • O mecanismo de pré-link, bem como suas variáveis ​​de ambiente LD_TRACE_PRELINKING e LD_USE_LOAD_BIAS associadas e recursos de vinculador, foram descontinuados e serão removidos em uma versão futura.
  • Código removido para verificar a versão do kernel Linux e manipular a variável de ambiente LD_ASSUME_KERNEL. A versão mínima do kernel suportada na construção do Glibc é determinada através do campo ELF NT_GNU_ABI_TAG.
  • A variável de ambiente LD_LIBRARY_VERSION foi descontinuada na plataforma Linux.

Fonte: opennet.ru

Adicionar um comentário