הגרסה החדשה של LLVM 9.0 כבר פורסמה ואלה החדשות שלה

Llvm

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

הוא נועד לייעל את זמן הקומפילציה, זמן הכריכה, זמן הביצוע בכל שפת התכנות שהמשתמש רוצה להגדיר. במקור יושם כדי לקמפל C ו- C ++, העיצוב האגנוסטי של שפת LLVM והצלחת הפרויקט הולידו מגוון רחב של שפות, כולל Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas ואחרים.

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

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

בין התכונות החדשות של LLVM 9.0 מצא תמיכה להסרת תג פיתוח ניסיוני מפלטפורמת RISC-V, תמיכה ב- C ++ עבור OpenCL.

חידוש נוסף ש בולטת היא היכולת לחלק את התוכנית לחלקים טעונים דינמית ב- LLD והטמעת המבנה »asm goto» המשמש בקוד הליבה של לינוקס.

בנוסף, מודגש גם כי Libc ++ הגיע עם תמיכה ב- WASI (ממשק מערכת WebAssembly) ו- LLD הציגו תמיכה ראשונית בכריכה דינאמית של WebAssembly. נוסף יישום הביטוי הספציפי ל- GCC »asm goto», המאפשר לעבור מבלוק מוטבע מורכב לתג C.

תכונה זו נחוצה לבניית ליבת הלינוקס במצב »CONFIG_JUMP_LABEL = y« באמצעות Clang במערכות x86_64. בהתחשב בשינויים שנוספו בגירסאות קודמות, כעת ניתן לבנות את ליבת לינוקס בקלאנג עבור ארכיטקטורת x86_64 (בעבר היא נתמכה רק בארכיטקטורות arm, aarch64, ppc32, ppc64le ו- mips.

נוספה תמיכה להוראות BTI (מחוון יעד ענף) ו- PAC (קוד אימות מצביע) לאדריכלות AArch64. תמיכה משופרת באופן משמעותי בפלטפורמות MIPS, RISC-V ו- PowerPC.

בנוסף, פרויקטים של Android ו- ChromeOS כבר עברו להשתמש ב- Clang לבניית הגרעין וגוגל בודקת את Clang כפלטפורמת הבנייה העיקרית של גרעינים עבור מערכות הלינוקס שלה.

בעתיד, במהלך תהליך איסוף הגרעינים, ניתן יהיה להשתמש ברכיבים אחרים LLVM, כולל LLD, llvm-objcopy, llvm-ar, llvm-nm ו- llvm-objdump.

לקישור ה- LLD נוספה פונקציית מחיצה ניסיונית, המאפשרת לחלק תוכנית למספר חלקים, שכל אחד מהם ממוקם בקובץ ELF נפרד. תכונה זו מאפשרת לך להריץ את החלק העיקרי של התוכנית, שעל פי הצורך יטען את שאר הרכיבים בתהליך (לדוגמה, באפשרותך לבחור את מציג ה- PDF המובנה כקובץ נפרד, שיורד רק כאשר המשתמש פותח את קובץ ה- PDF).

מאידך, בולטים גם השיפורים הרבים בתומך. עבור ארכיטקטורות X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ו- PowerPC.

לדוגמא, נוספה תמיכה בהוראות SVE2 ו- MTE (Memory Tagging Extensions) לארכיטקטורה AArch64, תמיכה בארכיטקטורת Armv8.1-M וארכיטקטורת MVE נוספו למערך ה- ARM.

במקרה של AMDGPU, נוספה תמיכה בארכיטקטורת GFX10 (Navi), ברירת המחדל מופעלת להפעיל פונקציה ולהעביר את ה- DPP המשולב המופעל (Data Primitives-Parallel).

הבאגים LLDB הציג הדגשת צבעים של עקבות לאחור; הוסיף תמיכה עבור DWARF4 debug_types ו- DWARF5 debug_info blocks;

כלי השירות llvm-objcopy ו- llvm strip הוסיפו תמיכה בקבצי הפעלה ובחפצים הפועלים בפורמט COFF.

קצה אחורי לארכיטקטורת RISC-V מיוצב, שאינו ממוקם עוד כניסוי ובנוי כברירת מחדל. תמיכה מלאה בייצור קוד עבור גרסאות ערכת ההוראות RV32I ו- RV64I עם סיומות MAFDC.

מקור: http://releases.llvm.org/


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

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

*

*

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