GCC 11.1 ได้รับการเผยแพร่แล้วซึ่งเป็นข่าวและการเปลี่ยนแปลงที่สำคัญที่สุด

หลังจากหนึ่งปีของการพัฒนา GCC 11.1 ชุดคอมไพเลอร์เวอร์ชันใหม่เปิดตัวซึ่งเป็นรุ่นสำคัญครั้งแรกในสาขา GCC 11.x ใหม่ ภายใต้รูปแบบการกำหนดหมายเลขเวอร์ชันใหม่เวอร์ชัน 11.0 ถูกใช้ในระหว่างการพัฒนาและไม่นานก่อนการเปิดตัว GCC 11.1 สาขาของ GCC 12.0 ได้ถูกแยกออกมาเพื่อสร้าง GCC 12.1 เวอร์ชันหลักถัดไป

GCC 11.1 โดดเด่นในเรื่องการเปลี่ยนไปใช้รูปแบบไฟล์ดีบักเริ่มต้น DWARF 5, การรวมค่าเริ่มต้นของมาตรฐาน C ++ 17 ("-std = gnu ++ 17"), การปรับปรุงที่สำคัญในความเข้ากันได้กับมาตรฐาน C ++ 20, การสนับสนุนการทดลองสำหรับ C ++ 23, การปรับปรุงที่เกี่ยวข้องกับมาตรฐานในอนาคตของ ภาษาซี (C2x) การเพิ่มประสิทธิภาพใหม่

GCC 11.1 คุณสมบัติใหม่หลัก

โหมดเริ่มต้นสำหรับภาษา C ++ เปลี่ยนไปใช้มาตรฐาน C ++ 17แทนที่จะเป็น C ++ 14 ที่เสนอไว้ก่อนหน้านี้ เป็นไปได้ที่จะเลือกปิดใช้งานลักษณะการทำงาน C ++ 17 ใหม่เมื่อประมวลผลเทมเพลตที่ใช้เทมเพลตอื่นเป็นพารามิเตอร์ (-fno-new-ttp-matching)

เพิ่มการรองรับสำหรับการเร่งฮาร์ดแวร์ ของเครื่องมือ AddressSanitizer ซึ่งช่วยให้คุณสามารถระบุข้อเท็จจริงของการเข้าถึงพื้นที่หน่วยความจำที่ว่างเกินขีด จำกัด ของบัฟเฟอร์ที่จัดสรรไว้และข้อผิดพลาดอื่น ๆ บางประเภทเมื่อทำงานกับหน่วยความจำ ปัจจุบันการเร่งความเร็วของฮาร์ดแวร์มีให้ใช้งานสำหรับสถาปัตยกรรม AArch64 เท่านั้นและมุ่งเน้นไปที่การใช้งานเมื่อคอมไพล์เคอร์เนล Linux

ความแปลกใหม่อีกอย่างที่นำเสนอคือ การเพิ่มประสิทธิภาพและการปรับปรุงระหว่างโพรซีเดอร์เนื่องจากมีการเพิ่ม IPA-modref pass ใหม่ (-fipa-modref) เพื่อติดตามผลข้างเคียงในการเรียกใช้ฟังก์ชันและปรับปรุงความแม่นยำในการวิเคราะห์ นอกจากนี้ยังมี ปรับปรุงการนำ IPA-ICF pass มาใช้ (-fipa-icf) ซึ่งช่วยลดการใช้หน่วยความจำคอมไพล์และเพิ่มจำนวนฟังก์ชันรวมที่รวมบล็อกโค้ดที่เหมือนกัน

El เครื่องมือเพิ่มประสิทธิภาพที่ขับเคลื่อนด้วยโปรไฟล์ (ป.ป.ช.) ปรับปรุงโหมด "-fprofile-values" โดยการติดตามพารามิเตอร์เพิ่มเติมสำหรับการโทรทางอ้อม

ด้วย การใช้งานมาตรฐาน OpenMP 5.0 อย่างต่อเนื่องจะเน้น (Open Multi-Processing) ซึ่ง เพิ่มการสนับสนุนเบื้องต้นสำหรับคำสั่งการมอบหมายงานและความสามารถในการใช้ลูปที่ไม่สม่ำเสมอ ใน OpenMP builds ขณะนี้รองรับตัวแปรสภาพแวดล้อม OMP_TARGET_OFFLOAD แล้ว

การปรับใช้ข้อกำหนดการเขียนโปรแกรมแบบขนาน OpenACC 2.6 ที่จัดเตรียมไว้สำหรับภาษา C, C ++ และ Fortran ซึ่งกำหนดเครื่องมือสำหรับการถ่ายโอนการดำเนินการไปยัง GPU และโปรเซสเซอร์พิเศษเช่น NVIDIA PTX ได้รับการปรับปรุง

สำหรับภาษาของตระกูล C มีการใช้แอตทริบิวต์ใหม่ "no_stack_protector" ออกแบบมาเพื่อทำเครื่องหมายฟังก์ชันที่ไม่ควรเปิดใช้งานการป้องกันสแต็ก ("-fstack-protector") แอตทริบิวต์ "malloc" ได้รับการขยายโดยรองรับการระบุคู่การโทรเพื่อจัดสรรและเพิ่มหน่วยความจำซึ่งใช้ในตัวแยกวิเคราะห์แบบคงที่เพื่อตรวจจับข้อผิดพลาดของหน่วยความจำโดยทั่วไป (การรั่วไหลของหน่วยความจำการใช้งานหลังจากว่างการเรียกใช้ฟังก์ชันฟรีสองครั้งเป็นต้น) และคำเตือนของคอมไพเลอร์ "-Wmismatched-dealloc", "-Wmismatched- new-delete" และ " -Wfree-nonheap-object "รายงานการดำเนินการ deallocation และ deallocation ที่ไม่สอดคล้องกัน

เมื่อสร้างข้อมูลการดีบักรูปแบบ DWARF 5 จะถูกใช้โดยค่าเริ่มต้นซึ่งเมื่อเทียบกับเวอร์ชันก่อนหน้านี้ทำให้สามารถสร้างข้อมูลการดีบักที่มีขนาดกะทัดรัดขึ้น 25% การสนับสนุน DWARF 5 เต็มรูปแบบต้องใช้ binutils อย่างน้อยเวอร์ชัน 2.35.2

ความสามารถของโหมด ThreadSanitizer ที่ปรับปรุงแล้ว (-fsanitize = thread) เนื่องจากใช่e เพิ่มการรองรับสำหรับ runtimes และสภาพแวดล้อมทางเลือก ตลอดจนการสนับสนุนเครื่องมือดีบัก Kernel Concurrency Sanitizer (KCSAN) เพื่อตรวจจับสภาวะการแข่งขันภายในเคอร์เนล Linux แบบไดนามิก เพิ่มตัวเลือกใหม่ "–param tsan-different-volatile" และ "–param tsan-instrument-func-entry-exit"

vectorizer จัดเตรียมการบัญชีของเนื้อหาทั้งหมดของฟังก์ชันและการประมวลผลเพิ่มเติมของความสามารถที่เกี่ยวข้องกับทางแยกและการอ้างอิงไปยังบล็อกก่อนหน้าในผังงานควบคุม (CFG)

เครื่องมือเพิ่มประสิทธิภาพมีความสามารถในการแปลงชุดของการดำเนินการตามเงื่อนไขเป็นนิพจน์การเปลี่ยนแปลงซึ่งจะเปรียบเทียบตัวแปรเดียวกัน ในอนาคตนิพจน์การเปลี่ยนแปลงสามารถเข้ารหัสได้โดยใช้คำแนะนำในการทดสอบบิต (เพื่อควบคุมการแปลงนี้ได้เพิ่มตัวเลือก "-fbit-testing")

สำหรับ C ++ ส่วนหนึ่งของการเปลี่ยนแปลงและนวัตกรรมที่เสนอในมาตรฐาน C ++ 20 ได้ถูกนำไปใช้รวมถึงฟังก์ชันเสมือน "consteval virtual" ตัวทำลายหลอกสำหรับการยุติวงจรชีวิตของวัตถุโดยใช้คลาส enum และการคำนวณ ขนาดของอาร์เรย์ในนิพจน์ "ใหม่"

หากคุณต้องการทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้ 


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

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

*

*

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