GCC 10 کمپائلر سویٹ کی ریلیز

ترقی کے ایک سال بعد شائع کمپائلرز کے مفت سیٹ کی رہائی جی سی سی 10.1نئی GCC 10.x برانچ میں پہلی بڑی ریلیز۔ بمطابق نئی سکیم ریلیز نمبرز، ورژن 10.0 کو ترقی کے عمل میں استعمال کیا گیا تھا، اور GCC 10.1 کی ریلیز سے کچھ دیر پہلے، GCC 11.0 برانچ پہلے ہی بند ہو چکی تھی، جس کی بنیاد پر اگلی اہم ریلیز، GCC 11.1، تشکیل دی جائے گی۔

GCC 10.1 C++ 20 معیار کے لیے تیار کردہ C++ زبان میں بہت سی اختراعات کے نفاذ، مستقبل کے C زبان کے معیار (C2x) سے متعلق بہتری، کمپائلر بیک اینڈز میں نئی ​​اصلاحات اور تجرباتی تعاون کے لیے قابل ذکر ہے۔ جامد تجزیہ موڈ. اس کے علاوہ، ایک نئی برانچ کی تیاری کے دوران، پروجیکٹ نے ذخیرہ کو SVN سے Git میں منتقل کیا۔

اہم تبدیلیاں:

  • شامل کیا گیا۔ جامد تجزیہ کا تجرباتی موڈ "- پرستار"، جو ایک پروگرام میں کوڈ پر عمل درآمد کے راستوں اور ڈیٹا کے بہاؤ کا وسائل پر مبنی انٹرپروسیجرل تجزیہ کرتا ہے۔ موڈ تالیف کے مرحلے پر مسائل کا پتہ لگانے کی صلاحیت رکھتا ہے، جیسے ایک میموری ایریا کے لیے فری() فنکشن پر ڈبل کالز، فائل ڈسکرپٹر لیکس، ڈیریفرنسنگ اور نال پوائنٹرز کو پاس کرنا، فریڈ میموری بلاکس تک رسائی، غیر شروع شدہ اقدار کا استعمال وغیرہ۔ OpenSSL کوڈ کے لیے نئے موڈ کے استعمال نے پہلے ہی شناخت کرنا ممکن بنا دیا ہے۔ خطرناک کمزوری.
  • بہتر انٹرپروسیجرل آپٹیمائزیشنز۔ IPA-SRA (Interprocedural Scalar Shared Replacement) پاس کو بائنڈ ٹائم پر کام کرنے کے لیے دوبارہ ڈیزائن کیا گیا ہے اور، دوسری چیزوں کے علاوہ، اب کمپیوٹیڈ اور واپس کی گئی غیر استعمال شدہ اقدار کو ہٹاتا ہے۔ "-O2" آپٹیمائزیشن موڈ میں، "-finline-functions" آپشن کو فعال کیا جاتا ہے، جسے عملدرآمد کی کارکردگی پر زیادہ کمپیکٹ کوڈ کے حق میں دوبارہ تبدیل کیا جاتا ہے۔ ان لائن فنکشن کی تعیناتی کے لیے ہیورسٹک کے کام کو تیز کر دیا گیا ہے۔ ان لائن توسیع اور فنکشن کلوننگ ہیورسٹکس اب انفرادی تبدیلیوں کی تاثیر کا اندازہ لگانے کے لیے قدر کی حدود کے بارے میں معلومات کا استعمال کر سکتے ہیں۔ C++ کے لیے، قسم پر مبنی عرف کی تجزیہ کاری کی درستگی کو بہتر بنایا گیا ہے۔
  • بہتر لنکنگ ٹائم آپٹیمائزیشن (LTO)۔ نیا قابل عمل شامل کیا گیا۔ lto-ڈمپ LTO بائیک کوڈ کے ساتھ آبجیکٹ فائلوں کے بارے میں معلومات کو دوبارہ ترتیب دینے کے لیے۔ متوازی LTO پاسز خود بخود بیک وقت چلنے والے میک ٹاسک کی تعداد کا تعین کرتے ہیں اور، اگر ان کا تعین نہیں کیا جا سکتا ہے، تو سی پی یو کور کی تعداد کے بارے میں معلومات کو متوازی عنصر کے طور پر استعمال کریں۔ zstd الگورتھم کا استعمال کرتے ہوئے LTO بائٹ کوڈ کو کمپریس کرنے کی صلاحیت شامل کی گئی۔
  • کوڈ پروفائلنگ (PGO - پروفائل گائیڈڈ آپٹیمائزیشن) کے نتائج پر مبنی اصلاحی طریقہ کار کو بہتر بنایا گیا ہے، جو کوڈ پر عمل درآمد کی خصوصیات کے تجزیہ کی بنیاد پر زیادہ بہترین کوڈ تیار کرتا ہے۔ تالیف اور گرم/سرد کوڈ کی علیحدگی کے دوران بہتر پروفائل کی دیکھ بھال۔ آپشن کے ذریعے "-fprofile-values» اب 4 پروفائل اقدار تک کی نگرانی کر سکتے ہیں، مثال کے طور پر بالواسطہ کالز اور پروفائل کی مزید درست معلومات فراہم کرنا۔
  • C, C++ اور Fortran زبانوں کے لیے متوازی پروگرامنگ کی تفصیلات نافذ کی گئی ہیں۔ اوپن اے سی سی 2.6، جو GPUs اور خصوصی پروسیسرز جیسے NVIDIA PTX پر آف لوڈنگ آپریشنز کے لیے ٹولز کی وضاحت کرتا ہے۔ معیار پر عمل درآمد تقریباً مکمل ہو چکا ہے۔ اوپن ایم پی 5.0 (اوپن ملٹی پروسیسنگ)، جو API اور مشترکہ میموری اور ویکٹرائزیشن یونٹس (SIMD) کے ساتھ ملٹی کور اور ہائبرڈ (CPU+GPU/DSP) سسٹمز پر متوازی پروگرامنگ کے طریقوں کو لاگو کرنے کے طریقوں کی وضاحت کرتا ہے۔ آخری پرائیویٹ کنڈیشنلز، اسکین اور لوپ ڈائریکٹو، آرڈر اور use_device_addr ایکسپریشنز جیسی خصوصیات شامل کی گئیں۔ OpenMP اور OpenACC کے لیے، چوتھی جنریشن (فجی) اور پانچویں جنریشن AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20) پر آف لوڈنگ آپریشنز کے لیے سپورٹ شامل کی گئی ہے۔
  • C فیملی کی زبانوں کے لیے، "رسائی" فنکشن کو حوالہ یا پوائنٹر کے ذریعے پاس کردہ اشیاء تک فنکشن کی رسائی کو بیان کرنے کے لیے اور ایسی اشیاء کو انٹیجر آرگومنٹس کے ساتھ منسلک کرنے کے لیے شامل کیا گیا ہے جس میں آبجیکٹ کے سائز کے بارے میں معلومات موجود ہیں۔ "رسائی" کے ساتھ مل کر کام کرنے کے لیے، صارف کے افعال سے غلط رسائی کا پتہ لگانے کے لیے "قسم" وصف لاگو کیا جاتا ہے، مثال کے طور پر، جب صف کی حدود سے باہر کسی علاقے میں قدریں لکھی جاتی ہیں۔ مخصوص ورژن نمبرز کے ساتھ ELF فائل میں علامتوں کو منسلک کرنے کے لیے "symver" وصف بھی شامل کیا گیا ہے۔
  • نئی انتباہات شامل کی گئیں:
    • "-Wstring-compare" ("-Wextra" کے ساتھ فعال) - اظہار کی موجودگی کے بارے میں خبردار کرتا ہے جس میں صفر کا موازنہ strcmp اور strncmp فنکشنز کو کال کرنے کے نتیجے سے کیا جاتا ہے، جو اس حقیقت کی وجہ سے مستقل کے برابر ہے کہ لمبائی ایک دلیل کی دوسری دلیل میں سرنی کے سائز سے زیادہ ہے۔
    • "-Wzero-length-bounds" ("-Warray-bounds" کے ساتھ فعال) - صفر کی لمبائی کے سرنی عناصر تک رسائی کے بارے میں خبردار کرتا ہے، جو دوسرے ڈیٹا کو اوور رائٹ کرنے کا باعث بن سکتا ہے۔
    • "-Warray-bounds"، "-Wformat-overflow"، "-Wrestrict"، "-Wreturn-local-addr" اور "-Wstringop-overflow" وارننگز کو حد سے باہر کے حالات کی تعداد کو بڑھانے کے لیے بڑھا دیا گیا ہے۔ جو سنبھالے جاتے ہیں.
  • UCN اشارے (\uNNNN یا \UNNNNNNNN) کے بجائے موجودہ انکوڈنگ (UTF-8 بذریعہ ڈیفالٹ) کا استعمال کرتے ہوئے شناخت کنندگان میں براہ راست وسیع حروف کی وضاحت کرنے کی صلاحیت کو نافذ کیا۔ مثال کے طور پر:

    static const int π = 3;
    int get_naïve_pi() {
    واپسی π؛
    }

  • C زبان کے لیے، C2X معیار کے اندر تیار کردہ نئی خصوصیات کا ایک حصہ لاگو کیا گیا ہے (-std=c2x اور -std=gnu2x کی وضاحت کے ذریعے فعال کیا گیا ہے): "[[]]" نحو کے لیے معاونت صفات کی وضاحت کے لیے ظاہر ہوئی ہے جیسا کہ C++ (مثال کے طور پر، [[gnu ::const]]، [[فرسودہ]]، [[fallthrough]] اور [[maybe_unused]]۔ UTF-8 حروف کے ساتھ مستقل کی وضاحت کے لیے "u8" نحو کے لیے تعاون شامل کیا گیا۔
    میں نئے میکروز شامل کیے گئے۔ . strftime میں "%OB" اور "%Ob" کے متبادل شامل کیے گئے۔

  • C کے لیے ڈیفالٹ موڈ "-fno-common" ہے، جو کچھ پلیٹ فارمز پر عالمی متغیرات تک زیادہ موثر رسائی کی اجازت دیتا ہے۔
  • C++ کے لیے، تقریباً 16 تبدیلیاں اور اختراعات لاگو کی گئی ہیں، جنہیں C++20 معیار میں تیار کیا گیا ہے۔ شامل کردہ مطلوبہ لفظ "constinit" سمیت
    اور ٹیمپلیٹ ایکسٹینشن کے لیے سپورٹ نافذ کر دی گئی ہے"تصور" تصورات آپ کو ٹیمپلیٹ پیرامیٹر کی ضروریات کے ایک سیٹ کی وضاحت کرنے کی اجازت دیتے ہیں جو مرتب کرنے کے وقت، دلائل کے سیٹ کو محدود کرتے ہیں جنہیں ٹیمپلیٹ پیرامیٹرز کے طور پر قبول کیا جا سکتا ہے۔ تصورات کو ٹیمپلیٹ کے اندر استعمال ہونے والی ڈیٹا کی اقسام کی خصوصیات اور ان پٹ پیرامیٹرز کی ڈیٹا ٹائپ خصوصیات کے درمیان منطقی تضادات سے بچنے کے لیے استعمال کیا جا سکتا ہے۔

  • G++ constexpr کے ذریعے مستقل اشیاء کو تبدیل کرنے کی وجہ سے غیر متعینہ رویے کا پتہ لگاتا ہے۔ constexpr کا حساب لگاتے وقت کمپائلر کے ذریعہ میموری کی کھپت میں کمی۔ نئی انتباہات "-Wmismatched-tags" اور "-Wredundant-tags" شامل کی گئیں۔
  • نئے کمانڈ لائن کے اختیارات تجویز کیے گئے ہیں:
    • "نئے" اور "ڈیلیٹ" آپریٹرز کے غیر ضروری جوڑوں کو ہٹانے کے لیے "-fallocation-dce"۔
    • "-fprofile-partial-training" کوڈ کے لیے سائز کی اصلاح کو غیر فعال کرنے کے لیے جس میں ٹریننگ نہیں ہے۔
    • پروفائل تولیدی صلاحیت کی سطح کو کنٹرول کرنے کے لیے -fprofile-reproducible۔
    • "-fprofile-prefix-path" علیحدہ پروفائل جنریشن کے لیے استعمال ہونے والی بیس سورس بلڈ ڈائرکٹری کی وضاحت کرنے کے لیے ("-fprofile-generate=profile_dir" اور "-fprofile-use=profile_dir" کے لیے)۔
  • مذکور اختیارات کے لیے انتباہی متن میں، ہائپر لنکس فراہم کیے گئے ہیں جو آپ کو ان اختیارات کے لیے دستاویزات میں جانے کی اجازت دیتے ہیں۔ URL متبادل کو "-fdiagnostics-urls" اختیار کا استعمال کرتے ہوئے کنٹرول کیا جاتا ہے۔
  • پری پروسیسر آپریٹر شامل کیا گیا "__ہے_بنایا"، جو بلٹ ان فنکشنز کو چیک کرنے کے لیے استعمال کیا جا سکتا ہے۔
  • ISO/IEC TS 18661 تصریح میں بیان کردہ راؤنڈنگ فنکشن کے نفاذ کے ساتھ ایک نیا بلٹ ان فنکشن "__builtin_roundeven" شامل کیا گیا، جو کہ "راؤنڈ" کی طرح ہے، لیکن 0.5 سے زیادہ (بڑی قدر تک) کا حصہ 0.5 سے کم ہے۔ - نیچے (صفر تک)، اور 0.5 کے برابر - آخری ہندسے کی برابری سے شروع ہوتا ہے۔
  • AArch64 فن تعمیر کے لیے، SVE2 ایکسٹینشن کے لیے سپورٹ کو شامل کیا گیا ہے اور SVE (Scalable Vector Extension) کے لیے سپورٹ کو بہتر بنایا گیا ہے، بشمول SVE ACLE فنکشنز اور اقسام کے لیے اضافی سپورٹ، اور ویکٹرائزیشن کا استعمال۔ LSE (Large System Extensions) اور TME (Transactional Memory Extension) کے لیے سپورٹ کو بڑھا دیا گیا ہے۔ Armv8.5-A اور Armv8.6-A میں تجویز کردہ نئی ہدایات شامل کی گئی ہیں، بشمول بے ترتیب نمبر جنریشن، راؤنڈنگ، میموری ٹیگ بائنڈنگ،
    bfloat16 اور میٹرکس ضرب۔ شامل کردہ پروسیسر سپورٹ
    Arm Cortex-A77،
    Arm Cortex-A76AE،
    Arm Cortex-A65،
    Arm Cortex-A65AE،
    Arm Cortex-A34 اور
    مارویل تھنڈر ایکس 3۔

  • ARM32 کے لیے ABI FDPIC (64-bit فنکشن پوائنٹرز) کے لیے تعاون شامل کیا گیا۔ 64-بٹ انٹیجر آپریشنز کی دوبارہ ڈیزائن اور آپٹمائزڈ پروسیسنگ۔ سی پی یو سپورٹ شامل کر دی گئی۔
    Arm Cortex-A77،
    Arm Cortex-A76AE اور
    Arm Cortex-M35P۔ ACLE ڈیٹا پروسیسنگ ہدایات کے لیے توسیعی تعاون، بشمول 32-bit SIMD، 16-bit ضرب، latch ریاضی، اور دیگر DSP الگورتھم کی اصلاح۔ ACLE CDE (کسٹم ڈیٹا پاتھ ایکسٹینشن) ہدایات کے لیے تجرباتی معاونت شامل کی گئی۔

  • GCN مائیکرو آرکیٹیکچر کی بنیاد پر AMD GPUs کے لیے بیک اینڈ میں کوڈ جنریشن اور ویکٹرائزیشن کو نمایاں طور پر بہتر بنایا گیا ہے۔
  • AVR فن تعمیر کے لیے XMEGA جیسے آلات کے لیے تعاون شامل کیا گیا۔
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATtiny808, ATtiny809, ATmega1608, ATmega1609, AT3208mega3209, ATtiny4808 4809، ATmegaXNUMX، ATmegaXNUMX XNUMX، ATmegaXNUMX اور ATmegaXNUMX۔

  • IA-32/x86-64 آرکیٹیکچرز کے لیے ایک نیا Intel ENQCMD انسٹرکشن سیٹ آرکیٹیکچر ایکسٹینشن (-menqcmd) شامل کیا گیا ہے۔ Intel Cooperlake (-march=cooperlake، جس میں AVX512BF16 ISA ایکسٹینشن شامل ہے) اور Tigerlake (-march=tigerlake، MOVDIRI, MOVDIR64B اور AVX512VP2INTERSECT ISA ایکسٹینشن شامل ہیں) CPUs کے لیے شامل کردہ تعاون۔
  • HSA فن تعمیر پر مبنی متضاد کمپیوٹنگ سسٹمز کے لیے HSAIL (Heterogeneous System Architecture Intermediate Language) کے نفاذ کو فرسودہ کر دیا گیا ہے اور ممکنہ طور پر اسے مستقبل کی ریلیز میں ہٹا دیا جائے گا۔

ماخذ: opennet.ru

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