מהדרים מסדרת GCC 10 מגיעים לשדרוג משמעותי

GCC (GNU Compiler Collection) 10.1, מהדורה מרכזית של הפלטפורמה, פורסם ב- 7 במאי 2020, עם נקודות עיקריות הכוללות יכולות C ++ 20 ותמיכה בשפת C2X. C2X היא הגרסה הגדולה הבאה של שפת C, שתגיע בשנת 2022. 

הערות שחרור ל- GCC 10 מראות כי הופעלו מספר רב של תכונות C ++ 20 כולל מתן הרכבה מוטבעת בפונקציות constexpr והרחבת כריכות מובנות. כמו כן עבור C ++ 20, GCC 10 מאפשר המרות למערכים של איגוד לא ידוע, מאפשר אתחול ברירת מחדל טריוויאלי בהקשרים של constexpr, מוסיף את constinitמילת המפתח ומונע את מילת  volatile המפתח.

עבור C2X, התיקון הקרוב של תקן ISO C, מספר תכונות נתמכות בתחביר  -std=c2xו -std+gnu2x. בין אלה strftimeבדיקת פורמט תומכים %OBו %Obפורמטים קבוע תווי UTF-8 באמצעות U8' 'התחביר.

GCC, שקיים יותר מ- 33 שנה, כולל ממשקי קצה וספריות עבור C, C ++, Fortran, Ada, Go ו- D. עלון פורסם על העברת GCC 10. יכולות חדשות נוספות ב- GCC 10.1 כוללות

  • נוספו פונקציות מובנות, כולל has_builtinמפעיל מעבד מקדים שיכול לשמש לשאילתת תמיכה בפונקציות מובנות המסופקות על ידי GCC ומהדרים אחרים התומכים בו. 
  • נוספו אפשרויות פיקוד. אלה כוללים  -fallocation-dce, כדי להסיר זוגות מיותרים של newו deleteמפעיל, ו -fanalyzer, כדי לאפשר מסירת ניתוח סטטי חדשה ואזהרות קשור. יש לראות באופציה האחרונה בשלב הניסוי.
  • בוצעו שיפורי אופטימיזציה בין-מקצועיים. אלה כוללים יישום מחדש של החלפות הסקלר הבין-פרוצדוראליות של אגרגטים (IPA-SRA) שעברו יישום מחדש לעבודה בזמן הקישור. IPA-SRA יכול כעת גם להסיר מחשוב ולהחזיר ערכי החזר שאינם בשימוש.
  • שיפורים באופטימיזציה של זמן קישור כוללים בינארי חדש ito-dump. התוכנית יכולה לזרוק מידע שונה על byteקובץ אובייקט LTO .
  • בוצעו שיפורי אופטימיזציה מונעי פרופיל, כולל שיפור תחזוקת הפרופיל במהלך הידור ומחיצה חמה / קרה.
  • עבור משפחת C, accessהפונקציה typeוהתכונה נוספו כדי לתאר כיצד פונקציה ניגשת לאובייקטים המועברים אליה באמצעות מצביע או הפניה, וכדי לשייך ארגומנטים כאלה לארגומנטים שלמים המסמנים את גודל האובייקט. התכונה משמשת כדי לאפשר זיהוי של גישה לא חוקית על ידי פונקציות המוגדרות על ידי המשתמש. יש גם אזהרות ושיפורים חדשים לאזהרות הקיימות. אזהרה אחת,,, -Wzero-length-boundsמזהירה מפני גישה לאלמנטים של מערכים באורך אפס העלולים לחפוף חברים אחרים של אותו אובייקט.
  • חוסר תאימות של ABI בין C ++ 14 ו- C ++ 17 תוקן. בחלק מהיעדים, מחלקה עם תת-נושא בגודל אפס תועבר באופן שגוי כאשר היא נערכה כ- C ++ 17 או C ++ 20.