LLVM 16.0 והוא שוחרר ואלה החדשות שלו

לוגו LLVM

LLVM היא מסגרת לפיתוח מהדרים כמו גם עזרה בבניית שפות תכנות חדשות ושיפור שפות קיימות.

לאחר קצת יותר משישה חודשים של פיתוח, ההשקה של הגרסה החדשה של הפרויקט LLVM 16.0, גרסה שבה מיושמים מספר רב של שינויים ושיפורים.

למי שלא מכיר את LLVM, אתה צריך לדעת שזה הוא מהדר תואם GCC (מהדרים, אופטימיזרים ומחוללי קוד) שמרכיב תוכניות לקוד ביניים של הוראה וירטואלית דמוית RISC (מכונה וירטואלית ברמה נמוכה עם מערכת אופטימיזציה רב-שכבתית).

ניתן להמיר את הפסאודוקוד שנוצר על ידי מהדר JIT להוראות מכונה בדיוק בזמן ביצוע התוכנית.

התכונות החדשות העיקריות של LLVM 16.0

בגרסה החדשה הזו שמוצגת, נוכל למצוא מספר שיפורים חשובים ב-clang 16.0, מתוכם בולט תקן ברירת המחדל C++/ObjC++, אשר מוגדר ל-gnu++17 (לשעבר gnu++14), אשר מרמז על תמיכה בתכונות C++17 עם הרחבות GNU כברירת מחדל. השימוש באלמנטים המוגדרים בתקן C++17 מותר בקוד LLVM.

עוד מהשינויים הבולטים הוא שהוא נוסף תמיכה במעבדי Cortex-A715, Cortex-X3 ו-Neoverse הרחבות V2, Armv8.3 ותכונות ריבוי גרסאות ל-Aarch64 backend.
La תאימות לפלטפורמה Armv2, Armv2A, Armv3 ו-Armv3M הופסקו ב-backend של ארכיטקטורת ARM, שעבורו לא הובטח יצירת קוד נכונה. הוסיפו את היכולת ליצור קוד להוראות לעבודה עם מספרים מרוכבים והוסיפו תמיכה בארכיטקטורות של ערכות הוראות (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT ל-X86 backend.

חוץ מזה, הדרישות לבניית LLVM הוגדלו, כמו כן, ה-build אמור כעת להיות תואם לתקן C++17, כלומר ה-build דורש לפחות GCC 7.1, Clang 5.0, Apple Clang 10.0 או Visual Studio 2019 16.7.

מצד שני, זה גם מדגיש קצה אחורי משופר עבור ארכיטקטורות MIPS, PowerPC ו-RISC-V, כמו גם תמיכה באיתור באגים של קובצי הפעלה של 64 סיביות עבור ארכיטקטורת LoongArch ל-LLDB באגים וטיפול משופר בסמלי ניפוי באגים COFF.

משאר השינויים הבולטים:

  • בספריית Libc++, העבודה העיקרית התמקדה ביישום תמיכה בתכונות חדשות של תקני C++20 ו-C++23.
  • זמן הקישור הצטמצם באופן משמעותי במקשר ה-LDD על ידי הקבילה לסריקת העברת הכתובת ופעולות אתחול המקטעים. נוספה תמיכה לדחיסת מקטעים באמצעות אלגוריתם ZSTD.
  • גם הפונקציות המתקדמות המיושמות עם תקן C++20 מודגשות.
  • לכידת קישורים מובנים בפונקציות למבדה.
  • אופרטור השוויון בתוך ביטויים.
  • היכולת לא לציין את מילת המפתח שם סוג בהקשרים מסוימים,
  • אישור אתחול נוסף בין סוגריים ("Aggr(val1, val2)").
  • פונקציות מיושמות המוגדרות בתקן העתידי C++2b.
  • תמיכה מסופקת עם סוג char8_t,
  • הרחיב את טווח התווים המותר לשימוש ב-"\N{…}",
  • הוספה את היכולת להשתמש במשתנים המוצהרים כ-"static constexpr" בפונקציות המוצהרות כ-constexpr.
  • פונקציות מיושמות המוגדרות בתקן העתידי C2x C:
  • נוספה תמיכה בטעינת קובצי תצורה מרובים (קבצי ברירת המחדל נטענים תחילה, ולאחר מכן אלה שצוינו באמצעות הדגל "–config=", אשר כעת ניתן לציין מספר פעמים).
  • שונה סדר הטעינה של קובצי תצורת ברירת המחדל: clang מנסה לטעון תחילה את הקובץ - .cfg ואם הוא לא מוצא אותו, הוא מנסה לטעון שני קבצים .cfg ו .cfg.
  • נוסף דגל בנייה חדש "-fcoro-aligned-allocation" עבור הפצה מיושרת מסגרת שגרתית.
  • הוסיף את הדגל "-fmodule-output" כדי לאפשר את מודל הבנייה החד-פאזי של מודולי C++ סטנדרטיים.
  • נוסף מצב "-Rpass-analysis=stack-frame-layout" כדי לאבחן בעיות בפריסת מסגרת מחסנית.
  • הוספה תכונה חדשה __attribute__((target_version("cpu_features"))) והרחיבה את הפונקציונליות של התכונה __attribute__((target_clones("cpu_features1″,"cpu_features2",...))) כדי לבחור גרסאות ספציפיות של תכונות שסופקו על ידי ה-CPU AArch64 .
  • כלי אבחון משופרים:
  • נוספה אזהרה "-Wsingle-bit-bitfield-constant-conversion" כדי לתפוס חיתוך מרומז בעת הקצאת אחד ל-bitfield חתום בסיביות אחת.
  • אבחון מורחב למשתני constexpr לא מאותחלים.
  • נוספו אזהרות "-Wcast-function-type-strict" ו-"-Wincompatible-function-pointer-types-strict" כדי לתפוס בעיות פוטנציאליות בעת העברת סוגי פונקציות.

בסופו של דבר אם אתה מעוניין לדעת יותר על כך, אתה יכול לבדוק את הפרטים ב הקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.