Glibc 2.36 chega com novos recursos para Linux, melhorias e muito mais

Após seis meses de desenvolvimento, foi anunciado o lançamento da nova versão da glibc 2.36, que atende integralmente aos requisitos das normas ISO C11 e POSIX.1-2017 e na qual a nova versão inclui correções de 59 desenvolvedores.

Para aqueles que não estão familiarizados com o Glibc, eles devem saber o que é uma biblioteca GNU C, comumente conhecido como glibc é a biblioteca GNU C em tempo de execução padrão. Em sistemas onde é usado, esta biblioteca C que fornece e define chamadas de sistema e outras funções básicas, é usado por quase todos os programas. 

Principais novos recursos do Glibc 2.36

Nesta nova versão que se apresenta, destaca-se que adicionado suporte para um novo formato de endereço de realocação relativo DT_RELR, que permite reduzir o tamanho das realocações relativas em objetos compartilhados e executáveis ​​vinculados no modo PIE (Position Independent Executables). O uso do campo DT_RELR em arquivos ELF requer suporte para a opção "-z pack-relative-relocs" no vinculador, introduzida no binutils 2.38.

Outra mudança que se destaca na nova versão é que para Linux as funções pidfd_open, pidfd_getfd e pidfd_send_signal foram implementados para fornecer 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 os 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). PID).

Além disso, também no Linux vem process_madvise()o que permite que um processo execute uma chamada de sistema madvise() em nome de outro processo, identificando o processo de destino usando pidfd. Através do madvise(), você pode informar ao kernel sobre as características de trabalhar com memória para otimizar o gerenciamento de memória do processo, por exemplo, com base nas informações passadas, o kernel pode começar a liberar memória livre adicional.

Note-se também que a função foi adicionada process_mrelease(), que permite acelerar a liberação de memória para um processo que termina sua execução. Em circunstâncias normais, a liberação de recursos e o término do processo não são instantâneos e podem ser atrasados ​​por vários motivos, interferindo nos sistemas de alerta antecipado do espaço do usuário, como o oomd (fornecido pelo systemd). Ao chamar process_mrelease, esses sistemas podem iniciar recuperações de memória de forma mais previsível para processos que foram encerrados à força.

Por outro lado, nota-se que foi adicionado suporte para a opção "não-aaaa" para a implementação integrada de Resolução DNS, que permite desabilitar o envio de solicitações DNS para registros AAAA (determinando um endereço IPv6 por nome de host), mesmo ao executar funções NSS como getaddrinfo(), para simplificar a solução de problemas. Esta opção não afeta a manipulação de ligações de endereço IPv6 definidas em /etc/hosts e chamadas para getaddrinfo() com o sinalizador AI_PASSIVE.

Para Linux, adicionamos as funções fsopen, fsmount, move_mount, fsconfig, fspick, open_tree e mount_setattr para fornecer acesso a uma nova API do kernel para controlar como os sistemas de arquivos são montados com base em namespaces de montagem. As funções propostas permitem o processamento separado de diferentes etapas de montagem (processamento do superbloco, obtenção de informações sobre o sistema de arquivos, montagem, anexação ao ponto de montagem), que foram realizadas anteriormente usando a função mount() comum.

Foi adicionado As funções arc4random, arc4random_buf e arc4random_uniform para fornecer ligações na chamada do sistema aleatório e a interface / Dev / urandom, retornando números pseudo-aleatórios de alta qualidade.

Ao executar no Linux, é fornecido suporte para a arquitetura. do conjunto de instruções LoongArch usado nos processadores Loongson 3 5000 e um novo RISC ISA semelhante ao MIPS e RISC-V é implementado. Em sua forma atual, apenas a compatibilidade está disponível com variante de 64 bits de LoongArch (LA64). Requer pelo menos binutils 2.38, GCC 12 e kernel Linux 5.19 para rodar.

Das outras mudanças que se destacam:

  • O mecanismo de pré-vinculação, bem como as variáveis ​​de ambiente LD_TRACE_PRELINKING e LD_USE_LOAD_BIAS associadas e os recursos do vinculador, estão obsoletos 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 ao compilar Glibc é determinada pelo campo ELF NT_GNU_ABI_TAG.
  • A variável de ambiente LD_LIBRARY_VERSION foi preterida na plataforma Linux.

Por fim, se você tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.