GCC 9.1

در 3 می، اولین انتشار عمومی نسخه نهم GCC انجام شد: GCC 9.1.
این شامل بسیاری از پیشرفت ها و اضافات قابل توجه در مقایسه با هشتم است
نسخه

تغییرات کلی

گزینه ها
  • دستوراتی که اندازه را می پذیرند اکنون از مقادیر و پسوندهای 64 بیتی برای تعیین اندازه پشتیبانی می کنند.
  • گزینه اضافه شد وصله زندهبرای کنترل بهینه سازی هایی که به طور بالقوه برای جایگزینی کد پویا مخرب هستند.
  • اضافه شدن گزینه --completion برای پشتیبانی از تکمیل خودکار در پوسته فرمان.
  • تشخیص کامپایلر اکنون شامل شماره خطوط (-fno-diagnostics-show-line-numbers) و
    نوع اطلاعات (fno-diagnostics-show-labels);
  • گزینه اضافه شد -fdiagnostics-format=json برای خروجی تشخیص در فرمت JSON.
  • گزینه هایی برای تعیین تراز (-عملکردهای falignبه عنوان مثال) اکنون می توانید چند گزینه تراز را بپذیرید.
  • گزینه های اضافه شده برای فیلتر کردن لیست فایل ها (-fprofile-filter-files, -fprofile-exclude-files) که توسط پروفیل ساز تنظیم می شوند.
  • AddressSanitizer اکنون از تراز فشرده تر برای گرفتن دسترسی های نامعتبر به متغیرهای پشته استفاده می کند.
  • بهبودهای خروجی متعدد -fopt-info;
  • گزینه اضافه شد -fsave-optimization-record برای ذخیره گزارش بهینه سازی در یک فایل؛
  • گزینه اضافه شد -fipa-stack-alignment и -fipa-reference-addressable.
ویژگی های جدید داخلی
ویژگی جدید
دیگر

بهبودهای تولید کد متعدد مربوط به:

  • تولید ساختارهای سوئیچ؛
  • بهینه سازی بین رویه ای؛
  • بهینه سازی بر اساس اطلاعات پروفایل
  • بهینه سازی در مرحله مونتاژ (LTO)؛

همچنین فرمت داخلی gcov اکنون JSON و گزینه جدید است --استفاده-گرمی-رنگ ها شامل رنگ آمیزی خطوط کد بر اساس تعداد دفعات استفاده از آنها است.

زبان

کیفیت و کامل بودن اجرا OpenACC زبان‌های C، C++، و Fortran به پیشرفت خود ادامه می‌دهند.

زبان های C مانند
  • پشتیبانی جزئی از OpenMP 5.0 اجرا شده است.
  • عملکرد اضافه شده است __تبدیل_بردار ساخته شده;
  • هشدار اضافه شد -Waddress-of-packed- Member;
  • بهبود تعدادی از هشدارهای موجود؛
  • متن خطا هنگام ارسال تعداد اشتباه آرگومان به یک ماکرو اکنون شامل اعلام خود ماکرو است.
  • بهبود در پیشنهادات تصحیح غلط املایی.
C
  • _Static_assert را با یک آرگومان برای -std=c2x (استاندارد C آینده) پشتیبانی کنید.
  • هشدار جدید -مقدار مطلق، که نوع آرگومان اشتباه را برای توابعی مانند abs() می گیرد.
++C
  • هشدارهای جدید: منسوخ شده-کپی,
    -Winit-list-lifetime,
    -حرکت زائد,
    -Wpesimizing-move,
    -Wclass-تبدیل;
  • کار برای پیاده سازی ویژگی های جدید از استاندارد آینده در حال انجام است C++2a;
  • صفحه اصلی اکنون اطلاعات دقیق تری در مورد تعدادی از عناصر کد منبع ذخیره می کند، که به شما امکان می دهد اطلاعات دقیق تری را در عیب یابی نمایش دهید.
  • تشخیص بهبود یافته برای توابع اضافه بار، عملگرهای باینری، فراخوانی تابع و رشته های قالب بندی.
  • اصلاحات خودکار اضافه شده توسط برخی از محیط های توسعه برای تعدادی از خطاهای رایج (فقدان پرانتز، فضای نام، اشتباهات تایپی و غیره) پشتیبانی می شود.
libstdc++
  • پیاده سازی C++17 دیگر آزمایشی نیست.
  • اضافه شدن الگوریتم های موازی، ، ، آ دیگر به -lstdc++fs نیاز ندارد.
  • پشتیبانی آزمایشی بهبود یافته برای C++2a ( ، , std::bind_front و غیره);
  • پشتیبانی از باز کردن جریان فایل در ویندوز که مسیرهای آن شامل کاراکترهای غیر char است.
  • پشتیبانی اولیه در ویندوز؛
  • پشتیبانی اولیه از Networking TS.
D

زبان D نسخه 2.076 در GCC گنجانده شده است.

فورتان
  • پشتیبانی کامل از I/O ناهمزمان؛
  • آرگومان BACK برای MINLOC و MAXLOC پیاده سازی شد.
  • توابع FINDLOC و IS_CONTIGOUS را اجرا کرد.
  • سینتکس برای دسترسی به اجزای اعداد مختلط پیاده سازی شده است: c%re و c%im;
  • نحو پیاده سازی شده str%len و a% kind;
  • توصیفگرهای C و هدر ISO_Fortran_binding.h پیاده سازی شده است.
  • زمانی که یکی از آرگومان ها NaN باشد، نیازهای آرام برای نتیجه توابع MAX و MIN وجود دارد.
  • گزینه اضافه شد -fdec-include;
  • بخشنامه اضافه شد ساخته شده.
libgccjit

دیگر

بسیاری از تغییرات خاص معماری و سیستم عامل.

منبع: linux.org.ru

اضافه کردن نظر