Versió de la biblioteca del sistema Glibc 2.36

Després de sis mesos de desenvolupament, s'ha llançat la biblioteca del sistema GNU C Library (glibc) 2.36, que compleix totalment els requisits dels estàndards ISO C11 i POSIX.1-2017. La nova versió inclou correccions de 59 desenvolupadors.

Algunes de les millores implementades a Glibc 2.36 inclouen:

  • S'ha afegit suport per al nou format de reubicació d'adreces DT_RELR (reubicació relativa), que us permet reduir la mida de les reubicacions relatives en objectes compartits i fitxers executables enllaçats en mode PIE (executables independents de la posició). L'ús del camp DT_RELR als fitxers ELF requereix suport per a l'opció "-z pack-relative-relocs" a l'enllaç, introduïda a la versió de binutils 2.38.
  • Per a la plataforma Linux, s'implementen les funcions pidfd_open, pidfd_getfd i pidfd_send_signal, proporcionant accés a la funcionalitat de pidfd que ajuda a gestionar situacions de reutilització de PID per identificar amb més precisió els processos que accedeixen als fitxers monitoritzats (pidfd està associat a un procés específic i no canvia, mentre que PID pot s'adjuntarà a un altre procés després que finalitzi el procés actual associat amb aquest PID).
  • Per a la plataforma Linux, s'ha afegit la funció process_madvise() per permetre que un procés emeti la crida al sistema madvise() en nom d'un altre procés, identificant el procés objectiu mitjançant pidfd. Mitjançant madvise(), podeu informar el nucli sobre les característiques de treballar amb memòria per optimitzar la gestió de la memòria del procés; per exemple, a partir de la informació transmesa, el nucli pot iniciar l'alliberament de memòria lliure addicional. Es pot requerir una crida a madvise() per part d'un altre procés en una situació en què la informació necessària per a l'optimització és desconeguda pel procés actual, però està coordinada per un procés de control de fons separat, que pot iniciar de manera independent l'eliminació de la memòria no utilitzada dels processos.
  • Per a la plataforma Linux, s'ha afegit la funció process_mrelease(), que us permet accelerar l'alliberament de memòria per a un procés que completa la seva execució. En circumstàncies normals, l'alliberament de recursos i la finalització del procés no són instantànies i es poden retardar per diverses raons, interferint amb els sistemes de resposta primerenca de memòria de l'espai d'usuari com ara oomd (proporcionat per systemd). En cridar process_mrelease, aquests sistemes poden desencadenar de manera més previsible la recuperació de memòria dels processos forçats.
  • S'ha afegit suport per a l'opció "no-aaaa" a la implementació integrada de la resolució de DNS, que us permet desactivar l'enviament de sol·licituds de DNS per a registres AAAA (determinant una adreça IPv6 pel nom d'amfitrió), inclòs quan s'executa NSS funcions com getaddrinfo(), per simplificar el diagnòstic de problemes. Aquesta opció no afecta el processament dels vincles d'adreces IPv6 definits a /etc/hosts i les crides a getaddrinfo() amb el senyalador AI_PASSIVE.
  • Per a la plataforma Linux, s'han afegit les funcions fsopen, fsmount, move_mount, fsconfig, fspick, open_tree i mount_setattr, proporcionant accés a una nova API del nucli per gestionar el muntatge del sistema de fitxers basat en espais de noms de muntatge. Les funcions proposades us permeten processar per separat diferents etapes de muntatge (processar el superbloc, obtenir informació sobre el sistema de fitxers, muntar, adjuntar al punt de muntatge), que anteriorment es feien mitjançant la funció de muntatge comuna (). Les funcions separades ofereixen la possibilitat de realitzar escenaris de muntatge més complexos i realitzar per separat operacions com ara reconfigurar el superbloc, habilitar opcions, canviar el punt de muntatge i moure's a un altre espai de noms. A més, el processament separat us permet determinar amb precisió els motius de la sortida dels codis d'error i establir diverses fonts per a sistemes de fitxers multicapa, com ara superposicions.
  • localedef proporciona suport per processar fitxers de definició de configuració regional subministrats en codificació UTF-8 en lloc d'ASCII.
  • S'han afegit funcions per convertir les codificacions mbrtoc8 i c8rtomb de diversos bytes a especificacions ISO C2X N2653 i C++20 P0482R6.
  • S'ha afegit suport per al tipus char8_t definit a l'esborrany de l'estàndard ISO C2X N2653.
  • S'han afegit funcions arc4random, arc4random_buf i arc4random_uniform que proporcionen embolcalls sobre la trucada del sistema getrandom i la interfície /dev/urandom que retornen números pseudoaleatoris d'alta qualitat.
  • Quan s'executa a la plataforma Linux, admet l'arquitectura de conjunt d'instruccions LoongArch utilitzada als processadors Loongson 3 5000 i implementa el nou RISC ISA, similar al MIPS i RISC-V. En la seva forma actual, només està disponible el suport per a la versió de 64 bits de LoongArch (LA64). Per funcionar, necessiteu almenys versions de binutils 2.38, GCC 12 i Linux kernel 5.19.
  • El mecanisme de preenllaç, així com les seves variables d'entorn LD_TRACE_PRELINKING i LD_USE_LOAD_BIAS associades i les capacitats d'enllaç, han quedat obsolets i s'eliminaran en una versió futura.
  • S'ha eliminat el codi per comprovar la versió del nucli de Linux i gestionar la variable d'entorn LD_ASSUME_KERNEL. La versió mínima del nucli admesa quan es construeix Glibc es determina mitjançant el camp ELF NT_GNU_ABI_TAG.
  • La variable d'entorn LD_LIBRARY_VERSION s'ha interromput a la plataforma Linux.

Font: opennet.ru

Afegeix comentari