Versión de la biblioteca del sistema Glibc 2.36

Después de seis meses de desarrollo, se lanzó la biblioteca del sistema GNU C Library (glibc) 2.36, que cumple totalmente con los requisitos de los estándares ISO C11 y POSIX.1-2017. La nueva versión incluye correcciones de 59 desarrolladores.

Algunas de las mejoras implementadas en Glibc 2.36 incluyen:

  • Se agregó soporte para el nuevo formato de reubicación de direcciones DT_RELR (reubicación relativa), que le permite reducir el tamaño de las reubicaciones relativas en objetos compartidos y archivos ejecutables vinculados en modo PIE (ejecutables independientes de la posición). El uso del campo DT_RELR en archivos ELF requiere compatibilidad con la opción "-z pack-relative-relocs" en el vinculador, introducida en la versión de binutils 2.38.
  • Para la plataforma Linux, se implementan las funciones pidfd_open, pidfd_getfd y pidfd_send_signal, que brindan acceso a la funcionalidad pidfd que ayuda a manejar situaciones de reutilización de PID para identificar con mayor precisión los procesos que acceden a archivos monitoreados (pidfd está asociado con un proceso específico y no cambia, mientras que PID puede adjuntarse a otro proceso después de que finalice el proceso actual asociado con ese PID).
  • Para la plataforma Linux, se agregó la función Process_madvise() para permitir que un proceso emita la llamada al sistema madvise() en nombre de otro proceso, identificando el proceso objetivo mediante pidfd. A través de madvise(), puede informar al kernel sobre las características de trabajar con la memoria para optimizar la gestión de la memoria del proceso; por ejemplo, basándose en la información transmitida, el kernel puede iniciar la liberación de memoria libre adicional. Es posible que se requiera una llamada a madvise() por parte de otro proceso en una situación en la que el proceso actual desconoce la información necesaria para la optimización, pero está coordinada por un proceso de control en segundo plano independiente, que puede iniciar de forma independiente la eliminación de la memoria no utilizada de los procesos.
  • Para la plataforma Linux, se agregó la función Process_mrelease(), que le permite acelerar la liberación de memoria para que un proceso complete su ejecución. En circunstancias normales, la liberación de recursos y la terminación del proceso no son instantáneas y pueden retrasarse por diversas razones, lo que interfiere con los sistemas de respuesta temprana de la memoria del espacio del usuario como oomd (proporcionado por systemd). Al llamar a Process_mrelease, dichos sistemas pueden desencadenar de manera más predecible la recuperación de memoria de procesos forzados.
  • Se agregó soporte para la opción "no-aaaa" a la implementación incorporada del solucionador DNS, que le permite deshabilitar el envío de solicitudes DNS para registros AAAA (determinando una dirección IPv6 por nombre de host), incluso al ejecutar NSS. funciona como getaddrinfo(), para simplificar el diagnóstico de problemas. Esta opción no afecta el procesamiento de enlaces de direcciones IPv6 definidos en /etc/hosts y llamadas a getaddrinfo() con el indicador AI_PASSIVE.
  • Para la plataforma Linux, se agregaron las funciones fsopen, fsmount, move_mount, fsconfig, fspick, open_tree y mount_setattr, lo que brinda acceso a una nueva API del kernel para administrar el montaje del sistema de archivos según los espacios de nombres de montaje. Las funciones propuestas le permiten procesar por separado diferentes etapas de montaje (procesar el superbloque, obtener información sobre el sistema de archivos, montar, adjuntar al punto de montaje), que anteriormente se realizaban utilizando la función mount() común. Las funciones separadas brindan la capacidad de realizar escenarios de montaje más complejos y realizar operaciones por separado, como reconfigurar el superbloque, habilitar opciones, cambiar el punto de montaje y pasar a otro espacio de nombres. Además, el procesamiento por separado le permite determinar con precisión los motivos de la aparición de códigos de error y configurar múltiples fuentes para sistemas de archivos multicapa, como overlayfs.
  • localedef proporciona soporte para procesar archivos de definición regional suministrados en codificación UTF-8 en lugar de ASCII.
  • Se agregaron funciones para convertir codificaciones multibyte mbrtoc8 y c8rtomb a las especificaciones ISO C2X N2653 y C++20 P0482R6.
  • Se agregó soporte para el tipo char8_t definido en el borrador del estándar ISO C2X N2653.
  • Se agregaron funciones arc4random, arc4random_buf y arc4random_uniform que proporcionan contenedores sobre la llamada al sistema getrandom y la interfaz /dev/urandom que devuelven números pseudoaleatorios de alta calidad.
  • Cuando se ejecuta en la plataforma Linux, admite la arquitectura del conjunto de instrucciones LoongArch utilizada en los procesadores Loongson 3 5000 e implementa el nuevo RISC ISA, similar a MIPS y RISC-V. En su forma actual, sólo está disponible la compatibilidad con la versión de 64 bits de LoongArch (LA64). Para funcionar, necesita al menos las versiones de binutils 2.38, GCC 12 y el kernel de Linux 5.19.
  • El mecanismo de prevínculo, así como sus variables de entorno y capacidades de vinculación LD_TRACE_PRELINKING y LD_USE_LOAD_BIAS asociadas, han quedado obsoletos y se eliminarán en una versión futura.
  • Se eliminó el código para verificar la versión del kernel de Linux y manejar la variable de entorno LD_ASSUME_KERNEL. La versión mínima del kernel admitida al compilar Glibc se determina a través del campo ELF NT_GNU_ABI_TAG.
  • La variable de entorno LD_LIBRARY_VERSION ha sido descontinuada en la plataforma Linux.

Fuente: opennet.ru

Añadir un comentario