Выпуск сістэмнай бібліятэкі Glibc 2.36

Пасля шасці месяцаў распрацоўкі апублікаваны рэліз сістэмнай бібліятэкі GNU C Library (glibc) 2.36, якая цалкам прытрымліваецца патрабаванняў стандартаў ISO C11 і POSIX.1-2017. У склад новага выпуску ўключаны выпраўленні ад 59 распрацоўшчыкаў.

З рэалізаваных у Glibc 2.36 паляпшэнняў можна адзначыць:

  • Дададзена падтрымка новага фармату адносных перасоўванняў адрасоў DT_RELR (relative relocation), які дазваляе скараціць памер адносных перасоўванняў у падзяляных аб'ектах і выкананых файлах, скампанаваных у рэжыме з PIE (Position-independent executables). Для выкарыстання поля DT_RELR у ELF-файлах неабходна падтрымка опцыі "-z pack-relative-relocs" у кампаноўніку, якая з'явілася ў выпуску набору binutils 2.38.
  • Для платформы Linux рэалізаваны функцыі pidfd_open, pidfd_getfd і pidfd_send_signal, якія прадстаўляюць доступ да функцыянальнасці pidfd, якая дапамагае апрацоўваць сітуацыі з паўторным выкарыстаннем PID для больш дакладнай ідэнтыфікацыі працэсаў, якія звяртаюцца да адсочваных файлаў (pidfd звязваецца з пэўным працэсам быць прывязаны да іншага працэсу пасля завяршэння бягучага працэсу, асацыяванага з гэтым PID).
  • Для платформы Linux дададзена функцыя process_madvise(), якая дазваляе аднаму працэсу выканаць сістэмны выклік madvise() ад імя іншага працэсу, ідэнтыфікуючы мэтавы працэс пры дапамозе pidfd. Праз madvise() можна інфармаваць ядро ​​пра асаблівасці працы з памяццю для аптымізацыі кіравання памяццю працэсу, напрыклад, на аснове перададзенай інфармацыі ядро ​​можа ініцыяваць вызваленне дадатковай вольнай памяці. Выклік madvise() іншым працэсам можа запатрабавацца ў сітуацыі, калі інфармацыя, неабходная для аптымізацыі, невядомая бягучаму працэсу, а каардынуецца асобным фонавым кіравальным працэсам, які самастойна можа ініцыяваць адабранне ў працэсаў невыкарыстоўванай памяці.
  • Для платформы Linux дададзена функцыя process_mrelease(), якая дазваляе паскорыць вызваленне памяці працэсу, які завяршае сваё выкананне. У звычайных умовах вызваленне рэсурсаў і завяршэнне працэсу выконваецца не імгненна і па розных чынніках можа затрымоўвацца, што мяшае працы якія функцыянуюць у прасторы карыстача сістэм ранняга рэагавання на недахоп памяці, такіх як oomd (падаецца ў systemd). Пры дапамозе выкліку process_mrelease падобныя сістэмы могуць больш прадказальна ініцыяваць вяртанне памяці ад прымусова завяршаюцца працэсаў.
  • Ва ўбудаваную рэалізацыю DNS-рэзалверу дададзеная падтрымка опцыі "no-aaaa", якая дазваляе для спрашчэння дыягностыкі праблем адключыць адпраўку DNS-запытаў запісаў AAAA (вызначэнне адрасы IPv6 па імі хаста), у тым ліку пры выкананні NSS-функцый, падобных getaddrinfo(). Опцыя не ўплывае на апрацоўку прывязак IPv6-адрасоў, вызначаных у /etc/hosts і выклікі getaddrinfo() са сцягам AI_PASSIVE.
  • Для платформы Linux дададзены функцыі fsopen, fsmount, move_mount, fsconfig, fspick, open_tree і mount_setattr, якія прадстаўляюць доступ да новага API ядра для кіравання мантаваннем файлавых сістэм з улікам прастор імёнаў кропак мантавання (mount namespaces). Прапанаваныя функцыі дазваляюць паасобна апрацаваць розныя стадыі мантавання (апрацаваць суперблок, атрымаць інфармацыю аб ФС, прымантаваць, прымацаваць да кропкі мантавання), якія раней выконваліся пры дапамозе агульнай функцыі mount(). Паасобныя фунецыі даюць магчымасць выконваць больш складаныя сцэнары мантавання і асобна выконваць такія аперацыі, як пераналадка суперблока, уключэнне опцый, змена кропкі мантавання і перанос у іншую прастору імёнаў. Акрамя таго, паасобная апрацоўка дазваляе сапраўды вызначаць чыннікі высновы кодаў памылак і задаваць некалькі крыніц для шматслаёвых ФС, такіх як overlayfs.
  • У localedef рэалізаваная падтрымка апрацоўкі файлаў з азначэннямі лакаляў, якія пастаўляюцца ў кадоўцы UTF-8 замест ASCII.
  • Дададзеныя функцыі для пераўтварэння шматбайтавых кадовак mbrtoc8 і c8rtomb, якія адпавядаюць спецыфікацыям ISO C2X N2653 і C++20 P0482R6.
  • Дададзена падтрымка тыпу char8_t, вызначанага ў чарнавіку стандарту ISO C2X N2653.
  • Дададзеныя функцыі arc4random, arc4random_buf і arc4random_uniform, якія прадстаўляюць абвязкі над сістэмным выклікам getrandom і інтэрфейсам /dev/urandom, што вяртаюць псеўдавыпадковыя лікі высокай якасці.
  • Пры працы на платформе Linux рэалізавана падтрымка архітэктуры набору каманд LoongArch, якая ўжываецца ў працэсарах Loongson 3 5000 і рэалізуе новы RISC ISA, падобны на MIPS і RISC-V. У бягучым выглядзе даступная толькі падтрымка 64-разраднага варыянту LoongArch (LA64). Для працы патрабуецца наяўнасць прынамсі версій binutils 2.38, GCC 12 і ядры Linux 5.19.
  • Абвешчаны састарэлым і будзе выдалены ў наступным выпуску механізм prelink, а таксама злучаныя з ім зменныя асяроддзі LD_TRACE_PRELINKING і LD_USE_LOAD_BIAS і магчымасці кампаноўніка.
  • Выдалены код для праверкі версіі ядра Linux і апрацоўкі зменнай асяроддзі LD_ASSUME_KERNEL. Мінімальна падтрымоўваная пры зборцы Glibc версія ядра вызначаецца праз ELF-поле NT_GNU_ABI_TAG.
  • На платформе Linux спынена падтрымка зменнай асяроддзі LD_LIBRARY_VERSION.

Крыніца: opennet.ru

Дадаць каментар