Rilis Perpustakaan Sistem Glibc 2.36

Setelah enam bulan pengembangan, perpustakaan sistem GNU C Library (glibc) 2.36 telah dirilis, yang sepenuhnya memenuhi persyaratan standar ISO C11 dan POSIX.1-2017. Rilis baru ini mencakup perbaikan dari 59 pengembang.

Beberapa perbaikan yang diterapkan pada Glibc 2.36 antara lain:

  • Menambahkan dukungan untuk format relokasi alamat DT_RELR (relative re__cpLocation) yang baru, yang memungkinkan Anda mengurangi ukuran relokasi relatif dalam objek bersama dan file yang dapat dieksekusi yang ditautkan dalam mode PIE (Position-independent executables). Menggunakan bidang DT_RELR dalam file ELF memerlukan dukungan untuk opsi "-z pack-relative-relocs" di linker, yang diperkenalkan pada rilis binutils 2.38.
  • Untuk platform Linux, fungsi pidfd_open, pidfd_getfd dan pidfd_send_signal diimplementasikan, menyediakan akses ke fungsionalitas pidfd yang membantu menangani situasi penggunaan kembali PID agar lebih akurat mengidentifikasi proses yang mengakses file yang dipantau (pidfd dikaitkan dengan proses tertentu dan tidak berubah, sedangkan PID bisa dilampirkan ke proses lain setelah proses saat ini yang terkait dengan PID tersebut berakhir).
  • Untuk platform Linux, fungsi process_madvise() telah ditambahkan untuk memungkinkan satu proses mengeluarkan panggilan sistem madvise() atas nama proses lain, mengidentifikasi proses target menggunakan pidfd. Melalui madvise(), Anda dapat memberi tahu kernel tentang fitur bekerja dengan memori untuk mengoptimalkan manajemen memori proses; misalnya, berdasarkan informasi yang dikirimkan, kernel dapat memulai pelepasan memori bebas tambahan. Panggilan ke madvise() oleh proses lain mungkin diperlukan dalam situasi di mana informasi yang diperlukan untuk optimasi tidak diketahui oleh proses saat ini, namun dikoordinasikan oleh proses kontrol latar belakang terpisah, yang secara independen dapat memulai penghapusan memori yang tidak terpakai dari proses.
  • Untuk platform Linux, fungsi process_mrelease() telah ditambahkan, yang memungkinkan Anda mempercepat pelepasan memori untuk proses yang menyelesaikan eksekusinya. Dalam keadaan normal, pelepasan sumber daya dan penghentian proses tidak terjadi secara instan dan mungkin tertunda karena berbagai alasan, mengganggu sistem respons awal memori ruang pengguna seperti oomd (disediakan oleh systemd). Dengan memanggil process_mrelease, sistem seperti itu dapat memicu pengambilan kembali memori dari proses yang dipaksakan dengan lebih dapat diprediksi.
  • Dukungan untuk opsi "no-aaaa" telah ditambahkan ke implementasi bawaan dari penyelesai DNS, yang memungkinkan Anda menonaktifkan pengiriman permintaan DNS untuk catatan AAAA (menentukan alamat IPv6 berdasarkan nama host), termasuk saat menjalankan NSS berfungsi seperti getaddrinfo(), untuk menyederhanakan diagnosis masalah. Opsi ini tidak memengaruhi pemrosesan pengikatan alamat IPv6 yang ditentukan di /etc/hosts dan panggilan ke getaddrinfo() dengan flag AI_PASSIVE.
  • Untuk platform Linux, fungsi fsopen, fsmount, move_mount, fsconfig, fspick, open_tree dan mount_setattr telah ditambahkan, menyediakan akses ke API kernel baru untuk mengelola pemasangan sistem file berdasarkan namespace mount. Fungsi yang diusulkan memungkinkan Anda untuk secara terpisah memproses berbagai tahapan pemasangan (memproses superblock, memperoleh informasi tentang sistem file, memasang, melampirkan ke titik pemasangan), yang sebelumnya dilakukan menggunakan fungsi mount() yang umum. Fungsi terpisah memberikan kemampuan untuk melakukan skenario pemasangan yang lebih kompleks dan secara terpisah melakukan operasi seperti mengkonfigurasi ulang superblock, mengaktifkan opsi, mengubah titik pemasangan, dan berpindah ke namespace lain. Selain itu, pemrosesan terpisah memungkinkan Anda menentukan secara akurat alasan keluaran kode kesalahan dan menyetel berbagai sumber untuk sistem file multi-lapis, seperti overlayfs.
  • localedef menyediakan dukungan untuk memproses file definisi lokal yang disediakan dalam pengkodean UTF-8, bukan ASCII.
  • Menambahkan fungsi untuk mengonversi pengkodean mbrtoc8 dan c8rtomb multi-byte ke spesifikasi ISO C2X N2653 dan C++20 P0482R6.
  • Menambahkan dukungan untuk tipe char8_t yang ditentukan dalam draf standar ISO C2X N2653.
  • Menambahkan fungsi arc4random, arc4random_buf dan arc4random_uniform, yang menyediakan wrapper pada panggilan sistem getrandom dan antarmuka /dev/urandom yang mengembalikan nomor pseudorandom berkualitas tinggi.
  • Saat dijalankan pada platform Linux, ia mendukung arsitektur set instruksi LoongArch yang digunakan pada prosesor Loongson 3 5000 dan mengimplementasikan RISC ISA baru, mirip dengan MIPS dan RISC-V. Dalam bentuknya saat ini, hanya dukungan untuk LoongArch (LA64) versi 64-bit yang tersedia. Agar berfungsi, Anda memerlukan setidaknya versi binutils 2.38, GCC 12 dan kernel Linux 5.19.
  • Mekanisme prelink, serta variabel lingkungan LD_TRACE_PRELINKING dan LD_USE_LOAD_BIAS terkait serta kemampuan linker, sudah tidak digunakan lagi dan akan dihapus pada rilis mendatang.
  • Kode yang dihapus untuk memeriksa versi kernel Linux dan menangani variabel lingkungan LD_ASSUME_KERNEL. Versi minimum kernel yang didukung saat membangun Glibc ditentukan melalui kolom ELF NT_GNU_ABI_TAG.
  • Variabel lingkungan LD_LIBRARY_VERSION telah dihentikan pada platform Linux.

Sumber: opennet.ru

Tambah komentar