Versión da biblioteca do sistema Glibc 2.36

Despois de seis meses de desenvolvemento, lanzouse a biblioteca do sistema GNU C Library (glibc) 2.36, que cumpre totalmente cos requisitos dos estándares ISO C11 e POSIX.1-2017. A nova versión inclúe correccións de 59 desenvolvedores.

Algunhas das melloras implementadas en Glibc 2.36 inclúen:

  • Engadiuse compatibilidade co novo formato de desprazamento de enderezos DT_RELR (relative relocation), que permite reducir o tamaño das reubicacións relativas en obxectos compartidos e ficheiros executables ligados en modo PIE (executables independentes da posición). Usar o campo DT_RELR nos ficheiros ELF require soporte para a opción "-z pack-relative-relocs" no enlazador, introducida na versión de binutils 2.38.
  • Para a plataforma Linux, están implementadas as funcións pidfd_open, pidfd_getfd e pidfd_send_signal, que proporcionan acceso á funcionalidade de pidfd que axuda a xestionar situacións de reutilización de PID para identificar con máis precisión os procesos que acceden a ficheiros supervisados ​​(pidfd está asociado a un proceso específico e non cambia, mentres que PID pode estar unido a outro proceso despois de que finalice o proceso actual asociado con ese PID).
  • Para a plataforma Linux, engadiuse a función process_madvise() para permitir que un proceso emita a chamada ao sistema madvise() en nome doutro proceso, identificando o proceso de destino mediante pidfd. A través de madvise(), pode informar o núcleo sobre as características de traballar coa memoria para optimizar a xestión da memoria do proceso; por exemplo, en función da información transmitida, o núcleo pode iniciar a liberación de memoria libre adicional. Pode ser necesaria unha chamada a madvise() por outro proceso nunha situación na que a información necesaria para a optimización é descoñecida para o proceso actual, pero está coordinada por un proceso de control en segundo plano separado, que pode iniciar de forma independente a eliminación da memoria non utilizada dos procesos.
  • Para a plataforma Linux, engadiuse a función process_mrelease(), que permite acelerar a liberación de memoria para un proceso que completa a súa execución. En circunstancias normais, a liberación de recursos e a terminación do proceso non son instantáneas e poden atrasarse por varias razóns, interferindo cos sistemas de resposta anticipada da memoria do espazo do usuario, como oomd (proporcionado por systemd). Ao chamar process_mrelease, estes sistemas poden desencadear de forma máis previsible a recuperación de memoria dos procesos forzados.
  • A compatibilidade coa opción "non-aaaa" engadiuse á implementación integrada do resolutor DNS, que lle permite desactivar o envío de solicitudes DNS para rexistros AAAA (determinando un enderezo IPv6 polo nome de host), incluso cando se executa NSS funcións como getaddrinfo(), para simplificar o diagnóstico de problemas. Esta opción non afecta o procesamento das ligazóns de enderezos IPv6 definidas en /etc/hosts e as chamadas a getaddrinfo() coa marca AI_PASSIVE.
  • Para a plataforma Linux, engadíronse as funcións fsopen, fsmount, move_mount, fsconfig, fspick, open_tree e mount_setattr, que proporcionan acceso a unha nova API do núcleo para xestionar o montaxe do sistema de ficheiros baseado nos espazos de nomes de montaxe. As funcións propostas permítenche procesar por separado diferentes etapas de montaxe (procesar o superbloque, obter información sobre o sistema de ficheiros, montar, conectar ao punto de montaxe), que anteriormente se realizaban mediante a función común mount(). As funcións separadas ofrecen a posibilidade de realizar escenarios de montaxe máis complexos e realizar por separado operacións como a reconfiguración do superbloque, a habilitación de opcións, o cambio do punto de montaxe e o desprazamento a outro espazo de nomes. Ademais, o procesamento separado permítelle determinar con precisión os motivos da saída de códigos de erro e establecer varias fontes para sistemas de ficheiros multicapa, como superposicións.
  • localedef ofrece soporte para procesar ficheiros de definición de rexión rexional proporcionados en codificación UTF-8 en lugar de ASCII.
  • Engadíronse funcións para converter as codificacións mbrtoc8 e c8rtomb de varios bytes ás especificacións ISO C2X N2653 e C++20 P0482R6.
  • Engadido soporte para o tipo char8_t definido no borrador da norma ISO C2X N2653.
  • Engadíronse funcións arc4random, arc4random_buf e arc4random_uniform que proporcionan envoltorios sobre a chamada do sistema getrandom e a interface /dev/urandom que devolven números pseudoaleatorios de alta calidade.
  • Cando se executa na plataforma Linux, admite a arquitectura de conxunto de instrucións LoongArch usada nos procesadores Loongson 3 5000 e implementa o novo RISC ISA, similar a MIPS e RISC-V. Na súa forma actual, só está dispoñible a compatibilidade coa versión de 64 bits de LoongArch (LA64). Para funcionar, necesitas polo menos versións de binutils 2.38, GCC 12 e Linux kernel 5.19.
  • O mecanismo de preliga, así como as súas variables de ambiente LD_TRACE_PRELINKING e LD_USE_LOAD_BIAS asociadas e as súas capacidades de ligazón, quedaron en desuso e eliminaranse nunha versión futura.
  • Eliminouse o código para comprobar a versión do núcleo de Linux e xestionar a variable de ambiente LD_ASSUME_KERNEL. A versión mínima do núcleo compatible ao crear Glibc determínase a través do campo ELF NT_GNU_ABI_TAG.
  • A variable de ambiente LD_LIBRARY_VERSION descontinuouse na plataforma Linux.

Fonte: opennet.ru

Engadir un comentario