LLVM 11.0 מגיע עם עדכון ל- Python 3, שיפורים עבור RISC-V ועוד

Llvm

אחרי חצי שנה של התפתחות הושקה המהדורה החדשה של פרויקט LLVM 11.0 בהן מוצגים מספר שיפורים, כגון העדכון ל- Python 3, תיקונים לתמיכה בהוראות ניסיוניות ב- RISC-V ושינויים רבים נוספים.

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

הוא נועד לייעל את זמן הקומפילציה, זמן הכריכה, זמן הביצוע בכל שפת התכנות שהמשתמש רוצה להגדיר. במקור יושם כדי לקמפל C ו- C ++, העיצוב האגנוסטי של שפת LLVM והצלחת הפרויקט הם הולידו מגוון רחב של שפות.

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

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

בגרסה החדשה הזו של LLVM 11.0 מערכת הבנייה הועברה לשימוש בפייתון 3ככזה השימוש בפייתון 3 אינו מאולץ, מכיוון שבמקרה שהוא אינו זמין, אפשרות ההחזרה מיושמת לשימוש בפייתון 2.

תְכוּנָה נוספה וריאציה וקטורית-abi-variant לייצוג ביניים (IR) לתיאור המיפוי בין פונקציות סקלריות וקטוריות לשיחות וקטורציה. שני סוגי וקטורים נפרדים, llvm :: FixedVectorType ו- llvm :: ScalableVectorType, מופקים מ- llvm :: VectorType.

התנהגות לא מוגדרת היא הסתעפות מבוססת undef ועוברת מערכים לא מוגדרים לפונקציות ספרייה סטנדרטיות.

ב- memset / memcpy / memmove, מותר להעביר מצביעים לא מוגדרים, אך אם הפרמטר עם הגודל שווה לאפס.

LLJIT מוסיף תמיכה לביצוע אתחולים סטטיים באמצעות השיטות LLJIT :: אתחול ו- LLJIT :: deinitialize.

הוסיף את יכולת להוסיף ספריות סטטיות ל- JITDylib באמצעות המחלקה StaticLibraryDefinitionGenerator. נוסף C API עבור ORCv2 (API ליצירת מהדרים של JIT).

מצד שיפור התמיכה בארכיטקטורות המעבדים השונות:

  • נוסף תמיכה במעבדי Cortex-A34, Cortex-A77, Cortex-A78 ו- Cortex-X1 בחלק האחורי של ארכיטקטורת AArch64. הרחבות ARMv8.2-BF16 (BFloat16) ו- ARMv8.6-A יושמו, כולל RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (מלכודות עדינות), ARMv8.6-AMU (פעילות עוקב אחר וירטואליזציה) ו- ARMv8.0-DGH (רמז לאיסוף נתונים).
  • הוסיפה תמיכה במעבדי Cortex-M55, Cortex-A77, Cortex-A78 ו- Cortex-X1 בתוכנת ה- ARM. הטמיע את הרחבות ה- Armv8.6-A Matrix Multiply ו- RMv8.2-AA32BF16 BFloat16.
  • תמיכה נוספת ליצירת קוד עבור מעבדי POWER10 בתוכנת ה- PowerPC. אופטימיזציות לולאה משופרות ותמיכה משופרת בפעולות נקודה צפה.
  • אדריכלות אדריכלות RISC-V יכול לקבל טלאים עם תמיכה עבור מערכי הוראות מורחבים ניסיוניים שטרם אושרו רשמית.

בנוסף לזה, היכולת ליצור קוד לפונקציות מחייבות מסופקת משולב להוראות SVE וקטוריות.

הגב האחורי לארכיטקטורת ה- AVR הועבר מקטגוריית הניסוי לקבוצות היציבות הכלולות בחלוקת הבסיס.

אחורי ה- x86 תומך בהוראות Intel AMX ו- TSXLDTRK. הוסיף הגנה מפני התקפות LVI (Load Value Injection) והמנגנון הכללי לביצוע תופעות לוואי של ספקולטיביות דיכוי יושמו גם כדי לחסום התקפות שנגרמו על ידי ביצוע ספקולטיבי של פעולות במעבד.

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

  • הקצה האחורי לארכיטקטורת SystemZ מוסיף תמיכה ב- MemorySanitizer ו- LeakSanitizer.
  • Libc ++ מוסיף תמיכה בקובץ כותרת קבועה במתמטיקה .
  • יכולות מורחבות של מקשר ה- LLD.
  • תמיכה משופרת ב- ELF, כולל אפשרויות נוספות "–lto-emit-asm", "–lto-program-whole-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –Unique "," –regalment "," –threads = N ".
  • נוספה אפשרות "– time-trace" לשמירת מעקב לקובץ, שאותו ניתן לנתח דרך ממשק ה- Chrome: // trace ב- Chrome.
  • ממשק עם מהדר Go (llgo) הוסר מהמהדורה וייתכן שהוא יוקם מחדש בעתיד.

בסופו של דבר אם אתה רוצה לדעת יותר על זה לגבי הגרסה החדשה הזו, אתה יכול לבדוק את הפרטים בקישור הבא.


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

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

*

*

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