Lanzamiento de la biblioteca del sistema Glibc 2.36

Después de seis meses de desarrollo, se ha publicado la versión de 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. Esta nueva versión incluye correcciones de 59 desarrolladores.

Entre las mejoras implementadas en Glibc 2.36 se destacan:

  • Se ha añadido soporte para un nuevo formato de reubicaciones relativas DT_RELR, que permite reducir el tamaño de las reubicaciones relativas en objetos compartidos y archivos ejecutables, compilados en modo PIE (ejecutables independientes de posición). Para utilizar el campo DT_RELR en archivos ELF se requiere soporte para la opción '-z pack-relative-relocs' en el enlazador, introducida en la versión del conjunto binutils 2.38.
  • Para la plataforma Linux, se han implementado las funciones pidfd_open, pidfd_getfd y pidfd_send_signal, que proporcionan acceso a la funcionalidad pidfd, ayudando a manejar situaciones de reutilización de PID para una identificación más precisa de los procesos que acceden a archivos controlados (el pidfd está vinculado a un proceso específico y no cambia, mientras que el PID puede ser asignado a otro proceso después de que el proceso actual, asociado a ese PID, haya terminado).
  • Para la plataforma Linux, se ha añadido la función process_madvise(), que permite que un proceso realice la llamada al sistema madvise() en nombre de otro proceso, identificando el proceso objetivo a través de pidfd. A través de madvise() se puede informar al núcleo sobre características del trabajo con la memoria para optimizar la gestión de la memoria del proceso; por ejemplo, con la información proporcionada, el núcleo puede iniciar la liberación de memoria libre adicional. La llamada a madvise() por otro proceso puede ser necesaria en situaciones donde la información requerida para la optimización no es conocida por el proceso actual, y es coordinada por un proceso administrador en segundo plano que puede iniciar la recuperación de memoria no utilizada por otros procesos.
  • Para la plataforma Linux, se ha añadido la función process_mrelease(), que permite acelerar la liberación de memoria de un proceso al finalizar su ejecución. En condiciones normales, la liberación de recursos y la finalización de un proceso no se realizan de inmediato y, por diversas razones, pueden retrasarse, lo que obstaculiza el funcionamiento de los sistemas de respuesta temprana a la falta de memoria que operan en el espacio del usuario, como oomd (proporcionado en systemd). A través de la llamada a process_mrelease, dichos sistemas pueden iniciar de manera más predecible la devolución de memoria de procesos que se terminan forzosamente.
  • Se ha añadido soporte para la opción «no-aaaa» en la implementación incorporada del resolvedor DNS, lo que permite desactivar el envío de consultas DNS para registros AAAA (resolución de direcciones IPv6 por nombre de host) para simplificar el diagnóstico de problemas, incluso al ejecutar funciones NSS como getaddrinfo(). Esta opción no afecta al manejo de los enlaces de direcciones IPv6 definidos en /etc/hosts y a las llamadas a getaddrinfo() con la bandera AI_PASSIVE.
  • Para la plataforma Linux, se han añadido las funciones fsopen, fsmount, move_mount, fsconfig, fspick, open_tree y mount_setattr, que proporcionan acceso a una nueva API del núcleo para gestionar el montaje de sistemas de archivos teniendo en cuenta los espacios de nombres de los puntos de montaje (mount namespaces). Las funciones propuestas permiten manejar por separado diferentes etapas del montaje (manejar el superblock, obtener información del sistema de archivos, montar, acoplar al punto de montaje), que anteriormente se realizaban mediante la función general mount(). Las funciones separadas permiten llevar a cabo escenarios de montaje más complejos y realizar operaciones como la reconfiguración del superblock, la inclusión de opciones, la modificación del punto de montaje y el traslado a otro espacio de nombres. Además, el manejo separado permite identificar con precisión las causas de la presentación de códigos de error y establecer múltiples orígenes para sistemas de archivos en capas, como overlayfs.
  • Se ha implementado soporte para el procesamiento de archivos con definiciones de locales en localedef, que se proporcionan en la codificación UTF-8 en lugar de ASCII.
  • Se han añadido funciones para convertir codificaciones multibyte mbrtoc8 y c8rtomb, que cumplen con las especificaciones ISO C2X N2653 y C++20 P0482R6.
  • Se ha añadido soporte para el tipo char8_t, definido en el borrador del estándar ISO C2X N2653.
  • Se han añadido las funciones arc4random, arc4random_buf y arc4random_uniform, que proporcionan interfaces sobre la llamada del sistema getrandom y la interfaz /dev/urandom, retornando números aleatorios pseudoaleatorios de alta calidad.
  • En la plataforma Linux se ha implementado el soporte para la arquitectura de conjunto de instrucciones LoongArch, utilizada en los procesadores Loongson 3 5000, que implementa un nuevo ISA RISC similar a MIPS y RISC-V. Actualmente, solo está disponible el soporte para la versión de 64 bits de LoongArch (LA64). Se requiere tener al menos las versiones binutils 2.38, GCC 12 y el núcleo de Linux 5.19.
  • Se ha declarado obsoleto y se eliminará en la próxima versión el mecanismo prelink, así como las variables de entorno relacionadas LD_TRACE_PRELINKING y LD_USE_LOAD_BIAS y las capacidades del enlazador.
  • Se ha eliminado el código para verificar la versión del núcleo de Linux y el manejo de la variable de entorno LD_ASSUME_KERNEL. La versión mínima del núcleo soportada al compilar Glibc se determina a través del campo ELF NT_GNU_ABI_TAG.
  • En la plataforma Linux, se ha dejado de soportar la variable de entorno LD_LIBRARY_VERSION.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster