Glibc 2.36 Sistem Kitabxanası Buraxılışı

Altı aylıq inkişafdan sonra ISO C2.36 və POSIX.11-1 standartlarının tələblərinə tam uyğun gələn GNU C Library (glibc) 2017 buraxılışı dərc olunur. Yeni buraxılışa 59 tərtibatçı tərəfindən düzəlişlər daxildir.

Glibc 2.36-də həyata keçirilən təkmilləşdirmələr arasında:

  • Yeni DT_RELR (nisbi yerdəyişmə) ünvan köçürmə formatı üçün əlavə dəstək, PIE (Mövqedən müstəqil icra olunanlar) rejimində əlaqələndirilmiş paylaşılan obyektlərdə və icra edilə bilən fayllarda nisbi yerdəyişmələrin ölçüsünü azaltmağa imkan verir. ELF fayllarında DT_RELR sahəsindən istifadə etmək binutils 2.38-in buraxılışında təqdim edilmiş bağlayıcıda "-z pack-relative-relocs" seçimi üçün dəstək tələb edir.
  • Linux platforması üçün pidfd_open, pidfd_getfd və pidfd_send_signal funksiyaları həyata keçirilir ki, bu da monitorinq edilən fayllara daxil olan prosesləri daha dəqiq müəyyən etmək üçün PID-in təkrar istifadəsi vəziyyətlərini idarə etməyə kömək edən pidfd funksionallığına girişi təmin edir (pidfd müəyyən bir proseslə əlaqələndirilir və dəyişmir, PID isə həmin PID ilə əlaqəli cari proses başa çatdıqdan sonra başqa prosesə əlavə oluna bilər).
  • Linux platforması üçün proses_madvise() funksiyası əlavə edilmişdir ki, bir proses digər proses adından madvise() sistem çağırışını versin və pidfd istifadə edərək hədəf prosesi müəyyən etsin. Madvise() vasitəsi ilə siz yaddaşın idarə edilməsi prosesini optimallaşdırmaq üçün kernelə yaddaşla işləmək xüsusiyyətləri haqqında məlumat verə bilərsiniz; məsələn, ötürülən məlumat əsasında nüvə əlavə boş yaddaşın buraxılmasına başlaya bilər. Optimallaşdırma üçün lazım olan məlumatın cari prosesə məlum olmadığı, lakin istifadə olunmamış yaddaşın proseslərdən çıxarılmasına müstəqil şəkildə başlaya bilən ayrıca fon idarəetmə prosesi ilə əlaqələndirildiyi bir vəziyyətdə başqa bir proses tərəfindən madvise() çağırışı tələb oluna bilər.
  • Linux platforması üçün proses_mrelease() funksiyası əlavə edilmişdir ki, bu da onun icrasını tamamlayan proses üçün yaddaşın buraxılmasını sürətləndirməyə imkan verir. Normal şəraitdə resursun buraxılması və prosesin dayandırılması ani olmur və oomd (systemd tərəfindən təmin edilir) kimi istifadəçi məkan yaddaşının erkən cavab sistemlərinə müdaxilə edərək müxtəlif səbəblərdən gecikə bilər. process_mrelease çağırmaqla, bu cür sistemlər yaddaşın məcburi proseslərdən geri alınmasını daha çox proqnozlaşdıra bilər.
  • DNS həlledicisinin daxili tətbiqinə “no-aaaa” seçimi üçün dəstək əlavə edilmişdir ki, bu da NSS-in icrası zamanı da daxil olmaqla AAAA qeydləri üçün DNS sorğularının göndərilməsini (ana adı ilə IPv6 ünvanını təyin etmək) söndürməyə imkan verir. problemin diaqnozunu asanlaşdırmaq üçün getaddrinfo() kimi funksiyalar. Bu seçim /etc/hosts-da müəyyən edilmiş IPv6 ünvan bağlamalarının və AI_PASSIVE bayrağı ilə getaddrinfo()-a edilən zənglərin işlənməsinə təsir göstərmir.
  • Linux platforması üçün fsopen, fsmount, move_mount, fsconfig, fspick, open_tree və mount_setattr funksiyaları əlavə edilib ki, bu da montaj adları əsasında fayl sisteminin quraşdırılmasını idarə etmək üçün yeni kernel API-yə girişi təmin edir. Təklif olunan funksiyalar, əvvəllər ümumi mount() funksiyasından istifadə etməklə yerinə yetirilən montajın müxtəlif mərhələlərini (superblokun işlənməsi, fayl sistemi haqqında məlumatın əldə edilməsi, montaj, montaj nöqtəsinə qoşulma) ayrıca emal etməyə imkan verir. Ayrı-ayrı funksiyalar daha mürəkkəb montaj ssenarilərini yerinə yetirmək və superblokun yenidən konfiqurasiyası, seçimlərin aktivləşdirilməsi, montaj nöqtəsinin dəyişdirilməsi və başqa ad sahəsinə keçid kimi əməliyyatları ayrıca yerinə yetirmək imkanı verir. Bundan əlavə, ayrıca emal səhv kodlarının çıxış səbəblərini dəqiq müəyyən etməyə və çox qatlı fayl sistemləri üçün çoxlu mənbələri təyin etməyə imkan verir, məsələn, overlayfs.
  • localedef ASCII əvəzinə UTF-8 kodlaşdırmasında təmin edilmiş yerli təyinatlı faylların işlənməsi üçün dəstək verir.
  • Çox baytlı mbrtoc8 və c8rtomb kodlaşdırmalarını ISO C2X N2653 və C++20 P0482R6 spesifikasiyalarına çevirmək üçün əlavə funksiyalar.
  • ISO C8X N2 layihə standartında müəyyən edilmiş char2653_t növü üçün əlavə dəstək.
  • Getrandom sistem çağırışı və yüksək keyfiyyətli yalançı təsadüfi nömrələri qaytaran /dev/urandom interfeysi üzərində sarğı təmin edən arc4random, arc4random_buf və arc4random_uniform funksiyaları əlavə edildi.
  • Linux platformasında işləyərkən o, Loongson 3 5000 prosessorlarında istifadə edilən LoongArch təlimat dəsti arxitekturasını dəstəkləyir və MIPS və RISC-V kimi yeni RISC ISA tətbiq edir. Hazırkı formada yalnız LoongArch-ın (LA64) 64-bit versiyası üçün dəstək mövcuddur. İşləmək üçün sizə ən azı binutils 2.38, GCC 12 və Linux kernel 5.19 versiyaları lazımdır.
  • Əvvəlcədən əlaqə mexanizmi, eləcə də onunla əlaqəli LD_TRACE_PRELINKING və LD_USE_LOAD_BIAS mühit dəyişənləri və əlaqələndirici imkanları köhnəlib və gələcək buraxılışda silinəcək.
  • Linux nüvəsi versiyasını yoxlamaq və LD_ASSUME_KERNEL mühit dəyişənini idarə etmək üçün silinmiş kod. Glibc qurarkən dəstəklənən nüvənin minimum versiyası ELF sahəsi NT_GNU_ABI_TAG vasitəsilə müəyyən edilir.
  • LD_LIBRARY_VERSION mühit dəyişəni Linux platformasında dayandırılıb.

Mənbə: opennet.ru

Добавить комментарий