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

ایک سال کی ترقی کے بعد، مفت GCC 13.1 کمپائلر سویٹ کی ریلیز جاری کی گئی ہے، جو کہ نئی GCC 13.x برانچ میں پہلی اہم ریلیز ہے۔ نئی ریلیز نمبرنگ اسکیم کے تحت، ورژن 13.0 کو ڈیولپمنٹ کے دوران استعمال کیا گیا تھا، اور GCC 13.1 کی ریلیز سے کچھ دیر پہلے، GCC 14.0 برانچ کو پہلے سے ہی فورک کیا گیا تھا، جس سے GCC 14.1 کی اگلی اہم ریلیز تشکیل دی جائے گی۔

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

  • GCC نے Modula-2 پروگرامنگ زبان میں پروگرام بنانے کے لیے ایک فرنٹ اینڈ کو اپنایا۔ یہ بلڈنگ کوڈ کو سپورٹ کرتا ہے جو PIM2، PIM3، اور PIM4 بولیوں کے ساتھ ساتھ اس زبان کے لیے قبول شدہ ISO معیار کے مطابق ہے۔
  • جی سی سی آر ایس پروجیکٹ (جی سی سی رسٹ) کے ذریعہ تیار کردہ رسٹ لینگویج کمپائلر کے نفاذ کے ساتھ ایک فرنٹ اینڈ کو جی سی سی سورس ٹری میں شامل کیا گیا ہے۔ موجودہ منظر میں، forntend کو بطور تجرباتی نشان زد کیا گیا ہے اور بطور ڈیفالٹ غیر فعال کر دیا گیا ہے۔ فرنٹ اینڈ تیار ہونے کے بعد (اگلی ریلیز میں متوقع)، معیاری GCC ٹول کٹ کو LLVM ترقیات کا استعمال کرتے ہوئے بنائے گئے rustc کمپائلر کو انسٹال کرنے کی ضرورت کے بغیر Rust پروگراموں کو مرتب کرنے کے لیے استعمال کیا جا سکتا ہے۔
  • لنک-ان-اسٹیپ آپٹیمائزیشن (LTO) ایک جاب سرور (جاب سرور) کے لیے تعاون کا اضافہ کرتا ہے جو کہ GNU میک پروجیکٹ کے ذریعے ایک سے زیادہ تھریڈز میں متوازی تعمیراتی عمل کو بہتر بنانے کے لیے برقرار رکھتا ہے۔ جی سی سی میں، جاب سرور کا استعمال پورے پروگرام (WPA، پورے پروگرام کے تجزیہ) کے تناظر میں LTO آپٹیمائزیشن کے دوران کام کو متوازی کرنے کے لیے کیا جاتا ہے۔ نامزد پائپس (-jobserver-style=fifo) بطور ڈیفالٹ کام سرور کے ساتھ بات چیت کے لیے استعمال ہوتے ہیں۔
  • جامد تجزیہ کار (-fanalyzer) 20 نئے تشخیصی چیک پیش کرتا ہے، بشمول "-Wanalyzer-out-of-bounds"، "-Wanalyzer-Allocation-size"، "-Wanalyzer-deref-before-check"، "-Wanalyzer- infinite -دوبارہ" -Wanalyzer-jump-through-null"، "-Wanalyzer-va-list-leak"۔
  • JSON کی بنیاد پر SARIF فارمیٹ میں تشخیص کو آؤٹ پٹ کرنے کی صلاحیت کو لاگو کیا گیا ہے۔ نئے فارمیٹ کو جامد تجزیہ کے نتائج (GCC -fanalyzer) حاصل کرنے کے ساتھ ساتھ انتباہات اور غلطیوں کے بارے میں معلومات حاصل کرنے کے لیے استعمال کیا جا سکتا ہے۔ فعال کرنا "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" کے آپشن کے ساتھ کیا جاتا ہے، جہاں "json" کے ساتھ اختیارات JSON فارمیٹ کے GCC- مخصوص قسم میں آؤٹ پٹ ہوتے ہیں۔ .
  • C23 C معیار میں بیان کردہ کچھ خصوصیات کو لاگو کیا، جیسے null pointers کی وضاحت کے لیے nullptr constant، دلائل کی متغیر تعداد (variadic) کے ساتھ فہرستوں کو استعمال کرنا آسان بناتا ہے، enums کی صلاحیتوں کو بڑھاتا ہے، noreturn انتساب، کے استعمال کی اجازت دیتا ہے۔ constexpr اور auto جب آبجیکٹ کی وضاحت کرتے ہیں، typeof اور typeof_unqual، نئے کلیدی الفاظ alignas، alignof، bool، false، static_asssert، thread_local اور true، شروع کرنے پر خالی قوسین کی اجازت دیتے ہیں۔
  • C++23 معیار میں بیان کردہ کچھ خصوصیات کو لاگو کیا، جیسے مرکب اظہار کے آخر میں نشان لگانے کی اہلیت، char8_t قسم کے ساتھ مطابقت، # وارننگ پری پروسیسر ہدایت، جس کی حد بندی (\u{}, \o{} , \x{})، اور نام دیا گیا ('\N{لاطینی کیپیٹل لیٹر A}') فرار کے سلسلے، جامد آپریٹر()، جامد آپریٹر[]، اظہار کے اندر مساوات آپریٹر، constexpr کے استعمال پر کچھ پابندیوں کے استثناء، سپورٹ سورس ٹیکسٹس میں UTF-8 کے لیے۔
  • libstdc++ نے C++20 اور C++23 معیارات کے لیے تجرباتی تعاون کو بہتر بنایا ہے، جیسے ہیڈر فائل سپورٹ شامل کرنا اور std::format، توسیعی ہیڈر فائل کی صلاحیتیں۔ ، اضافی فلوٹنگ پوائنٹ کی قسمیں شامل کی گئیں، ہیڈر فائلوں کو لاگو کیا گیا۔ اور .
  • دستاویز میں نئے فنکشن انتسابات کو شامل کیا گیا ہے کہ فائل ڈسکرپٹر کو انٹیجر متغیر میں پاس کیا گیا ہے: "__attribute__((fd_arg(N)))"، "__attribute__((fd_arg_read(N)))"، اور "__attribute__((fd_arg_write(N)) ))"۔ فائل ڈسکرپٹرز کے ساتھ غلط کام کا پتہ لگانے کے لیے مخصوص اوصاف کو جامد تجزیہ کار (-fanalyzer) میں استعمال کیا جا سکتا ہے۔
  • ایک نیا انتساب "__attribute__((ssume(EXPR)))" شامل کیا گیا ہے، جس سے آپ کمپائلر کو بتا سکتے ہیں کہ ایکسپریشن سچ ہے اور کمپائلر اس حقیقت کو ایکسپریشن کا اندازہ کیے بغیر استعمال کرسکتا ہے۔
  • ڈھانچے میں لچکدار صف کے عنصر پر کارروائی کرتے وقت طرز عمل کو منتخب کرنے کے لیے "-fstrict-flex-arrays=[level]" جھنڈا شامل کیا گیا (لچکدار صف کے اراکین، ساخت کے آخر میں غیر معینہ سائز کی ایک صف، مثال کے طور پر، "int b[] ")۔
  • انتباہ جاری کرنے کے لیے "-Wenum-int-mismatch" جھنڈا شامل کیا گیا اگر کسی شمار شدہ قسم اور عددی قسم کے درمیان کوئی مماثلت نہیں ہے۔
  • فورٹران فرنٹ اینڈ کو حتمی شکل دینے کے لیے مکمل حمایت حاصل ہے۔
  • گو لینگویج کے فرنٹ اینڈ پر جنرک فنکشنز اور ٹائپس (جنرک) کے لیے سپورٹ شامل کر دی گئی ہے، اور گو 1.18 لینگویج کے پیکجز کے ساتھ مطابقت کو یقینی بنایا گیا ہے۔
  • AArch64 بیک اینڈ CPU Ampere-1A (ampere1a)، Arm Cortex-A715 (cortex-a715)، Arm Cortex-X1C (cortex-x1c)، Arm Cortex-X3 (cortex-x3)، اور Arm Neoverse V2 (neoverse -v2) کو سپورٹ کرتا ہے۔ . "armv9.1-a"، "armv9.2-a"، اور "armv9.3-a" دلائل کے لیے سپورٹ کو "-march=" آپشن میں شامل کر دیا گیا ہے۔ FEAT_LRCPC، FEAT_CSSC اور FEAT_LSE2 پروسیسر ایکسٹینشنز کے لیے شامل کردہ تعاون۔
  • STAR-MC1 (star-mc1)، Arm Cortex-X1C (cortex-x1c)، اور Arm Cortex-M85 (cortex-m85) CPUs کے لیے سپورٹ کو ARM آرکیٹیکچر بیک اینڈ میں شامل کیا گیا ہے۔
  • Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, and AMD Zen 86 (znver4) پروسیسرز کے لیے سپورٹ کو x4 بیک اینڈ میں شامل کیا گیا ہے۔ AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT، اور AMX-COMPLEX انسٹرکشن سیٹ آرکیٹیکچر ایکسٹینشنز کو انٹیل پروسیسر میں تجویز کیا گیا ہے۔ SSE2 والے سسٹمز پر C اور C++ کے لیے، __bf16 قسم فراہم کی گئی ہے۔
  • AMD Radeon GPUs (GCN) کے لیے کوڈ جنریشن بیک اینڈ OpenMP/OpenACC کارکردگی کو بہتر بنانے کے لیے AMD Instinct MI200 ایکسلریٹر استعمال کرنے کی صلاحیت کو نافذ کرتا ہے۔ SIMD ہدایات کا استعمال کرتے ہوئے بہتر ویکٹرائزیشن۔
  • LoongArch پلیٹ فارم کے لیے نمایاں طور پر توسیع شدہ بیک اینڈ کی صلاحیتیں۔
  • RISC-V پسدید میں CPU T-Head کے XuanTie C906 (thead-c906) کے لیے تعاون شامل کیا گیا۔ RISC-V ویکٹر ایکسٹینشن Intrinsic 0.11 تفصیلات میں بیان کردہ ویکٹر ہینڈلرز کے لیے نافذ کردہ تعاون۔ 30 RISC-V تصریحات کے لیے معاونت شامل کی گئی۔
  • "-shared" آپشن کے ساتھ مشترکہ آبجیکٹ تیار کرتے وقت، اگر "-Ofast"، "-ffast-math" یا "-funsafe-math-optimizations" آپٹیمائزیشنز فعال ہیں تو فلوٹنگ پوائنٹ ماحول شامل کرنے کے بعد سٹارٹ اپ کوڈ کو مزید شامل نہیں کیا جائے گا۔ .
  • DWARF ڈیبگنگ فارمیٹ کے لیے سپورٹ تقریباً تمام کنفیگریشنز میں نافذ ہے۔
  • Zstandard الگورتھم کا استعمال کرتے ہوئے ڈیبگ معلومات کو کمپریس کرنے کے لیے "-gz=zstd" آپشن شامل کیا گیا۔ فرسودہ ڈیبگ انفارمیشن کمپریشن موڈ "-gz=zlib-gnu" کے لیے سپورٹ کو ہٹا دیا گیا۔
  • اوپن ایم پی 5.2 (اوپن ملٹی پروسیسنگ) کے لیے ابتدائی سپورٹ شامل کر دی گئی ہے اور اوپن ایم پی 5.0 اور 5.1 معیارات کا نفاذ جاری ہے، ملٹی کور اور ہائبرڈ (CPU + GPU/DSP) سسٹمز پر متوازی پروگرامنگ کے طریقوں کو لاگو کرنے کے لیے APIs اور طریقوں کی وضاحت مشترکہ میموری اور ویکٹرائزیشن یونٹس (SIMD)۔
  • لیگیسی STABS ڈیبگ انفارمیشن سٹوریج فارمیٹ کے لیے فرسودہ سپورٹ (-gstabs اور -gxcoff آپشنز کے ساتھ فعال)، جو 1980 کی دہائی میں بنائی گئی اور dbx ڈیبگر میں استعمال ہوئی۔
  • سولاریس 11.3 کے لیے فرسودہ سپورٹ (اس پلیٹ فارم کو سپورٹ کرنے کے لیے کوڈ کو مستقبل کی ریلیز میں ہٹا دیا جائے گا)۔

ماخذ: opennet.ru

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