GCC 12.1 เปิดตัวแล้ว รู้ข่าวและครบรอบ 35 ปี

โลโก้ GNU GCC

การเปิดตัวของ เวอร์ชั่นใหม่ของคอมไพเลอร์ GCC (คอลเลกชันคอมไพเลอร์ GNU) 12.1 เปิดตัวแล้ว และเช่นเดียวกับ GCC รุ่นหลักๆ ทุกรุ่น รุ่นนี้จะมีการเพิ่ม การปรับปรุง การแก้ไขจุดบกพร่อง และคุณลักษณะใหม่ๆ มากมาย รวมทั้งเดือนนี้ (23 พฤษภาคม) โปรเจ็กต์จะเฉลิมฉลอง 35 ปีนับตั้งแต่มีการเปิดตัวครั้งแรก

GCC 12 เป็นคอมไพเลอร์ระบบสำหรับ Fedora 36 แล้ว และ GCC 12 จะพร้อมใช้งานบน Red Hat Enterprise Linux ในชุดเครื่องมือ Red Hat Developer (เวอร์ชัน 7) หรือ Red Hat GCC Toolset (เวอร์ชัน 8 และ 9)

นักพัฒนา GCC มีความภูมิใจที่จะประกาศเปิดตัว GCC รุ่นใหญ่อีก 12.1

ปีนี้เราฉลองครบรอบ 35 ปีของ GCC . รุ่นเบต้ารุ่นแรก
และเดือนนี้เราจะเฉลิมฉลอง 35 ปีนับตั้งแต่เปิดตัว GCC 1.0!

รุ่นนี้เลิกรองรับรูปแบบการดีบัก STABS และ
แนะนำการสนับสนุนสำหรับรูปแบบการดีบัก CTF [1] C และ C++
อินเทอร์เฟซยังคงก้าวหน้าด้วยการรองรับคุณสมบัติเพิ่มเติม
ในมาตรฐาน C2X และ C++23 ที่จะเกิดขึ้นและ C++ Standard Library
ปรับปรุงการรองรับส่วนทดลองของ C++20 และ C++23
ขณะนี้อินเทอร์เฟซของ Fortran สอดคล้องกับ TS 29113 อย่างสมบูรณ์สำหรับการทำงานร่วมกันกับ C

มีอะไรใหม่ใน GCC 12.1?

ในเวอร์ชันใหม่นี้ มีการดำเนินการข้อเสนอหลายรายการเช่นสำหรับภาษา C และ C++ เพิ่ม ฟังก์ชั่นในตัว __builtin_dynamic_object_size เพื่อกำหนดขนาดของวัตถุเข้ากันได้กับฟังก์ชั่นที่คล้ายกันของ Clang

เพิ่มแล้ว รองรับแอตทริบิวต์ "ไม่พร้อมใช้งาน" สำหรับภาษา C และ C++ (เช่น คุณสามารถทำเครื่องหมายฟังก์ชันที่จะส่งผลให้เกิดข้อผิดพลาดเมื่อใช้) รวมทั้งเพิ่มการสนับสนุนสำหรับคำสั่งประมวลผลล่วงหน้า "#elifdef" และ "#elifndef" สำหรับภาษา C และ C++

นอกจากนี้ยังตั้งข้อสังเกตว่า ตั้งค่าสถานะ "-Wbidi-chars" เพื่อเตือนหากใช้อักขระ UTF-8 ในทางที่ผิดการเปลี่ยนลำดับการแสดงข้อความแบบสองทิศทาง เช่นเดียวกับแฟล็ก "-Warray-compare" เพื่อออกคำเตือนเมื่อพยายามเปรียบเทียบตัวถูกดำเนินการสองตัวที่อ้างถึงอาร์เรย์

นอกจากนี้ iการนำมาตรฐาน OpenMP 5.0 และ 5.1 ไปใช้ (Open Multi-Processing) ซึ่งกำหนด API และเมธอดสำหรับการใช้วิธีการเขียนโปรแกรมแบบขนานบนระบบมัลติคอร์และไฮบริด (CPU + GPU / DSP) ที่มีหน่วยความจำที่ใช้ร่วมกันและหน่วยเวกเตอร์ (SIMD) ยังคงดำเนินต่อไป

นอกจากนี้ ปรับปรุงการใช้งานข้อกำหนดการเขียนโปรแกรมแบบคู่ขนาน OpenACC 2.6 กำหนดวิธีการออฟโหลดการทำงานบน GPU และโปรเซสเซอร์พิเศษ เช่น NVIDIA PTX และเพิ่มการรองรับคำสั่งขยาย Intel AVX512-FP16 และประเภท _Float16 ให้กับแบ็กเอนด์การสร้างโค้ด x86

ส่วนหน้าของ Fortran ให้การสนับสนุนอย่างเต็มที่สำหรับข้อกำหนด TS 29113 ซึ่งอธิบายความเป็นไปได้เพื่อให้แน่ใจว่ามีการพกพาระหว่างรหัส Fortran และ C

เลิกสนับสนุนรูปแบบการจัดเก็บข้อมูลการดีบัก "STABS" ที่สร้างขึ้นในปี 1980

เพิ่มการรองรับสำหรับส่วนขยาย __builtin_shufflevector(vec1, vec2, index1, index2, …) ที่เพิ่มก่อนหน้านี้ใน Clang ซึ่งให้การเรียกครั้งเดียวเพื่อดำเนินการสลับเวกเตอร์และสับเปลี่ยนทั่วไป

เมื่อใช้ระดับการปรับให้เหมาะสม "-O2" vectorization จะถูกเปิดใช้งานโดยค่าเริ่มต้น (โหมด -ftree-vectorize และ -fvect-cost-model=very-cheap ถูกเปิดใช้งาน) โมเดล "ราคาถูกมาก" อนุญาตให้แปลงเวกเตอร์ได้ก็ต่อเมื่อโค้ดเวกเตอร์สามารถแทนที่โค้ดสเกลาร์แบบเวกเตอร์ได้อย่างสมบูรณ์เท่านั้น

เพิ่มโหมด "-ftrivial-auto-var-init" เพื่อเปิดใช้งานการเริ่มต้นตัวแปรอย่างชัดเจนบนสแต็กเพื่อติดตามปัญหาและบล็อกช่องโหว่ที่เกี่ยวข้องกับการใช้ตัวแปรที่ยังไม่ได้กำหนดค่า

เพิ่ม การใช้งานฟังก์ชัน C ที่สร้างขึ้นในคอมไพเลอร์ (Intrinsics) สำหรับการโหลดอะตอมมิกและการจัดเก็บข้อมูลในหน่วยความจำตามการใช้คำสั่ง ARM แบบขยาย (ls64) เพิ่มการรองรับการเร่งความเร็วฟังก์ชัน memcpy, memmove และ memset โดยใช้ส่วนขยาย ARM mopoption

เพิ่มแล้ว โหมดการตรวจสอบใหม่ "-fsanitize=shadow-call-stack" ( ShadowCallStack ) ซึ่งปัจจุบันใช้ได้เฉพาะกับสถาปัตยกรรม AArch64 และทำงานเมื่อคอมไพล์โค้ดด้วยตัวเลือก "-fixed-r18" โหมดนี้ช่วยป้องกันการเขียนที่อยู่ผู้ส่งกลับของฟังก์ชันในกรณีที่บัฟเฟอร์ล้นสแต็ก สาระสำคัญของการป้องกันคือการบันทึกที่อยู่ผู้ส่งในสแต็ก "เงา" แยกต่างหากหลังจากโอนการควบคุมไปยังฟังก์ชันและดึงที่อยู่นี้ก่อนออกจากฟังก์ชัน

Fuente: https://gcc.gnu.org/pipermail


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา