חזרה
Rust 1.99.1 מתקן רגרסיות בקישור wcslen, בהחזרת FFI bool וב-rust-lld ב-macOS
SiTech AI Team2 דק׳ קריאה

Rust 1.99.1 מתקן רגרסיות בקישור wcslen, בהחזרת FFI bool וב-rust-lld ב-macOS

Rust 1.99.1 היא מהדורה נקודתית שמתקנת שלוש רגרסיות: פולבק עבור סמל wcslen בעת קישור, החזרת ערך bool דרך FFI על ארכיטקטורת x86_64 וטעינת libLLVM ברכיב rust-lld ב-macOS.

מה מתקן Rust 1.99.1

צוות Rust פרסם את Rust 1.99.1 כמהדורה נקודתית חדשה. המהדורה מתקנת שלוש רגרסיות שדווחו מגרסאות קודמות, כולל בעיות שהשפיעו על יעדי UEFI, על קוד FFI של x86_64 ועל תצורות הקישור של macOS.

בחלק מפרויקטים ליעדי Rust יכלו להופיע שגיאות קישור עקב סמל wcslen חסר. הפונקציה מוצגת כעת בספריית compiler-builtins של Rust כפולבק. הבעיה נוצרה מכיוון שה-pass של LLVM בשם loop-idiom-wcslen יכול להוסיף קריאות wcslen במהלך אופטימיזציה, ולחלק מהיעדים הפונקציה הזו לא הייתה זמינה לא ב-libc ולא בשום מקום אחר. בפרט, יעדי UEFI נשברו עבור כל פרויקט שהשתמש ב-std, מכיוון שחלק מהקריאות הללו כבר הוטמעו בספריית התקן שקומפלה מראש, ודוגמאות קוד משתמש דומות יכלו לגרום לאותה בעיה.

ערכים מוחזרים וטעינת לינקר

פונקציות Rust שמחזירות bool באמצעות FFI יכלו להשאיר את הביטים 1 עד 7 של רגיסטר ההחזרה בלתי מוגדרים, מה שאומר שגורמים קוראים יכלו לצפות בערכי זבל אחרים מלבד 0 או 1. סוג ההחזרה מסומן כעת להרחבת אפס, כפי שה-ABI דורש.

בנפרד, rust-lld לא יכל לפעול ב-macOS כאשר המהדר נקרא ללא פרוקסי rustup, מכיוון שלא הוגדר פרמטר ישיר לנתיב חיפוש הספרייה המתאימה. Rust 1.99.1 בונה כעת את rust-lld עם רשומת rpath עבור התיקייה המכילה את libLLVM.dylib.

איך לעדכן ולבדוק

משתמשים שהתקינו את הגרסה הקודמת באמצעות rustup יכולים לעבור ל-1.99.1 בעזרת rustup update stable. משתמשים שאין ברשותם rustup יכולים להוריד אותה מהדף המתאים באתר של Rust. צוות המהדורה של Rust קרא גם לקהילה לנסות מהדורות עתידיות באמצעות ערוצי beta ו-nightly באופן מקומי וב-CI, ולדווח על כל שגיאה שתימצא. הצוות הודה לכל מי שתרם ל-1.99.1 וציין שהמהדורה לא הייתה אפשרית בלעדיהם.

מקורות: Lobsters

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.