חזרה

Rust 1.100.0 שוחררה עם never type, allocator API ושינויים ב-Cargo
SiTech AI Team2 דק׳ קריאה

Rust 1.100.0 שוחררה עם never type, allocator API ושינויים ב-Cargo

Rust 1.100.0 זמינה דרך rustup ומייצבת את never type, חלקים מ-core allocator API, core::mem::DropGuard, אזהרות תלותים לא בשימוש ב-Cargo, שינויי מטמון בנייה ופתרון גיל פרסום מינימלי.

Rust 1.100.0 זמינה דרך rustup update stable. הגרסה מייצבת את never type, חלקים מ-core allocator API, core::mem::DropGuard, core::mem::conjure_zst, וכמה תכונות של Cargo, כולל דיווח על תלותים לא בשימוש, שינויי פריסת תיקיית הבנייה ובדיקות גיל פרסום מינימלי.

never type מגיע ליציבות

לאחר 10 שנים וחמש ניסיונות ייצוב שנכשלו, never type, שנכתב !, יציב. זהו הטיפוס הלא-מיושב הקנוני לחישובים שאינם מסתיימים בערך, וניתן לכפות (coerce) אותו לכל טיפוס אחר. גרסה זו גם מאפשרת מתן שם ל-! בכל מקום, כולל Result, ומשנה את Infallible להיות alias ל-never type. במהדורות לפני 2024, ה-fallback של never type משתנה מ-() ל-!, מה שעשוי להשפיע על קוד נדיר ולגרום לקוד נוסף להיראות כבלתי-נגיש.

Allocator API ו-DropGuard

Rust 1.100.0 מייצבת חלקים מרכזיים של allocator_api, ומאפשרת מקצי זיכרון מותאמים אישית דרך ה-Allocator trait עם Vec ו-Box. הגרסה גם מציגה את core::mem::DropGuard, שמריץ closure כאשר הוא מושלך (dropped), ותומך ב-dismiss כדי להחזיר את המשתנה המוגן בלי להריץ את ה-destructor. core::mem::conjure_zst מספקת דרך unsafe ייעודית ליצירת ערכים של טיפוסים בגודל אפס.

שיפורים ב-Cargo

Cargo מדווחת על תלותים לא בשימוש, הנשלטים על ידי טבלת [lints.cargo], עם אזהרות שמופיעות כאשר כל היעדים האפשריים לבנייה נבנים. לא מוצגת אזהרה על dev-dependencies לא בשימוש. תיקיית הבנייה מחילה כעת באופן עקבי את ה-hash של תצורת הבנייה: היא מארגנת את התיקיות לפי שלבי בנייה ומעבירה את ה-hash לתיקיית האב. Cargo מייצבת גם את פתרון גיל הפרסום המינימלי, ומאפשרת למשתמשים להגדיר global-min-publish-age ב-.cargo/config.toml ולדלג על גרסאות שפורסמו לאחרונה יותר מהגיל המוגדר. cargo install מתעלמת מההגדרה הן עבור ה-crate המותקן והן עבור התלותים שלו.

APIs מיוצבים ושינויים אחרים

הגרסה מוסיפה APIs מיוצבים, ובהם Box::new_in, Vec::new_in, Child::main_thread_handle, bool::toggle, Box::take, Box::map, Rc::map, Arc::map, עזרים trim של str ו-slice, Path::trim_prefix, Vec::from_fn ואחרים המפורטים בהערות הגרסה. השינויים ב-Rust, Cargo ו-Clippy מתועדים בנפרד, וצוות Rust הודה לתורמים.

מקורות: blog.rust-lang.org

SiTech

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

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