Glibc 2.31 سسٹم لائبریری ریلیز

چھ ماہ کی ترقی کے بعد شائع سسٹم لائبریری کی رہائی جی این یو سی لائبریری (glibc) 2.31جو ISO C11 اور POSIX.1-2008 کے تقاضوں کی مکمل تعمیل کرتا ہے۔ نئی ریلیز میں 58 ڈویلپرز کی اصلاحات شامل ہیں۔

Glibc 2.31 میں لاگو کیا گیا۔ بہتری آپ نوٹ کرسکتے ہیں:

  • مستقبل کے ISO معیار کے مسودے میں بیان کردہ صلاحیتوں کو فعال کرنے کے لیے _ISOC2X_SOURCE میکرو کو شامل کیا گیا C2X. یہ خصوصیات _GNU_SOURCE میکرو استعمال کرتے وقت یا "-std=gnu2x" پرچم کے ساتھ gcc میں تعمیر کرتے وقت بھی فعال ہوتی ہیں۔
  • ہیڈر فائل "math.h" میں بیان کردہ فنکشنز کے لیے جو اپنے نتائج کو ایک چھوٹی قسم میں گول کرتے ہیں، متعلقہ عام قسم کے میکرو فائل "tgmath.h" میں تجویز کیے گئے ہیں، جیسا کہ وضاحتیں TS 18661-1:2014 اور TS کی ضرورت ہے۔ 18661-3: 2015;
  • شامل کیا گیا pthread_clockjoin_np() فنکشن، جو تھریڈ کے مکمل ہونے کا انتظار کرتا ہے، ٹائم آؤٹ کو مدنظر رکھتے ہوئے (اگر ٹائم آؤٹ مکمل ہونے سے پہلے ہوتا ہے، تو فنکشن ایک خرابی لوٹائے گا)۔ کے برعکس pthread_timedjoin_np(), pthread_clockjoin_np() میں ٹائم آؤٹ کا حساب لگانے کے لیے ٹائمر کی قسم کی وضاحت کرنا ممکن ہے - CLOCK_MONOTONIC (سسٹم کے سلیپ موڈ میں گزارے گئے وقت کو مدنظر رکھتا ہے) یا CLOCK_REALTIME؛
  • DNS حل کنندہ اب /etc/resolv.conf میں ٹرسٹ-ایڈ آپشن اور _res.options میں RES_TRUSTAD پرچم کو سپورٹ کرتا ہے، سیٹ ہونے پر، DNSSEC جھنڈا DNS درخواستوں میں منتقل کیا جاتا ہے۔ AD (تصدیق شدہ ڈیٹا)۔ اس موڈ میں، سرور کی طرف سے سیٹ کردہ AD پرچم ان ایپلیکیشنز کے لیے دستیاب ہو جاتا ہے جو res_search() جیسے فنکشنز کو کال کرتی ہیں۔ پہلے سے طے شدہ طور پر، اگر تجویز کردہ آپشنز سیٹ نہیں کیے گئے ہیں، تو glibc درخواستوں میں AD فلیگ کی وضاحت نہیں کرتا ہے اور اسے جوابات میں خود بخود صاف کر دیتا ہے، جس سے یہ ظاہر ہوتا ہے کہ DNSSEC چیک غائب ہیں۔
  • Glibc کے لیے ورکنگ سسٹم کال بائنڈنگز بنانے کے لیے اب لینکس کرنل ہیڈر فائلوں کو انسٹال کرنے کی ضرورت نہیں ہے۔ استثناء 64 بٹ RISC-V فن تعمیر ہے۔
  • ختم کر دیا کمزوری CVE-2019-19126، جو آپ کو تحفظ کو نظرانداز کرنے کی اجازت دیتا ہے۔
    سیٹوئڈ فلیگ والے پروگراموں میں ASLR اور LD_PREFER_MAP_32BIT_EXEC ماحولیاتی متغیر کی ہیرا پھیری کے ذریعے بھری ہوئی لائبریریوں میں ایڈریس لے آؤٹ کا تعین کریں۔

تبدیلیاں جو مطابقت کو توڑ دیتی ہیں:

  • totalorder()، totalordermag()، اور دیگر فلوٹنگ پوائنٹ اقسام کے لیے اسی طرح کے فنکشنز اب پوائنٹرز کو بطور دلیل قبول کرتے ہیں تاکہ ریاست میں اقدار کو تبدیل کرنے کے بارے میں انتباہات کو ختم کیا جا سکے۔ NaNمستقبل کے C18661X معیار کے لیے تجویز کردہ TS 1-2 کی سفارشات کے مطابق۔
    موجودہ ایگزیکیوٹیبلز جو فلوٹنگ پوائنٹ آرگومنٹس کو براہ راست پاس کرتے ہیں بغیر کسی ترمیم کے چلتے رہیں گے۔

  • طویل عرصے سے فرسودہ وقت کا فنکشن glibc سے منسلک بائنریز کے لیے اب دستیاب نہیں ہے، اور اس کی تعریف کو time.h سے ہٹا دیا گیا ہے۔ سسٹم ٹائم سیٹ کرنے کے لیے، clock_settime فنکشن استعمال کریں۔ مستقبل میں، ہم فرسودہ ftime فنکشن کے ساتھ ساتھ sys/timeb.h ہیڈر فائل کو ہٹانے کا ارادہ رکھتے ہیں (ftime کے بجائے gettimeofday یا clock_gettime استعمال کیا جانا چاہیے)؛
  • گیٹ ٹائم آف ڈے فنکشن سسٹم وائیڈ ٹائم زون کے بارے میں مزید معلومات نہیں دیتا ہے (یہ فیچر 4.2-BSD کے دنوں میں متعلقہ تھا اور کئی سالوں سے فرسودہ ہے)۔ 'tzp' دلیل کو اب ایک null پوائنٹر پاس کیا جانا چاہیے، اور localtime() فنکشن کو موجودہ وقت کی بنیاد پر ٹائم زون کی معلومات حاصل کرنے کے لیے استعمال کیا جانا چاہیے۔ گیٹ ٹائم آف ڈے کو غیر صفر دلیل 'tzp' کے ساتھ کال کرنے سے ٹائم زون کے ڈھانچے میں tz_minuteswest اور tz_dsttime خالی فیلڈز لوٹ آئیں گی۔ gettimeofday فنکشن خود POSIX کے تحت فرسودہ ہے (clock_gettime gettimeofday کے بجائے تجویز کیا جاتا ہے)، لیکن اسے glibc سے ہٹانے کا کوئی منصوبہ نہیں ہے۔
  • settimeofday اب وقت کی ترتیب اور وقت کی درستگی آفسیٹ کے لیے پیرامیٹرز کے بیک وقت گزرنے کی حمایت نہیں کرتا ہے۔ settimeofday کو کال کرتے وقت، ایک دلیل (ٹائم یا آفسیٹ) کو اب null پر سیٹ کیا جانا چاہیے، ورنہ فنکشن کال EINVAL ایرر کے ساتھ ناکام ہو جائے گی۔ gettimeofday کی طرح، settimeofday فنکشن POSIX میں فرسودہ ہے اور اسے clock_settime فنکشن یا فنکشنز کے adjtime خاندان سے تبدیل کرنے کی سفارش کی جاتی ہے۔
  • SPARC ISA v7 فن تعمیر کے لیے سپورٹ کو بند کر دیا گیا ہے (v8 سپورٹ ابھی کے لیے برقرار ہے، لیکن صرف ان پروسیسرز کے لیے جو CAS ہدایات کو سپورٹ کرتے ہیں، جیسے LEON پروسیسرز، نہ کہ SuperSPARC پروسیسرز)۔
  • اگر جوڑا بنانے میں ناکام ہو جاتا ہے "سست"، جس میں لنکر کسی فنکشن کی علامتوں کی تلاش نہیں کرتا ہے جب تک کہ اس فنکشن کو پہلی کال نہ کی جائے، dlopen فنکشن اب اس عمل کو ختم کرنے پر مجبور کرتا ہے (پہلے ناکامی پر NULL واپس کرنا)؛
  • MIPS ہارڈ فلوٹ ABI کے لیے، قابل عمل اسٹیک اب استعمال کیا جاتا ہے، جب تک کہ بلڈ واضح طور پر "-enable-kernel=4.8" پیرامیٹر کے ذریعے لینکس کرنل 4.8.0+ کے استعمال پر پابندی نہ لگا دے (4.8 تک کرنل کے ساتھ، کریشز کچھ MIPS کنفیگریشنز کے لیے مشاہدہ کیا گیا)
  • ٹائم مینیپولیشن سے متعلق سسٹم کالز کے ارد گرد بائنڈنگز کو ٹائم 64 سسٹم کال استعمال کرنے کے لیے منتقل کر دیا گیا ہے، اگر موجود ہو (32 بٹ سسٹمز پر، glibc پہلے نئی سسٹم کالز کو آزماتا ہے جو 64-بٹ ٹائم ٹائپ میں ہیرا پھیری کرتی ہے، اور اگر کوئی نہیں ہے تو، گر جاتا ہے۔ پرانی 32 بٹ کالز پر واپس)۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں