שחרור שפת תכנות Rust 1.39

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

ניהול הזיכרון האוטומטי של Rust משחרר את המפתח ממניפולציה של מצביעים ומגן מפני בעיות הנובעות ממניפולציה של זיכרון ברמה נמוכה, כגון גישה חופשית לזיכרון, הפניית מצביע null, חריגות מאגר וכדומה. מנהל חבילות מפותח להפצת ספריות, הבטחת הרכבה וניהול תלות על ידי הפרויקט. מטען, המאפשר לך לקבל את הספריות הדרושות לתוכנית בלחיצה אחת. מאגר נתמך כדי לארח ספריות crates.io.

העיקרי חידושים:

  • מְיוּצָב תחביר תכנות אסינכרוני חדש המבוסס על הפונקציה "async", הבלוק async move { ... } ואופרטור ".await", מה שמקל על כתיבת מטפלים שאינם חוסמים את זרימת הפקודה הראשית. בהשוואה ל-API שהוצע בעבר עבור I/O אסינכרוני, מבני async/.await הם פשוטים להבנה, קריאים מאוד, ומאפשרים לך ליישם אינטראקציות אסינכרוניות מורכבות באמצעות טכניקות בקרת זרימה מוכרות המבוססות על לולאות, הצהרות מותנות וחריגים.

    התחביר Async-await מאפשר לך ליצור פונקציות שיכולות להשהות את ביצוען, להחזיר את השליטה לשרשור הראשי ולאחר מכן לחדש את הביצוע מהמקום שבו הפסיקו. לדוגמה, הפסקה כזו נדרשת בעת עיבוד I/O, שבה ניתן לבצע עבודה אחרת תוך המתנה לפיסת הנתונים הבאה שתגיע. פונקציות ובלוקים המוגדרים עם "async fn" ו-"async move" מחזירים תכונה שלנו, המגדיר ייצוג חישוב אסינכרוני דחוי. אתה יכול להתחיל ישירות חישוב דחוי ולקבל את התוצאה באמצעות האופרטור ".await". שום פעולה לא מתבצעת או מתוכננת מראש עד שנקרא .await, מה שמאפשר ליצור מבנים מקוננים מורכבים ללא תקורה נוספת.

    async fn first_function() -> u32 { .. }
    ...
    let future = first_function();
    ...
    let result: u32 = future.await;

  • מְיוּצָב "#![feature(bind_by_move_pattern_guards)]", המאפשר שימוש במשתנים עם סוג הקישור "על ידי מהלך" בתבניות והשתמש בהפניות למשתנים אלה בקטע "אם" של הביטוי "להתאים". לדוגמה, הקונסטרוקציות הבאות מותרות כעת:

    fn main() {
    let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

    להתאים מערך {
    Nums
    if nums.iter().sum::() == 10

    => {
    drop(nums);
    }
    _ => לא ניתן להגיע!(),
    }
    }

  • אינדיקציה מותרת תכונות בעת הגדרת פרמטרים של פונקציות, סגירות ומצביעי פונקציה. נתמכות תכונות קומפילציה מותנות (cfg, cfg_attr) השולטות באבחון באמצעות מוך (אפשר, אזהרה, הכחשה ואסור) ותכונות עזר לשיחות מאקרו.

    fn len(
    #[cfg(windows)] slice: &[u16], // השתמש בפרמטר ב-Windows
    #[cfg(not(windows))] פרוסה: &[u8], // השתמש במערכת הפעלה אחרת
    ) -> השתמש ב-{
    slice.len()
    }

  • אזהרות לגבי בעיות שזוהו בעת בדיקת ההשאלה של משתנים (בודק ההשאלה) באמצעות טכניקת ה- NLL (Non-Lexical Lifetimes), מְתוּרגָם לקטגוריה של טעויות קטלניות. הבה נזכיר שמערכת האימות המבוססת על מנגנון חדש להתחשבות לאורך החיים של משתנים שאולים אפשרה לזהות כמה בעיות שלא הבחינו בקוד האימות הישן. מכיוון שפלט שגיאה עבור בדיקות כאלה עשוי להשפיע על תאימות עם קוד שעבד בעבר, אזהרות הוצאו בתחילה במקום שגיאות. אזהרות הוחלפו כעת בשגיאות בעת הפעלה במצב Rust 2018. במהדורה הבאה, פלט שגיאות יוטמע גם במצב Rust 2015, מה שייפטר סופית מבודק ההשאלה הישן;
  • התכונה "const", הקובעת את האפשרות להשתמש בכל הקשר במקום בקבועים, משמשת עבור הפונקציות Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
    שרירי בטן, עטיפת_בטן וגבשושית_בטן;
  • חלק חדש של ממשקי API הועבר לקטגוריית היציבות, כולל שיטות שיוצבו
    הצמד::into_inner, Instant::checked_duration_since ו-Instant::saturating_duration_since;
  • למנהל חבילות המטען יש כעת את היכולת להשתמש בסיומת ".toml" עבור קובצי תצורה. נוספה תמיכה ראשונית לבניית הספרייה הסטנדרטית ישירות מ-Cargo. הוסיף את הדגל "--workspace", במקום הדגל השנוי במחלוקת "--all". שדה חדש נוסף למטא נתונים "לפרסם", המאפשר לך לפרסם תלות על ידי ציון תג git ומספר גרסה. נוספה אפשרות בדיקה "-Ztimings" להפקת דוח HTML של זמני הביצוע של שלבי קומפילציה שונים.
  • במהדר rustc, הודעות אבחון כוללות חיתוך של זנבות הקוד שאינו מתאים למסוף. סיפקה רמה שלישית של תמיכה עבור פלטפורמות יעד
    i686-unknown-uefi ו-sparc64-unknown-openbsd. הרמה השלישית כוללת תמיכה בסיסית, אך ללא בדיקות אוטומטיות ופרסום של מבנים רשמיים.

מקור: OpenNet.ru

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