Glibc 2.36 System Library Release

Pagkatapos ng anim na buwan ng pag-develop, ang GNU C Library (glibc) 2.36 system library ay inilabas, na ganap na sumusunod sa mga kinakailangan ng ISO C11 at POSIX.1-2017 na pamantayan. Kasama sa bagong release ang mga pag-aayos mula sa 59 na developer.

Ang ilan sa mga pagpapahusay na ipinatupad sa Glibc 2.36 ay kinabibilangan ng:

  • Nagdagdag ng suporta para sa bagong DT_RELR (relative relocation) address relocation format, na nagbibigay-daan sa iyong bawasan ang laki ng mga relative relocation sa mga shared object at executable file na naka-link sa PIE (Position-independent executables) mode. Ang paggamit ng DT_RELR field sa ELF file ay nangangailangan ng suporta para sa opsyong "-z pack-relative-relocs" sa linker, na ipinakilala sa paglabas ng binutils 2.38.
  • Para sa Linux platform, ang mga function na pidfd_open, pidfd_getfd at pidfd_send_signal ay ipinapatupad, na nagbibigay ng access sa pidfd functionality na tumutulong sa paghawak ng mga sitwasyon sa muling paggamit ng PID upang mas tumpak na matukoy ang mga proseso sa pag-access sa mga sinusubaybayang file (ang pidfd ay nauugnay sa isang partikular na proseso at hindi nagbabago, habang ang PID ay maaaring mai-attach sa isa pang proseso pagkatapos magwakas ang kasalukuyang prosesong nauugnay sa PID na iyon).
  • Para sa Linux platform, ang process_madvise() function ay idinagdag upang payagan ang isang proseso na mag-isyu ng madvise() system call sa ngalan ng isa pang proseso, na tinutukoy ang target na proseso gamit ang pidfd. Sa pamamagitan ng madvise(), maaari mong ipaalam sa kernel ang tungkol sa mga tampok ng pagtatrabaho sa memorya upang ma-optimize ang pamamahala ng memorya ng proseso; halimbawa, batay sa ipinadalang impormasyon, maaaring simulan ng kernel ang paglabas ng karagdagang libreng memorya. Ang isang tawag sa madvise() sa pamamagitan ng isa pang proseso ay maaaring kailanganin sa isang sitwasyon kung saan ang impormasyon na kailangan para sa pag-optimize ay hindi alam sa kasalukuyang proseso, ngunit na-coordinate ng isang hiwalay na proseso ng kontrol sa background, na maaaring independiyenteng simulan ang pag-alis ng hindi nagamit na memorya mula sa mga proseso.
  • Para sa Linux platform, naidagdag ang process_mrelease() function, na nagbibigay-daan sa iyong mapabilis ang paglabas ng memorya para sa isang proseso na kumukumpleto sa pagpapatupad nito. Sa ilalim ng normal na mga pangyayari, ang paglabas ng mapagkukunan at pagwawakas ng proseso ay hindi kaagad at maaaring maantala sa iba't ibang dahilan, na nakakasagabal sa mga sistema ng maagang pagtugon sa memorya ng espasyo ng gumagamit tulad ng oomd (na ibinigay ng systemd). Sa pamamagitan ng pagtawag sa process_mrelease, ang mga system na ito ay mas mahuhulaan na ma-trigger ang pagbawi ng memorya mula sa mga sapilitang proseso.
  • Ang suporta para sa opsyong "no-aaaa" ay idinagdag sa built-in na pagpapatupad ng DNS resolver, na nagbibigay-daan sa iyong hindi paganahin ang pagpapadala ng mga kahilingan sa DNS para sa mga tala ng AAAA (pagtukoy ng IPv6 address sa pamamagitan ng pangalan ng host), kabilang ang kapag nagpapatupad ng NSS mga function tulad ng getaddrinfo(), upang gawing simple ang diagnosis ng problema. Ang opsyong ito ay hindi nakakaapekto sa pagproseso ng IPv6 address bindings na tinukoy sa /etc/hosts at mga tawag sa getaddrinfo() gamit ang AI_PASSIVE flag.
  • Para sa Linux platform, ang mga function na fsopen, fsmount, move_mount, fsconfig, fspick, open_tree at mount_setattr ay naidagdag, na nagbibigay ng access sa isang bagong kernel API para sa pamamahala ng file system mounting batay sa mount namespaces. Ang mga iminungkahing function ay nagbibigay-daan sa iyo na hiwalay na magproseso ng iba't ibang yugto ng pag-mount (iproseso ang superblock, kumuha ng impormasyon tungkol sa file system, i-mount, i-attach sa mount point), na dati ay ginanap gamit ang karaniwang mount() function. Ang mga hiwalay na function ay nagbibigay ng kakayahang magsagawa ng mas kumplikadong mga mount scenario at magkahiwalay na magsagawa ng mga operasyon tulad ng muling pag-configure ng superblock, pagpapagana ng mga opsyon, pagpapalit ng mount point, at paglipat sa ibang namespace. Bilang karagdagan, binibigyang-daan ka ng hiwalay na pagpoproseso na tumpak na matukoy ang mga dahilan para sa output ng mga error code at magtakda ng maraming mapagkukunan para sa mga multi-layer file system, gaya ng mga overlay.
  • Ang localedef ay nagbibigay ng suporta para sa pagproseso ng mga locale definition file na ibinibigay sa UTF-8 encoding sa halip na ASCII.
  • Nagdagdag ng mga function upang i-convert ang mga multi-byte na mbrtoc8 at c8rtomb na pag-encode sa mga detalye ng ISO C2X N2653 at C++20 P0482R6.
  • Nagdagdag ng suporta para sa uri ng char8_t na tinukoy sa draft na pamantayang ISO C2X N2653.
  • Idinagdag ang arc4random, arc4random_buf, at arc4random_uniform na mga function na nagbibigay ng mga wrapper sa getrandom system call at ang /dev/urandom interface na nagbabalik ng mga de-kalidad na pseudorandom na numero.
  • Kapag tumatakbo sa Linux platform, sinusuportahan nito ang LoongArch instruction set architecture na ginagamit sa Loongson 3 5000 processors at ipinapatupad ang bagong RISC ISA, katulad ng MIPS at RISC-V. Sa kasalukuyang anyo nito, tanging suporta para sa 64-bit na bersyon ng LoongArch (LA64) ang available. Upang gumana, kailangan mo ng hindi bababa sa mga bersyon ng binutils 2.38, GCC 12 at Linux kernel 5.19.
  • Ang mekanismo ng prelink, pati na rin ang nauugnay nitong LD_TRACE_PRELINKING at LD_USE_LOAD_BIAS na mga variable sa kapaligiran at mga kakayahan ng linker, ay hindi na ginagamit at aalisin sa isang release sa hinaharap.
  • Inalis ang code para sa pagsuri sa bersyon ng Linux kernel at paghawak sa LD_ASSUME_KERNEL environment variable. Ang minimum na bersyon ng kernel na sinusuportahan kapag binubuo ang Glibc ay tinutukoy sa pamamagitan ng ELF field na NT_GNU_ABI_TAG.
  • Ang LD_LIBRARY_VERSION na environment variable ay hindi na ipinagpatuloy sa Linux platform.

Pinagmulan: opennet.ru

Magdagdag ng komento