0.10 פראי


טקס הסיום התקיים ב-4 באוגוסט 0.10 פראי — קישור חינמי שנכתב ב-Rust ומיועד בעיקר לבנייה מהירה של תוכניות ב Linuxהמקשר מבצע את השלב הסופי של הבנייה: שילוב קבצי אובייקט וספריות לקובץ הרצה או ספרייה משותפת סופית. ניתן להשתמש ב-Wild כתחליף ל-GNU ld, LLD ו-Mold, אם כי המטרה הסופית המוצהרת של המפתחים היא קישור הדרגתי. עדיין לא יושם.

 

אחד החידושים העיקריים היה התמיכה בפרמטרים --gdb-index ו--no-gdb-indexכאשר תכונה זו מופעלת, Wild יוצר מקטע .gdb_index בקובץ הפלט עם אינדקס של מידע ניפוי שגיאות. זה מאפשר ל-GDB למצוא במהירות רבה יותר סמלים נחוצים בתוכניות גדולות מבלי ליצור את האינדקס בנפרד לאחר הבנייה. המימוש תומך בגרסה 9 של פורמט אינדקס GDB; פעולות הסריקה, המיזוג וכתיבת האינדקס בוצעו במקביל.

 

סקריפטים של Composer הורחבו משמעותית. נוספה תמיכה עבור:

  • מקטעי /DISCARD/ כדי לא לכלול מקטעי קלט מיותרים;
  • כותרות תוכנית מותאמות אישית של PHDRS;
  • הפונקציות SIZEOF_HEADERS, DEFINED ו-SEGMENT_START;
  • מילת המפתח AT והפונקציה LOADADDR;
  • ביטויים מותנים עם אופרטור טרנרי;
  • פקודות SORT, SORT_BY_NAME ו- SORT_BY_ALIGNMENT;
  • סמל __bss_start;
  • תבניות למילוי מקטעי פלט;
  • פקודות OUTPUT_FORMAT ו-OUTPUT_ARCH;
  • מספר מונים יחסיים של הכתובת הנוכחית.

 

תאימות מלאה עם GNU ld טרם הושגה. לדוגמה, חלק מהתכונות של פקודת MEMORY, מקטעי OVERLAY וכמה שיטות למיקום מקטעים נותרו לא גמורות. המפתחים עובדים על כך בנפרד. טבלת היכולות הנדרשות לקישור ליבה Linux.

 

הביצועים שופרו בעת אחסון תוצאות בנייה ב-Btrfs וב-VFAT. Wild משתמש כעת באופן אוטומטי במצב --no-mmap-output-file ואינו מבצע mmap של קובץ הפלט לזיכרון. בבדיקה שביצע מפתח של קישור Zed ב-Btrfs, הזמן הופחת מכ-2,6-2,8 ל-1,5-1,8 שניות. עם זאת, מחבר השינוי מזהיר שגם לאחר אופטימיזציה, Btrfs נשאר איטי משמעותית מ-tmpfs בתרחיש זה; עבור Ext4 ו-XFS, לעומת זאת, השימוש ב-mmap הוכח כיתרון רב יותר.

Wild ממשיכה להיות מועברת לפורמטים ופלטפורמות אחרים. גרסה ניסיונית עבור WebAssembly כבר יכולה לקשר מגוון תוכניות, בעוד שפורט עבור Mach-O יכול לקשר קבצי הרצה בסיסיים. העבודה החלה על פלטפורמות יעד של 32 סיביות, מה שאמור לפשט עוד יותר את השימוש ב-Wild בפיתוח מערכות משובצות. עיבוד ראשוני של קבצי אובייקט PowerPC64 ELFv2 נוסף גם כן, ותמיכת Mach-O ממשיכה להתפתח, כולל קבצי אובייקט אוניברסליים וקישור ישיר עם ספריות דינמיות. פורטים אלה עדיין לא צריכים להיחשב מוכנים לשימוש יומיומי.

המקשר libwild יכול כעת לקבל קבצי קלט ולאחסן את הפלט ישירות בזיכרון. זה מאפשר לתוכניות אחרות להטמיע את Wild מבלי ליצור בהכרח קבצי ביניים בדיסק. יתר על כן, הספרייה כבר לא עוקפת את מאגר ה-threads הגלובלי של Rayon, וניתן להשבית את התמיכה בדחיסת Zstandard בזמן הבנייה.

מהדורה זו כוללת תיקונים רבים עבור x86-64, AArch64, RISC-V ו-LoongArch64. תיקונים אלה כוללים שגיאות בטיפול ב-TLS, PLT, LTO, מידע דחוס של ניפוי שגיאות, יישורים גדולים והזזות מחדש ב-PIE ובאובייקטים משותפים. כמו כן תוקנו קריסות אפשריות במהלך ניתוח סקריפטי קישור ושגיאות ביצירת מקטעי .tbss, .strtab ו-.eh_frame.

 

תומכים פראיים Linux בארכיטקטורות x86-64, AArch64 ו-RISC-V; תמיכה ב-LoongArch64 ו-PowerPC64LE רשומה כרגע כראשונית. ניתן להתקין את המקשר מארכיונים מוכנים מראש, דרך cargo-binstall, Homebrew, Nix, או באמצעות הפקודה cargo install --locked wild-linker. קוד המקור מופץ לפי שיקול דעתו של המשתמש. רישיונות Apache 2.0 או MIT.

 

מקור: linux.org.ru

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster