Glibc 2.36 tizim kutubxonasi relizi

Olti oylik rivojlanishdan so'ng ISO C2.36 va POSIX.11-1 standartlari talablariga to'liq javob beradigan GNU C Library (glibc) 2017 tizim kutubxonasi chiqarildi. Yangi versiya 59 ta ishlab chiquvchi tomonidan tuzatilgan.

Glibc 2.36 da amalga oshirilgan ba'zi yaxshilanishlarga quyidagilar kiradi:

  • Yangi DT_RELR (nisbiy ko'chirish) manzilni ko'chirish formatini qo'llab-quvvatlash qo'shildi, bu sizga PIE (Position- mustaqil bajariladigan fayllar) rejimida bog'langan umumiy ob'ektlar va bajariladigan fayllardagi nisbiy ko'chirish hajmini kamaytirish imkonini beradi. ELF fayllaridagi DT_RELR maydonidan foydalanish binutils 2.38 versiyasida kiritilgan bog'lovchida "-z pack-relative-relocs" opsiyasini qo'llab-quvvatlashni talab qiladi.
  • Linux platformasi uchun pidfd_open, pidfd_getfd va pidfd_send_signal funktsiyalari amalga oshiriladi, bu esa kuzatilayotgan fayllarga kirish jarayonlarini aniqroq aniqlash uchun PIDni qayta ishlatish holatlarini boshqarishga yordam beradigan pidfd funksiyasiga kirishni ta'minlaydi (pidfd ma'lum bir jarayon bilan bog'liq va o'zgarmaydi, PID esa mumkin. PID bilan bog'langan joriy jarayon tugaganidan keyin boshqa jarayonga biriktirilishi mumkin).
  • Linux platformasi uchun process_madvise() funksiyasi bir jarayonga boshqa jarayon nomidan madvise() tizimi chaqiruvini chiqarishga ruxsat berish uchun qo'shilgan va pidfd yordamida maqsadli jarayonni aniqlaydi. Madvise() orqali siz yadroni xotira bilan ishlash xususiyatlari haqida ma'lumot berishingiz mumkin, masalan, uzatilgan ma'lumotlarga asoslanib, yadro qo'shimcha bo'sh xotirani chiqarishni boshlashi mumkin. Boshqa jarayon tomonidan madvise() ga qo'ng'iroq qilish, optimallashtirish uchun zarur bo'lgan ma'lumotlar joriy jarayonga noma'lum bo'lgan, ammo foydalanilmagan xotirani jarayonlardan olib tashlashni mustaqil ravishda boshlashi mumkin bo'lgan alohida fon boshqaruv jarayoni tomonidan muvofiqlashtirilgan vaziyatda talab qilinishi mumkin.
  • Linux platformasi uchun process_mrelease() funksiyasi qo'shildi, bu esa uning bajarilishini yakunlagan jarayon uchun xotirani chiqarishni tezlashtirish imkonini beradi. Oddiy sharoitlarda resursni chiqarish va jarayonni tugatish bir zumda bo'lmaydi va turli sabablarga ko'ra kechiktirilishi mumkin, bu oomd (systemd tomonidan taqdim etilgan) kabi foydalanuvchi-kosmik xotira erta javob tizimlariga xalaqit beradi. process_mrelease ni chaqirish orqali bunday tizimlar majburiy jarayonlardan xotirani qayta tiklashni oldindan taxmin qilish mumkin.
  • AAAA yozuvlari uchun DNS so'rovlarini yuborishni (xost nomi bo'yicha IPv6 manzilini aniqlash), shu jumladan NSS-ni bajarishda o'chirish imkonini beruvchi DNS-resolverning o'rnatilgan ilovasiga "no-aaaa" opsiyasini qo'llab-quvvatlash qo'shildi. getaddrinfo() kabi funksiyalar muammoni aniqlashni soddalashtiradi. Ushbu parametr /etc/hosts va getaddrinfo() ga AI_PASSIVE bayrog'i bilan qo'ng'iroqlarda belgilangan IPv6 manzillarini qayta ishlashga ta'sir qilmaydi.
  • Linux platformasi uchun fsopen, fsmount, move_mount, fsconfig, fspick, open_tree va mount_setattr funksiyalari qoʻshildi, ular oʻrnatish nomlari boʻshliqlari asosida fayl tizimini oʻrnatishni boshqarish uchun yangi yadro API-ga kirishni taʼminlaydi. Taklif etilgan funksiyalar avval umumiy mount() funksiyasi yordamida bajarilgan montajning turli bosqichlarini (superblokni qayta ishlash, fayl tizimi haqida ma’lumot olish, o‘rnatish, o‘rnatish nuqtasiga biriktirish) alohida ishlov berishga imkon beradi. Alohida funktsiyalar murakkabroq o'rnatish stsenariylarini bajarish va superblokni qayta sozlash, opsiyalarni yoqish, o'rnatish nuqtasini o'zgartirish va boshqa nom maydoniga o'tish kabi operatsiyalarni alohida bajarish imkoniyatini beradi. Bundan tashqari, alohida ishlov berish xato kodlarining chiqishi sabablarini aniq aniqlash va ko'p qatlamli fayl tizimlari uchun bir nechta manbalarni o'rnatish imkonini beradi, masalan, overlayflar.
  • localedef ASCII o'rniga UTF-8 kodlash bilan ta'minlangan mahalliy aniqlash fayllarini qayta ishlashni qo'llab-quvvatlaydi.
  • Ko'p baytli mbrtoc8 va c8rtomb kodlashlarini ISO C2X N2653 va C++20 P0482R6 spetsifikatsiyalariga aylantirish uchun qo'shilgan funksiyalar.
  • ISO C8X N2 standarti loyihasida belgilangan char2653_t turi uchun qoʻshimcha qoʻllab-quvvatlash.
  • arc4random, arc4random_buf va arc4random_uniform funksiyalari getrandom tizimi chaqiruvi va yuqori sifatli psevdorandom raqamlarni qaytaruvchi /dev/urandom interfeysi orqali oʻrashni taʼminlaydi.
  • Linux platformasida ishlaganda, u Loongson 3 5000 protsessorlarida ishlatiladigan LoongArch ko'rsatmalar to'plami arxitekturasini qo'llab-quvvatlaydi va MIPS va RISC-V ga o'xshash yangi RISC ISA ni amalga oshiradi. Hozirgi shaklda faqat LoongArch (LA64) ning 64-bitli versiyasini qo'llab-quvvatlash mavjud. Ishlash uchun sizga kamida binutils 2.38, GCC 12 va Linux yadrosi 5.19 versiyalari kerak bo'ladi.
  • Oldindan bog‘lanish mexanizmi, shuningdek, unga bog‘liq LD_TRACE_PRELINKING va LD_USE_LOAD_BIAS muhit o‘zgaruvchilari va bog‘lovchi imkoniyatlari eskirgan va kelgusi versiyada olib tashlanadi.
  • Linux yadrosi versiyasini tekshirish va LD_ASSUME_KERNEL muhit oʻzgaruvchisi bilan ishlash uchun kod olib tashlandi. Glibc ni yaratishda qo'llab-quvvatlanadigan yadroning minimal versiyasi NT_GNU_ABI_TAG ELF maydoni orqali aniqlanadi.
  • LD_LIBRARY_VERSION muhit oʻzgaruvchisi Linux platformasida toʻxtatildi.

Manba: opennet.ru

a Izoh qo'shish