Glibc 2.36 Sistem Kitaplığı Sürümü

Altı aylık geliştirmenin ardından, ISO C2.36 ve POSIX.11-1 standartlarının gerekliliklerine tamamen uyan GNU C Kütüphanesi (glibc) 2017 yayınlandı. Yeni sürüm, 59 geliştiricinin düzeltmelerini içeriyor.

Glibc 2.36'te uygulanan iyileştirmeler arasında şunlar yer alır:

  • Paylaşılan nesnelerdeki ve PIE (Konumdan bağımsız yürütülebilir dosyalar) modunda bağlantılı yürütülebilir dosyalardaki göreli yeniden konumlandırmaların boyutunu azaltmanıza olanak tanıyan yeni DT_RELR (göreceli yeniden konumlandırma) adres yeniden konumlandırma formatı için destek eklendi. ELF dosyalarında DT_RELR alanının kullanılması, binutils 2.38 sürümünde tanıtılan bağlayıcıdaki "-z pack-relative-relocs" seçeneğinin desteklenmesini gerektirir.
  • Linux platformu için, pidfd_open, pidfd_getfd ve pidfd_send_signal işlevleri uygulanarak, izlenen dosyalara erişen süreçleri daha doğru bir şekilde tanımlamak için PID yeniden kullanım durumlarının ele alınmasına yardımcı olan pidfd işlevselliğine erişim sağlanır (pidfd belirli bir işlemle ilişkilidir ve değişmez, PID ise o PID ile ilişkili mevcut işlem sona erdikten sonra başka bir işleme eklenebilir).
  • Linux platformu için, bir işlemin başka bir işlem adına madvise() sistem çağrısı yapmasına izin vermek ve hedef işlemi pidfd kullanarak tanımlamak için proses_madvise() işlevi eklenmiştir. madvise() aracılığıyla, işlem belleği yönetimini optimize etmek için çekirdeği bellekle çalışmanın özellikleri hakkında bilgilendirebilirsiniz; örneğin, aktarılan bilgilere dayanarak çekirdek, ek boş belleğin serbest bırakılmasını başlatabilir. Optimizasyon için gereken bilginin mevcut süreç tarafından bilinmediği, ancak kullanılmayan belleğin süreçlerden kaldırılmasını bağımsız olarak başlatabilen ayrı bir arka plan kontrol süreci tarafından koordine edildiği bir durumda, başka bir süreç tarafından madvise() çağrısı gerekli olabilir.
  • Linux platformu için, yürütülmesini tamamlayan bir işlem için belleğin serbest bırakılmasını hızlandırmanıza olanak tanıyan proses_mrelease() işlevi eklenmiştir. Normal koşullar altında, kaynağın serbest bırakılması ve sürecin sonlandırılması anında gerçekleşmez ve çeşitli nedenlerden dolayı gecikebilir, bu da oomd (systemd tarafından sağlanır) gibi kullanıcı alanı belleği erken yanıt sistemlerine müdahale edebilir. Process_mrelease çağrıldığında, bu tür sistemler zorunlu işlemlerden belleğin geri kazanılmasını daha öngörülebilir bir şekilde tetikleyebilir.
  • DNS çözümleyicinin yerleşik uygulamasına "no-aaaa" seçeneği desteği eklendi; bu, NSS'nin yürütülmesi de dahil olmak üzere AAAA kayıtları için DNS isteklerinin gönderilmesini devre dışı bırakmanıza (ana bilgisayar adına göre bir IPv6 adresi belirleme) olanak tanır. Sorun teşhisini kolaylaştırmak için getaddrinfo() gibi işlevler. Bu seçenek, /etc/hosts dosyasında tanımlanan IPv6 adres bağlamalarının ve AI_PASSIVE bayrağıyla getaddrinfo() çağrılarının işlenmesini etkilemez.
  • Linux platformu için fsopen, fsmount, move_mount, fsconfig, fspick, open_tree ve mount_setattr işlevleri eklendi ve mount ad alanlarına dayalı olarak dosya sistemi montajını yönetmek için yeni bir çekirdek API'sine erişim sağladı. Önerilen işlevler, daha önce ortak mount() işlevi kullanılarak gerçekleştirilen farklı montaj aşamalarını (süper bloğu işleme, dosya sistemi hakkında bilgi edinme, bağlama, bağlama noktasına ekleme) ayrı ayrı işlemenize olanak tanır. Ayrı işlevler, daha karmaşık bağlama senaryolarını gerçekleştirme ve süper bloğu yeniden yapılandırma, seçenekleri etkinleştirme, bağlama noktasını değiştirme ve başka bir ad alanına geçme gibi işlemleri ayrı ayrı gerçekleştirme olanağı sağlar. Ek olarak, ayrı işleme, hata kodlarının çıktısının nedenlerini doğru bir şekilde belirlemenize ve çok katmanlı dosya sistemleri için kaplamalar gibi birden fazla kaynak ayarlamanıza olanak tanır.
  • localedef, ASCII yerine UTF-8 kodlamasında sağlanan yerel ayar dosyalarının işlenmesi için destek sağlar.
  • Çok baytlı mbrtoc8 ve c8rtomb kodlamalarını ISO C2X N2653 ve C++20 P0482R6 spesifikasyonlarına dönüştürmek için işlevler eklendi.
  • ISO C8X N2 standardı taslağında tanımlanan char2653_t türü için destek eklendi.
  • getrandom sistem çağrısı üzerinde sarmalayıcılar sağlayan arc4random, arc4random_buf ve arc4random_uniform işlevleri ve yüksek kaliteli sözde rastgele sayılar döndüren /dev/urandom arayüzü eklendi.
  • Linux platformunda çalışırken, Loongson 3 5000 işlemcilerinde kullanılan LoongArch komut seti mimarisini destekler ve MIPS ve RISC-V'ye benzer şekilde yeni RISC ISA'yı uygular. Mevcut haliyle yalnızca LoongArch'ın (LA64) 64 bit sürümü için destek mevcuttur. Çalışmak için en azından binutils 2.38, GCC 12 ve Linux çekirdeği 5.19 sürümlerine ihtiyacınız var.
  • Ön bağlantı mekanizmasının yanı sıra ilişkili LD_TRACE_PRELINKING ve LD_USE_LOAD_BIAS ortam değişkenleri ve bağlayıcı özellikleri kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacak.
  • Linux çekirdek sürümünü kontrol etmek ve LD_ASSUME_KERNEL ortam değişkenini işlemek için kullanılan kod kaldırıldı. Glibc oluşturulurken desteklenen minimum çekirdek sürümü, NT_GNU_ABI_TAG ELF alanı aracılığıyla belirlenir.
  • LD_LIBRARY_VERSION ortam değişkeni Linux platformunda kullanımdan kaldırıldı.

Kaynak: opennet.ru

Yorum ekle