Desde Linux Darkcrizt  

Glibc 2.36 llega con nuevas funciones para Linux, mejoras y mas

Luego de seis meses de desarrollo se dio a conocer el lanzamiento de la nueva versión de glibc 2.36, la cual cumple totalmente con los requisitos de los estándares ISO C11 y POSIX.1-2017 y en la cual la nueva versión incluye correcciones de 59 desarrolladores.

Para quienes desconocen de Glibc, deben saber que es una biblioteca C de GNU, comúnmente conocida como glibc es la biblioteca de tiempo de ejecución estándar del lenguaje C de GNU. En los sistemas en los que se usa, esta biblioteca de C que proporciona y define las llamadas al sistema y otras funciones básicas, es utilizada por casi todos los programas. 

Principales novedades de Glibc 2.36

En esta nueva versión que se presenta se destaca que se agregó el soporte para un nuevo formato de direcciones de reubicación relativa DT_RELR, que permite reducir el tamaño de las reubicaciones relativas en objetos compartidos y archivos ejecutables vinculados en modo PIE (Executables independientes de la posición). El uso del campo DT_RELR en archivos ELF requiere soporte para la opción «-z pack-relative-relocs» en el enlazador, introducido en la versión binutils 2.38.

Otro de los cambios que se destaca de la nueva versión, es que para Linux las funciones pidfd_open, pidfd_getfd y pidfd_send_signal se implementaron para brindar 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 los archivos monitoreados (pidfd está asociado con un proceso específico y no cambia, mientras que el El PID se puede adjuntar a otro proceso después de que termine el proceso actual asociado con este PID).

Ademas de ello, tambien en Linux llega process_madvise(), que permite que un proceso ejecute una llamada al sistema madvise() en nombre de otro proceso, identificando el proceso de destino mediante pidfd. A través de madvise(), puede informar al kernel sobre las características de trabajar con memoria para optimizar la gestión de la memoria del proceso, por ejemplo, en función de la información pasada, el kernel puede iniciar la liberación de memoria libre adicional.

Tambien se destaca que se agregó la función process_mrelease(), que permite acelerar la liberación de memoria para un proceso que finaliza su ejecución. En circunstancias normales, la liberación de recursos y la finalización del proceso no son instantáneos y pueden retrasarse por varios motivos, lo que interfiere con los sistemas de alerta temprana del espacio del usuario, como oomd (proporcionado por systemd). Al llamar a process_mrelease, estos sistemas pueden iniciar de manera más predecible las recuperaciones de memoria de los procesos que terminaron a la fuerza.

Por otra parte, se destaca que se ha agregado soporte para la opción «no-aaaa» a la implementación integrada de la resolución de DNS, que permite deshabilitar el envío de solicitudes de DNS para registros AAAA (determinación de una dirección IPv6 por nombre de host), incluso cuando se ejecutan funciones NSS como getaddrinfo(), para simplificar la resolución de problemas. Esta opción no afecta el manejo de los enlaces de direcciones IPv6 definidos en /etc/hosts y las llamadas a getaddrinfo() con el indicador AI_PASSIVE.

Para Linux, se agregaron las funciones fsopen, fsmount, move_mount, fsconfig, fspick, open_tree y mount_setattr para brindar acceso a una nueva API de kernel para controlar cómo se montan los sistemas de archivos en función de los espacios de nombres de montaje. Las funciones propuestas 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 común mount().

Se agregaron las funciones arc4random, arc4random_buf y arc4random_uniform para proporcionar enlaces sobre la llamada al sistema getrandom y la interfaz /dev/urandom, devolviendo números pseudoaleatorios de alta calidad.

Cuando se ejecuta en Linux, se proporciona soporte para la arquitectura del conjunto de instrucciones LoongArch utilizada en los procesadores Loongson 3 5000 y se implementa un nuevo RISC ISA similar a MIPS y RISC-V. En su forma actual, solo está disponible la compatibilidad con la variante de 64 bits de LoongArch (LA64). Requiere al menos binutils 2.38, GCC 12 y Linux kernel 5.19 para funcionar.

De los demás cambios que se destacan:

  • El mecanismo de vinculación previa, así como las variables de entorno LD_TRACE_PRELINKING y LD_USE_LOAD_BIAS asociadas y las características del vinculador, están en desuso 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 está determinada por el campo ELF NT_GNU_ABI_TAG.
  • La variable de entorno LD_LIBRARY_VERSION ha quedado obsoleta en la plataforma Linux.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.