Glibc 2.36 systeembibliotheek release

Na zes maanden ontwikkeling is de GNU C Library (glibc) 2.36 systeembibliotheek uitgebracht, die volledig voldoet aan de eisen van de ISO C11- en POSIX.1-2017-standaarden. De nieuwe release bevat oplossingen van 59 ontwikkelaars.

Enkele van de verbeteringen die in Glibc 2.36 zijn geïmplementeerd, zijn onder meer:

  • Ondersteuning toegevoegd voor het nieuwe DT_RELR-adresverplaatsingsformaat (relative relocation), waarmee u de grootte van relatieve verhuizingen in gedeelde objecten en uitvoerbare bestanden kunt verkleinen die zijn gekoppeld in de PIE-modus (Position-independent executables). Het gebruik van het DT_RELR-veld in ELF-bestanden vereist ondersteuning voor de optie "-z pack-relative-relocs" in de linker, geïntroduceerd in de release van binutils 2.38.
  • Voor het Linux-platform zijn de functies pidfd_open, pidfd_getfd en pidfd_send_signal geïmplementeerd, waardoor toegang wordt geboden tot pidfd-functionaliteit die helpt bij het omgaan met PID-hergebruiksituaties om nauwkeuriger processen te identificeren die toegang hebben tot bewaakte bestanden (pidfd is gekoppeld aan een specifiek proces en verandert niet, terwijl PID dat wel kan doen). worden gekoppeld aan een ander proces nadat het huidige proces dat aan die PID is gekoppeld, is beëindigd).
  • Voor het Linux-platform is de functie process_madvise() toegevoegd om het ene proces mogelijk te maken de systeemaanroep madvise() uit te voeren namens een ander proces, waarbij het doelproces wordt geïdentificeerd met behulp van pidfd. Via madvise() kunt u de kernel informeren over de kenmerken van het werken met geheugen om het procesgeheugenbeheer te optimaliseren; op basis van de verzonden informatie kan de kernel bijvoorbeeld het vrijgeven van extra vrij geheugen initiëren. Een aanroep van madvise() door een ander proces kan nodig zijn in een situatie waarin de informatie die nodig is voor optimalisatie onbekend is voor het huidige proces, maar wordt gecoördineerd door een afzonderlijk achtergrondcontroleproces, dat onafhankelijk het verwijderen van ongebruikt geheugen uit processen kan initiëren.
  • Voor het Linux-platform is de functie process_mrelease() toegevoegd, waarmee u het vrijgeven van geheugen voor een proces dat de uitvoering ervan voltooit, kunt versnellen. Onder normale omstandigheden zijn het vrijgeven van bronnen en het beëindigen van processen niet onmiddellijk en kunnen ze om verschillende redenen worden uitgesteld, waardoor vroege responssystemen in het gebruikersruimtegeheugen worden verstoord, zoals oomd (geleverd door systemd). Door process_mrelease aan te roepen, kunnen dergelijke systemen op voorspelbare wijze het terugwinnen van geheugen uit geforceerde processen activeren.
  • Ondersteuning voor de “no-aaaa”-optie is toegevoegd aan de ingebouwde implementatie van de DNS-resolver, waarmee u het verzenden van DNS-verzoeken voor AAAA-records (vaststellen van een IPv6-adres op basis van hostnaam) kunt uitschakelen, ook bij het uitvoeren van NSS functies zoals getaddrinfo(), om de probleemdiagnose te vereenvoudigen. Deze optie heeft geen invloed op de verwerking van IPv6-adresbindingen gedefinieerd in /etc/hosts en aanroepen van getaddrinfo() met de vlag AI_PASSIVE.
  • Voor het Linux-platform zijn de functies fsopen, fsmount, move_mount, fsconfig, fspick, open_tree en mount_setattr toegevoegd, waardoor toegang wordt geboden tot een nieuwe kernel-API voor het beheren van het koppelen van bestandssystemen op basis van mount-naamruimten. Met de voorgestelde functies kunt u verschillende montagestadia afzonderlijk verwerken (het superblok verwerken, informatie verkrijgen over het bestandssysteem, mounten, koppelen aan het mountpunt), die eerder werden uitgevoerd met behulp van de algemene mount()-functie. Afzonderlijke functies bieden de mogelijkheid om complexere aankoppelscenario's uit te voeren en afzonderlijk bewerkingen uit te voeren, zoals het opnieuw configureren van het superblok, het inschakelen van opties, het wijzigen van het koppelpunt en het verplaatsen naar een andere naamruimte. Bovendien kunt u met afzonderlijke verwerking nauwkeurig de redenen voor de uitvoer van foutcodes bepalen en meerdere bronnen instellen voor meerlaagse bestandssystemen, zoals overlayfs.
  • localedef biedt ondersteuning voor het verwerken van locale-definitiebestanden die zijn geleverd in UTF-8-codering in plaats van ASCII.
  • Functies toegevoegd om multi-byte mbrtoc8- en c8rtomb-coderingen te converteren naar ISO C2X N2653- en C++20 P0482R6-specificaties.
  • Ondersteuning toegevoegd voor het char8_t-type gedefinieerd in de concept-ISO C2X N2653-standaard.
  • Functies arc4random, arc4random_buf en arc4random_uniform toegevoegd die wrappers bieden over de systeemaanroep getrandom en de interface /dev/urandom die pseudowillekeurige getallen van hoge kwaliteit retourneert.
  • Wanneer het op het Linux-platform draait, ondersteunt het de LoongArch-instructiesetarchitectuur die wordt gebruikt in de Loongson 3 5000-processors en implementeert het de nieuwe RISC ISA, vergelijkbaar met MIPS en RISC-V. In de huidige vorm is alleen ondersteuning voor de 64-bit versie van LoongArch (LA64) beschikbaar. Om te werken heb je minimaal versies van binutils 2.38, GCC 12 en Linux kernel 5.19 nodig.
  • Het prelink-mechanisme, evenals de bijbehorende LD_TRACE_PRELINKING en LD_USE_LOAD_BIAS omgevingsvariabelen en linkermogelijkheden, zijn verouderd en zullen in een toekomstige release worden verwijderd.
  • Code verwijderd voor het controleren van de Linux-kernelversie en het verwerken van de omgevingsvariabele LD_ASSUME_KERNEL. De minimale versie van de kernel die wordt ondersteund bij het bouwen van Glibc wordt bepaald via het ELF-veld NT_GNU_ABI_TAG.
  • De omgevingsvariabele LD_LIBRARY_VERSION is niet meer leverbaar op het Linux-platform.

Bron: opennet.ru

Voeg een reactie