GCC 9.1

เมื่อวันที่ 3 พฤษภาคม GCC เวอร์ชันที่เก้าเปิดตัวต่อสาธารณะครั้งแรกเกิดขึ้น: GCC 9.1
มันมีการปรับปรุงและเพิ่มเติมที่สำคัญมากมายเมื่อเทียบกับที่แปด
รุ่น

การเปลี่ยนแปลงทั่วไป

ตัวเลือก
  • คำสั่งที่ยอมรับขนาดตอนนี้รองรับค่า 64 บิตและส่วนต่อท้ายเพื่อระบุขนาด
  • เพิ่มตัวเลือก -flive-แพทช์เพื่อควบคุมการปรับให้เหมาะสมที่อาจเป็นอันตรายต่อไดนามิก การแทนที่โค้ด
  • เพิ่มตัวเลือก --completion เพื่อรองรับการเติมข้อความอัตโนมัติในเชลล์คำสั่ง
  • ขณะนี้การวินิจฉัยคอมไพเลอร์รวมหมายเลขบรรทัด (-fno-diagnostics-show-line-number) และ
    ข้อมูลประเภท (fno-diagnostics-show-labels);
  • เพิ่มตัวเลือก -fdiagnostics-format=json เพื่อส่งออกการวินิจฉัยในรูปแบบ JSON
  • ตัวเลือกสำหรับการระบุการจัดตำแหน่ง (-falign-ฟังก์ชั่นเช่น) ขณะนี้สามารถยอมรับตัวเลือกการจัดตำแหน่งสองสามตัวเลือกได้แล้ว
  • เพิ่มตัวเลือกสำหรับการกรองรายการไฟล์ (-fprofile-กรองไฟล์, -fprofile-ไม่รวมไฟล์) ซึ่งควบคุมโดยผู้สร้างโปรไฟล์
  • ตอนนี้ AddressSanitizer ใช้การจัดตำแหน่งที่กะทัดรัดมากขึ้นเพื่อตรวจจับการเข้าถึงตัวแปรบนสแต็กที่ไม่ถูกต้อง
  • การปรับปรุงผลผลิตมากมาย -fopt-ข้อมูล;
  • เพิ่มตัวเลือก -fsave-optimization-record เพื่อบันทึกรายงานการเพิ่มประสิทธิภาพลงในไฟล์
  • เพิ่มตัวเลือก -fipa-stack-การจัดตำแหน่ง и -fipa-อ้างอิงที่อยู่ได้.
คุณสมบัติในตัวใหม่
คุณลักษณะใหม่
อื่น ๆ

การปรับปรุงการสร้างโค้ดจำนวนมากที่เกี่ยวข้องกับ:

  • การสร้างโครงสร้างสวิตช์
  • การเพิ่มประสิทธิภาพระหว่างขั้นตอน
  • การเพิ่มประสิทธิภาพตามข้อมูลโปรไฟล์
  • การเพิ่มประสิทธิภาพในขั้นตอนการประกอบ (LTO)

ขณะนี้รูปแบบภายในของ gcov คือ JSON และตัวเลือกใหม่ --ใช้ความร้อนสี เกี่ยวข้องกับการระบายสีบรรทัดของโค้ดตามความถี่ในการใช้งาน

ภาษา

คุณภาพและความสมบูรณ์ของการนำไปปฏิบัติ OpenACC ภาษา C, C++ และ Fortran ได้รับการปรับปรุงอย่างต่อเนื่อง

ภาษาที่เหมือนซี
  • มีการรองรับ OpenMP 5.0 บางส่วนแล้ว
  • เพิ่มคุณสมบัติแล้ว __builtin_convertvector;
  • เพิ่มคำเตือน -Waddress ของสมาชิกที่อัดแน่น;
  • การปรับปรุงคำเตือนที่มีอยู่จำนวนหนึ่ง
  • ข้อความแสดงข้อผิดพลาดเมื่อส่งผ่านจำนวนอาร์กิวเมนต์ที่ไม่ถูกต้องไปยังแมโครตอนนี้มีการประกาศของแมโครด้วย
  • การปรับปรุงข้อเสนอแนะการแก้ไขการพิมพ์ผิด
C
  • สนับสนุน _Static_assert ด้วยหนึ่งอาร์กิวเมนต์สำหรับ -std=c2x (มาตรฐาน C ในอนาคต)
  • คำเตือนใหม่ -Wabsolute ค่าซึ่งจับประเภทอาร์กิวเมนต์ที่ไม่ถูกต้องสำหรับฟังก์ชันเช่น abs()
C + +
  • คำเตือนใหม่: -Wdeprecated-คัดลอก,
    -Winit-รายการ-อายุการใช้งาน,
    - การย้ายที่ไม่จำเป็น,
    -Wpessimizing-ย้าย,
    -Wclass-การแปลง;
  • งานกำลังดำเนินการเพื่อใช้คุณสมบัติใหม่จากมาตรฐานในอนาคต ค++2เอ;
  • ขณะนี้ส่วนหน้าจัดเก็บข้อมูลที่แม่นยำมากขึ้นเกี่ยวกับองค์ประกอบซอร์สโค้ดจำนวนหนึ่ง ซึ่งช่วยให้คุณสามารถแสดงข้อมูลโดยละเอียดมากขึ้นในการวินิจฉัย
  • ปรับปรุงการวินิจฉัยสำหรับฟังก์ชันโอเวอร์โหลด ตัวดำเนินการไบนารี การเรียกใช้ฟังก์ชัน และสตริงรูปแบบ
  • เพิ่มการแก้ไขอัตโนมัติที่รองรับโดยสภาพแวดล้อมการพัฒนาบางอย่างสำหรับข้อผิดพลาดยอดนิยมจำนวนหนึ่ง (วงเล็บหายไป เนมสเปซ พิมพ์ผิด ฯลฯ)
libstdc ++
  • การใช้งาน C++17 ไม่ใช่การทดลองอีกต่อไป
  • เพิ่มอัลกอริธึมแบบขนาน , , ก ไม่ต้องการ -lstdc++fs อีกต่อไป
  • ปรับปรุงการรองรับการทดลองสำหรับ C++2a ( , , std::bind_front ฯลฯ );
  • รองรับการเปิดสตรีมไฟล์บน Windows ที่มีเส้นทางที่มีอักขระที่ไม่ใช่อักขระ
  • การสนับสนุนเบื้องต้น บนวินโดวส์;
  • การสนับสนุนเบื้องต้นสำหรับ Networking TS
D

ภาษา D เวอร์ชัน 2.076 รวมอยู่ใน GCC

ฟอร์แทรน
  • รองรับ I/O แบบอะซิงโครนัสอย่างสมบูรณ์
  • ใช้อาร์กิวเมนต์ BACK สำหรับ MINLOC และ MAXLOC;
  • ใช้ฟังก์ชัน FINDLOC และ IS_CONTIGOUS
  • มีการใช้ไวยากรณ์สำหรับการเข้าถึงส่วนประกอบของจำนวนเชิงซ้อน: c%re และ c%im;
  • ใช้ไวยากรณ์ str%len และ a%kind;
  • ใช้ C descriptor และส่วนหัว ISO_Fortran_binding.h
  • ข้อกำหนดที่ผ่อนคลายสำหรับผลลัพธ์ของฟังก์ชัน MAX และ MIN เมื่อหนึ่งในอาร์กิวเมนต์คือ NaN
  • เพิ่มตัวเลือก -fdec-รวม;
  • เพิ่มคำสั่งแล้ว สร้างขึ้น.
libgccjit

อื่น ๆ

การเปลี่ยนแปลงเฉพาะสถาปัตยกรรมและระบบปฏิบัติการหลายอย่าง

ที่มา: linux.org.ru

เพิ่มความคิดเห็น