Glibc 2.36 Жүйе кітапханасының шығарылымы

Алты айлық әзірлеуден кейін ISO C2.36 және POSIX.11-1 стандарттарының талаптарына толығымен сәйкес келетін GNU C Library (glibc) 2017 жүйелік кітапханасы шығарылды. Жаңа шығарылым 59 әзірлеушінің түзетулерін қамтиды.

Glibc 2.36-да енгізілген кейбір жақсартулар мыналарды қамтиды:

  • PIE (Позицияға тәуелсіз орындалатын файлдар) режимінде байланыстырылған ортақ нысандардағы және орындалатын файлдардағы салыстырмалы орын ауыстырулардың өлшемін азайтуға мүмкіндік беретін жаңа DT_RELR (салыстырмалы орын ауыстыру) мекенжайды ауыстыру пішіміне қолдау қосылды. ELF файлдарындағы DT_RELR өрісін пайдалану 2.38 binutils шығарылымында енгізілген сілтемедегі "-z pack-relative-relocs" опциясын қолдауды қажет етеді.
  • Linux платформасы үшін pidfd_open, pidfd_getfd және pidfd_send_signal функциялары бақыланатын файлдарға қатынасатын процестерді дәлірек анықтау үшін PID қайта пайдалану жағдайларын өңдеуге көмектесетін pidfd функциясына қол жеткізуді қамтамасыз етеді (pidfd белгілі бір процесспен байланысты және өзгермейді, ал PID мүмкін сол PID-мен байланысты ағымдағы процесс аяқталғаннан кейін басқа процеске тіркеледі).
  • Linux платформасы үшін process_madvise() функциясы бір процеске басқа процестің атынан madvise() жүйелік шақыруын шығаруға мүмкіндік беру үшін қосылды, бұл мақсатты процесті pidfd көмегімен анықтау. madvise() арқылы сіз процесс жадты басқаруды оңтайландыру үшін жадпен жұмыс істеу мүмкіндіктері туралы ядроға хабарлай аласыз, мысалы, жіберілген ақпарат негізінде ядро ​​қосымша бос жадты шығаруды бастайды. Оңтайландыруға қажетті ақпарат ағымдағы процесске белгісіз, бірақ пайдаланылмаған жадты процестерден жоюды дербес бастауға болатын бөлек фондық басқару процесімен үйлестірілген жағдайда басқа процесс арқылы madvise() шақыруы қажет болуы мүмкін.
  • Linux платформасы үшін процесс_mrelease() функциясы қосылды, ол оның орындалуын аяқтайтын процесс үшін жадты босатуды жылдамдатуға мүмкіндік береді. Қалыпты жағдайларда ресурстарды шығару және процесті тоқтату лезде болмайды және әртүрлі себептермен кейінге қалдырылуы мүмкін, ол oomd (systemd ұсынған) сияқты пайдаланушының ғарыштық жадының ертерек жауап беру жүйелеріне кедергі келтіреді. process_mrelease шақыру арқылы мұндай жүйелер мәжбүрлі процестерден жадты қалпына келтіруді болжамды түрде іске қоса алады.
  • «No-aaaa» опциясын қолдау AAAA жазбалары үшін DNS сұрауларын жіберуді (IPv6 мекенжайын хост атауы бойынша анықтау), соның ішінде NSS орындау кезінде өшіруге мүмкіндік беретін DNS шешу құралының кірістірілген іске асыруына қосылды. мәселенің диагностикасын жеңілдету үшін getaddrinfo() сияқты функциялар. Бұл опция /etc/hosts ішінде анықталған IPv6 мекенжай байланыстарын өңдеуге және AI_PASSIVE жалаушасы бар getaddrinfo() қоңырауларына әсер етпейді.
  • Linux платформасы үшін fsopen, fsmount, move_mount, fsconfig, fspick, open_tree және mount_setattr функциялары қосылды, олар монтаждау аттар кеңістігіне негізделген файлдық жүйені орнатуды басқаруға арналған жаңа ядро ​​API интерфейсіне қатынасты қамтамасыз етеді. Ұсынылған функциялар монтаждаудың әртүрлі кезеңдерін (суперблокты өңдеу, файлдық жүйе туралы ақпаратты алу, монтаждау, бекіту нүктесіне бекіту) бөлек өңдеуге мүмкіндік береді, олар бұрын жалпы mount() функциясы арқылы орындалған. Бөлек функциялар күрделірек орнату сценарийлерін орындау және суперблокты қайта конфигурациялау, опцияларды қосу, бекіту нүктесін өзгерту және басқа аттар кеңістігіне көшу сияқты әрекеттерді бөлек орындау мүмкіндігін береді. Сонымен қатар, бөлек өңдеу қате кодтарының шығу себептерін дәл анықтауға және көп қабатты файлдық жүйелер үшін бірнеше көздерді орнатуға мүмкіндік береді, мысалы, қабаттастырулар.
  • localedef ASCII орнына UTF-8 кодтауында жеткізілетін тіл анықтау файлдарын өңдеуге қолдау көрсетеді.
  • Көп байтты mbrtoc8 және c8rtomb кодтауларын ISO C2X N2653 және C++20 P0482R6 спецификацияларына түрлендіру үшін қосылды.
  • ISO C8X N2 стандарт жобасында анықталған char2653_t түріне қолдау қосылды.
  • Getrandom жүйелік шақыруы және жоғары сапалы жалған кездейсоқ сандарды қайтаратын /dev/urandom интерфейсі арқылы орауыштарды қамтамасыз ететін arc4random, arc4random_buf және arc4random_uniform функциялары қосылды.
  • Linux платформасында жұмыс істегенде, ол Loongson 3 5000 процессорларында қолданылатын LoongArch нұсқаулар жинағы архитектурасын қолдайды және MIPS және RISC-V сияқты жаңа RISC ISA іске асырады. Ағымдағы пішінде LoongArch (LA64) бағдарламасының 64 биттік нұсқасына қолдау ғана қолжетімді. Жұмыс істеу үшін сізге кем дегенде binutils 2.38, GCC 12 және Linux ядросының 5.19 нұсқалары қажет.
  • Алдын ала байланыстыру механизмі, сондай-ақ оның байланысты LD_TRACE_PRELINKING және LD_USE_LOAD_BIAS ортасының айнымалы мәндері мен сілтеме мүмкіндіктері ескірген және болашақ шығарылымда жойылады.
  • Linux ядросының нұсқасын тексеруге және LD_ASSUME_KERNEL ортасының айнымалы мәнін өңдеуге арналған жойылған код. Glibc құру кезінде қолдау көрсетілетін ядроның ең аз нұсқасы NT_GNU_ABI_TAG ELF өрісі арқылы анықталады.
  • LD_LIBRARY_VERSION ортасының айнымалы мәні Linux платформасында тоқтатылды.

Ақпарат көзі: opennet.ru

пікір қалдыру