Keluaran Pustaka Sistem Glibc 2.36

Selepas enam bulan pembangunan, perpustakaan sistem GNU C Library (glibc) 2.36 telah dikeluarkan, yang mematuhi sepenuhnya keperluan piawaian ISO C11 dan POSIX.1-2017. Keluaran baharu ini termasuk pembaikan daripada 59 pembangun.

Beberapa penambahbaikan yang dilaksanakan dalam Glibc 2.36 termasuk:

  • Menambah sokongan untuk format penempatan semula alamat DT_RELR (relative relocation) baharu, yang membolehkan anda mengurangkan saiz penempatan semula relatif dalam objek kongsi dan fail boleh laku yang dipautkan dalam mod PIE (Position-independent executable). Menggunakan medan DT_RELR dalam fail ELF memerlukan sokongan untuk pilihan "-z pack-relative-relocs" dalam pemaut, yang diperkenalkan dalam keluaran binutils 2.38.
  • Untuk platform Linux, fungsi pidfd_open, pidfd_getfd dan pidfd_send_signal dilaksanakan, menyediakan akses kepada fungsi pidfd yang membantu mengendalikan situasi penggunaan semula PID untuk mengenal pasti proses yang mengakses fail yang dipantau dengan lebih tepat (pidfd dikaitkan dengan proses tertentu dan tidak berubah, manakala PID boleh dilampirkan pada proses lain selepas proses semasa yang dikaitkan dengan PID itu ditamatkan).
  • Untuk platform Linux, fungsi process_madvise() telah ditambah untuk membenarkan satu proses mengeluarkan panggilan sistem madvise() bagi pihak proses lain, mengenal pasti proses sasaran menggunakan pidfd. Melalui madvise(), anda boleh memaklumkan kernel tentang ciri-ciri bekerja dengan memori untuk mengoptimumkan pengurusan memori proses; contohnya, berdasarkan maklumat yang dihantar, kernel boleh memulakan pelepasan memori percuma tambahan. Panggilan ke madvise() oleh proses lain mungkin diperlukan dalam situasi di mana maklumat yang diperlukan untuk pengoptimuman tidak diketahui oleh proses semasa, tetapi diselaraskan oleh proses kawalan latar belakang yang berasingan, yang secara bebas boleh memulakan penyingkiran memori yang tidak digunakan daripada proses.
  • Untuk platform Linux, fungsi process_mrelease() telah ditambah, yang membolehkan anda mempercepatkan pelepasan memori untuk proses yang melengkapkan pelaksanaannya. Dalam keadaan biasa, pelepasan sumber dan penamatan proses tidak serta-merta dan mungkin ditangguhkan atas pelbagai sebab, mengganggu sistem tindak balas awal memori ruang pengguna seperti oomd (disediakan oleh systemd). Dengan memanggil process_mrelease, sistem sedemikian boleh mencetuskan tuntutan semula memori daripada proses paksa dengan lebih mudah.
  • Sokongan untuk pilihan "tidak-aaaa" telah ditambahkan pada pelaksanaan terbina dalam penyelesai DNS, yang membolehkan anda melumpuhkan penghantaran permintaan DNS untuk rekod AAAA (menentukan alamat IPv6 mengikut nama hos), termasuk apabila melaksanakan NSS berfungsi seperti getaddrinfo(), untuk memudahkan diagnosis masalah. Pilihan ini tidak menjejaskan pemprosesan pengikatan alamat IPv6 yang ditakrifkan dalam /etc/hosts dan panggilan ke getaddrinfo() dengan bendera AI_PASSIVE.
  • Untuk platform Linux, fungsi fsopen, fsmount, move_mount, fsconfig, fspick, open_tree dan mount_setattr telah ditambah, menyediakan akses kepada API kernel baharu untuk menguruskan pemasangan sistem fail berdasarkan ruang nama pelekap. Fungsi yang dicadangkan membolehkan anda memproses secara berasingan peringkat pelekap yang berbeza (memproses superblock, mendapatkan maklumat tentang sistem fail, lekap, lekapkan pada titik lekap), yang sebelum ini dilakukan menggunakan fungsi lekap() biasa. Fungsi berasingan menyediakan keupayaan untuk melaksanakan senario pelekap yang lebih kompleks dan melakukan operasi secara berasingan seperti mengkonfigurasi semula superblock, mendayakan pilihan, menukar titik pelekap dan beralih ke ruang nama lain. Di samping itu, pemprosesan berasingan membolehkan anda menentukan dengan tepat sebab keluaran kod ralat dan menetapkan berbilang sumber untuk sistem fail berbilang lapisan, seperti tindanan.
  • localedef menyediakan sokongan untuk memproses fail definisi setempat yang dibekalkan dalam pengekodan UTF-8 dan bukannya ASCII.
  • Menambah fungsi untuk menukar pengekodan mbrtoc8 dan c8rtomb berbilang bait kepada spesifikasi ISO C2X N2653 dan C++20 P0482R6.
  • Menambah sokongan untuk jenis char8_t yang ditakrifkan dalam draf standard ISO C2X N2653.
  • Menambahkan fungsi arc4random, arc4random_buf dan arc4random_uniform yang menyediakan pembalut pada panggilan sistem getrandom dan antara muka /dev/urandom yang mengembalikan nombor pseudorandom berkualiti tinggi.
  • Apabila berjalan pada platform Linux, ia menyokong seni bina set arahan LoongArch yang digunakan dalam pemproses Loongson 3 5000 dan melaksanakan RISC ISA baharu, serupa dengan MIPS dan RISC-V. Dalam bentuk semasa, hanya sokongan untuk versi 64-bit LoongArch (LA64) tersedia. Untuk berfungsi, anda memerlukan sekurang-kurangnya versi binutils 2.38, GCC 12 dan Linux kernel 5.19.
  • Mekanisme prapautan, serta pembolehubah persekitaran LD_TRACE_PRELINKING dan LD_USE_LOAD_BIAS yang berkaitan dan keupayaan pemaut, telah ditamatkan dan akan dialih keluar dalam keluaran akan datang.
  • Kod dialih keluar untuk menyemak versi kernel Linux dan mengendalikan pembolehubah persekitaran LD_ASSUME_KERNEL. Versi minimum kernel yang disokong semasa membina Glibc ditentukan melalui medan ELF NT_GNU_ABI_TAG.
  • Pembolehubah persekitaran LD_LIBRARY_VERSION telah dihentikan pada platform Linux.

Sumber: opennet.ru

Tambah komen