אחרי חצי שנה של התפתחות הגרסה החדשה של LLVM 17.0 הוצגה, בו יושמו ב-Clang 17.0 שיפורים, שינויים, תיקוני באגים ומעל לכל היבטים חשובים שונים.
למי שלא מכיר את LLVM, אתה צריך לדעת שזה הוא מהדר תואם GCC (מהדרים, אופטימיזרים ומחוללי קוד) שמרכיב תוכניות לקוד ביניים של הוראה וירטואלית דמוית RISC (מכונה וירטואלית ברמה נמוכה עם מערכת אופטימיזציה רב-שכבתית).
ניתן להמיר את הפסאודוקוד שנוצר על ידי מהדר JIT להוראות מכונה בדיוק בזמן ביצוע התוכנית.
התכונות החדשות העיקריות של LLVM 17.0
בגרסה החדשה הזו של LLVM 17.0 המוצגת, ישנם היבטים רלוונטיים שונים שיש לקחת בחשבון, מהם, למשל, שיפורים לקצה האחורי של X86, ובכן הוא הוסיףo תמיכה בהרחבות ארכיטקטורת ערכת הוראות ISA SHA512, ISA SM3, ISA SM4 ו-ISA AVX-VNNI-INT16.
בנוסף לכך, זה גם מדגיש את שיפורים ב יכולות אחורי לארכיטקטורה RISC-V אשר התרחבו משמעותית, מאז הוספה תמיכה במעבד sifive-x280.
עוד מהשינויים שאנו יכולים למצוא הוא הטמעה תמיכה בהרחבות מעבד XTH*, כמו גם תאימות עם הרחבות LSX, LASX, LVZ ו-LBT ISA לקצה האחורי של ארכיטקטורת LoongArch.
קצה אחורי משופר עבור ארכיטקטורות AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, הרחבת יכולות הקישור של LLD והוספה פקודת "register info" חדשה ל-LLDB באגים כדי להציג את כל המידע הידוע על רשומה.
לגבי השיפורים ב-Clang 17.0, מודגש כי התכונות שהוגדרו בתקן C2x העתידי יושמו כמו מילות המפתח bool, static_assert, aligns, alignof ו-thread_local, גם היכולת לציין סוגריים ריקים «{}» עבור אתחול לאפס ערכים.
הקודo C מספקת את היכולת להעביר את הביטוי "גוטו". בתוך בלוקים "asm" דרך תגיות שנבחרו בעקיפין, נוספה תמיכה בתוסף C המאפשר שימוש בסוג במקום בביטוי כאופרנד הראשון ב-"_Generic", בנוסף לאפשר לביטויים קבועים בשפת C להשתמש במבנים, איגודים ומערכים המוצהרים עם התכונה "const".
לגבי השיפורים הקשורים לתקן C++20, מוזכר כי כעת בכל הפלטפורמות מלבד Windows, יש תמיכה מלאה עבור Coroutines, בנוסף, יושמו דרישות נוספות לפעולות השוואת ביטוי קבוע.
מודגש גם שעכשיוניתוח נכון של תבניות למבדה מובטח שצוין מיד אחרי פרמטרי התבנית ומכיל משתנה עם סוג תלוי בבלוק. שמר על השימוש בקו תחתון כפול במילולי משתמש ומנע את השימוש במילת המפתח "מפעיל" בהגדרות פונקציות עם מזהים שמורים בשם
כ שיפורים שיבוצעו הקשורים לתקן C++23 , מוזכר שהוא נמצא בשלב הסופי של אישור ISO, מאז שונה היקף סוג ההחזר הסופי בפונקציות למבדה להסתכל תחילה על הווים ולאחר מכן על הטקסט שמסביב.
של שינויים אחרים הבולטים:
- נוספה היכולת להגדיר מערכים רב מימדיים באמצעות
- בעת קומפילציה של יישומי C++ באמצעות מצב האופטימיזציה "-O0", יצירת הקוד לשיחות שופרה.
- נוספה תמיכה במשתנה הסביבה NO_COLOR כדי להשבית את צבע הפלט.
- כלי ניתוח סטטי ואבחון הורחבו משמעותית, לדוגמה, נוספו בדיקות גלישה של מספר שלם חתום, תיקון תבנית למבדה, ביטויי constexpr, השוואות מצביע null, שימוש במבנים לא מאותחלים וכו'.
- ספריית Libc++ ממשיכה ליישם תמיכה ביכולות של תקני C++20 ו-C++23, והחלה העבודה גם לספק תמיכה למפרט C++26.
- נוספה תמיכה בביטוי "דרוש cplusplus23" בתיאורים של חיבורים בין קבצי כותרת ומודולים.
לבסוף, אם אתה מעוניין להיות מסוגל לדעת יותר על זה, אתה יכול לעיין בפרטים ב הקישור הבא.