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 plataforma Linux S'han implementat les funcions pidfd_open, pidfd_getfd i pidfd_send_signal, que proporcionen accés a la funcionalitat pidfd que ajuda a gestionar situacions amb reutilització de PID per identificar amb més precisió els processos que accedeixen als fitxers monitoritzats (pidfd s'associa amb un procés específic i no canvia, mentre que un PID es pot associar amb un altre procés després que finalitzi el procés actual associat amb aquest PID).
- Per plataforma Linux S'ha afegit la funció process_madvise(), que permet a un procés executar la crida al sistema madvise() en nom d'un altre procés, identificant el procés de destinació mitjançant pidfd. madvise() es pot utilitzar per informar el nucli sobre els detalls d'ús de memòria per optimitzar la gestió de memòria del procés; per exemple, el nucli pot utilitzar la informació proporcionada per iniciar l'alliberament de memòria lliure addicional. Cridar madvise() per part d'un altre procés pot ser necessari en situacions on la informació necessària per a l'optimització és desconeguda per al procés actual i està coordinada per un procés de control en segon pla separat, que pot iniciar independentment l'alliberament de memòria no utilitzada dels processos.
- Per plataforma Linux La funció process_mrelease() s'ha afegit per accelerar l'alliberament de memòria d'un procés que finalitza. En condicions normals, l'alliberament de recursos i la terminació del procés no són immediats i es poden retardar per diverses raons, cosa que interfereix amb els sistemes d'alerta de pressió de memòria a l'espai d'usuari, com ara oomd (proporcionat per systemd). En cridar process_mrelease, aquests sistemes poden iniciar de manera més previsible la recuperació de memòria de processos finalitzats per la força.
- 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 plataforma Linux S'han afegit les funcions fsopen, fsmount, move_mount, fsconfig, fspick, open_tree i mount_setattr, que proporcionen accés a una nova API del nucli per gestionar el muntatge del sistema de fitxers respecte als espais de noms de muntatge. Aquestes funcions permeten el processament separat de diverses etapes de muntatge (processament del superbloc, obtenció d'informació del sistema de fitxers, muntatge i connexió al punt de muntatge), que abans es realitzaven mitjançant la funció comuna mount(). Aquestes funcions separades permeten escenaris de muntatge més complexos i permeten operacions separades com ara reconfigurar el superbloc, habilitar opcions, canviar el punt de muntatge i moure's a un espai de noms diferent. A més, el processament separat permet la determinació precisa de les causes dels codis d'error i l'especificació de múltiples fonts per a sistemes de fitxers multicapa, com ara overlayfs.
- 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 es treballa a la plataforma Linux S'ha implementat la compatibilitat amb l'arquitectura del conjunt d'instruccions (ISA) de LoongArch, utilitzada als processadors Loongson 3 5000. Aquesta arquitectura implementa un nou RISC ISA similar a MIPS i RISC-V. Actualment, només hi ha disponible la compatibilitat amb la versió de 64 bits de LoongArch (LA64). Això requereix com a mínim binutils 2.38, GCC 12 i el nucli. Linux 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 Linux i processant la variable d'entorn LD_ASSUME_KERNEL. La versió mínima del nucli compatible durant la compilació de Glibc es determina mitjançant el camp ELF NT_GNU_ABI_TAG.
- A la plataforma Linux El suport per a la variable d'entorn LD_LIBRARY_VERSION s'ha deixat de ser compatible.
Font: opennet.ru
