إصدار مكتبة النظام Glibc 2.36

بعد ستة أشهر من التطوير ، تم نشر إصدار مكتبة GNU C (glibc) 2.36 ، والتي تتوافق تمامًا مع متطلبات معايير ISO C11 و POSIX.1-2017. يتضمن الإصدار الجديد إصلاحات من 59 مطورًا.

من بين التحسينات التي تم تنفيذها في Glibc 2.36:

  • تمت إضافة دعم لتنسيق نقل عنوان DT_RELR (النقل النسبي) الجديد، والذي يسمح لك بتقليل حجم عمليات النقل النسبية في الكائنات المشتركة والملفات القابلة للتنفيذ المرتبطة في وضع PIE (الملفات التنفيذية المستقلة عن الموضع). يتطلب استخدام الحقل DT_RELR في ملفات ELF دعمًا لخيار "-z pack-relative-relocs" في الرابط، والذي تم تقديمه في إصدار binutils 2.38.
  • بالنسبة لنظام التشغيل Linux، يتم تنفيذ الوظائف pidfd_open وpidfd_getfd وpidfd_send_signal، مما يوفر الوصول إلى وظيفة pidfd التي تساعد في التعامل مع مواقف إعادة استخدام PID لتحديد العمليات التي تصل إلى الملفات المراقبة بشكل أكثر دقة (يرتبط pidfd بعملية محددة ولا يتغير، بينما يمكن لـ PID سيتم إرفاقه بعملية أخرى بعد انتهاء العملية الحالية المرتبطة بمعرف PID).
  • بالنسبة لمنصة Linux، تمت إضافة وظيفةprocess_madvise() للسماح لعملية واحدة بإصدار استدعاء نظام madvise() نيابة عن عملية أخرى، وتحديد العملية المستهدفة باستخدام pidfd. من خلال madvise()، يمكنك إعلام النواة بميزات العمل مع الذاكرة لتحسين إدارة ذاكرة العملية؛ على سبيل المثال، بناءً على المعلومات المرسلة، يمكن للنواة بدء تحرير ذاكرة مجانية إضافية. قد تكون هناك حاجة لاستدعاء madvise() من خلال عملية أخرى في موقف تكون فيه المعلومات المطلوبة للتحسين غير معروفة للعملية الحالية، ولكن يتم تنسيقها من خلال عملية منفصلة للتحكم في الخلفية، والتي يمكنها بشكل مستقل بدء إزالة الذاكرة غير المستخدمة من العمليات.
  • بالنسبة لنظام التشغيل Linux، تمت إضافة وظيفةprocess_mrelease()، والتي تسمح لك بتسريع تحرير الذاكرة لعملية تكتمل تنفيذها. في ظل الظروف العادية، لا يتم تحرير الموارد وإنهاء العملية بشكل فوري وقد يتأخران لأسباب مختلفة، مما يتداخل مع أنظمة الاستجابة المبكرة لذاكرة مساحة المستخدم مثل oomd (المقدم من systemd). من خلال استدعاءprocess_mrelease، يمكن لمثل هذه الأنظمة أن تؤدي بشكل أكثر توقعًا إلى استعادة الذاكرة من العمليات القسرية.
  • تمت إضافة دعم خيار "no-aaaa" إلى التنفيذ المدمج لمحلل DNS، والذي يسمح لك بتعطيل إرسال طلبات DNS لسجلات AAAA (تحديد عنوان IPv6 حسب اسم المضيف)، بما في ذلك عند تنفيذ NSS وظائف مثل getaddrinfo()، لتبسيط تشخيص المشكلة. لا يؤثر هذا الخيار على معالجة روابط عنوان IPv6 المحددة في /etc/hosts واستدعاءات getaddrinfo() مع علامة AI_PASSIVE.
  • بالنسبة لمنصة Linux، تمت إضافة الوظائف fsopen وfsmount وmove_mount وfsconfig وfspick وopen_tree وmount_setattr، مما يوفر الوصول إلى واجهة برمجة تطبيقات kernel جديدة لإدارة تثبيت نظام الملفات استنادًا إلى مساحات أسماء التحميل. تتيح لك الوظائف المقترحة معالجة مراحل التثبيت المختلفة بشكل منفصل (معالجة الكتلة الفائقة، والحصول على معلومات حول نظام الملفات، والتركيب، والإرفاق بنقطة التثبيت)، والتي تم تنفيذها مسبقًا باستخدام وظيفة mount() الشائعة. توفر الوظائف المنفصلة القدرة على تنفيذ سيناريوهات تحميل أكثر تعقيدًا وتنفيذ عمليات بشكل منفصل مثل إعادة تكوين الكتلة الفائقة وتمكين الخيارات وتغيير نقطة التثبيت والانتقال إلى مساحة اسم أخرى. بالإضافة إلى ذلك، تسمح لك المعالجة المنفصلة بتحديد أسباب إخراج رموز الأخطاء بدقة وتعيين مصادر متعددة لأنظمة الملفات متعددة الطبقات، مثل التراكبات.
  • يوفر localedef الدعم لمعالجة ملفات تعريف اللغة المتوفرة بترميز UTF-8 بدلاً من ASCII.
  • تمت إضافة وظائف لتحويل ترميزات mbrtoc8 وc8rtomb متعددة البايت إلى مواصفات ISO C2X N2653 وC++20 P0482R6.
  • تمت إضافة دعم لنوع char8_t المحدد في مسودة معيار ISO C2X N2653.
  • تمت إضافة وظائف arc4random وarc4random_buf وarc4random_uniform التي توفر أغلفة عبر استدعاء نظام getrandom والواجهة /dev/urandom التي تُرجع أرقامًا شبه عشوائية عالية الجودة.
  • عند التشغيل على نظام التشغيل Linux، فإنه يدعم بنية مجموعة تعليمات LoongArch المستخدمة في معالجات Loongson 3 5000 وينفذ RISC ISA الجديد، على غرار MIPS وRISC-V. في شكله الحالي، يتوفر الدعم فقط للإصدار 64 بت من LoongArch (LA64). للعمل، تحتاج على الأقل إلى إصدارات binutils 2.38 وGC 12 وLinux kernel 5.19.
  • تم إهمال آلية الارتباط المسبق، بالإضافة إلى متغيرات البيئة LD_TRACE_PRELINKING وLD_USE_LOAD_BIAS وإمكانات الرابط المرتبطة بها، وستتم إزالتها في إصدار مستقبلي.
  • تمت إزالة التعليمات البرمجية للتحقق من إصدار Linux kernel والتعامل مع متغير البيئة LD_ASSUME_KERNEL. يتم تحديد الحد الأدنى لإصدار النواة المدعوم عند إنشاء Glibc من خلال حقل ELF NT_GNU_ABI_TAG.
  • لقد تم إيقاف متغير البيئة LD_LIBRARY_VERSION على نظام التشغيل Linux.

المصدر: opennet.ru

إضافة تعليق