הגרסה השמינית של התיקונים לתמיכה במנהלי התקן Rust בלינוקס מגיעה

מיגל אוג'דה, מחבר פרויקט Rust-for-Linux הוציא את המהדורה השמיני של פיתוח תיקוני ליבת לינוקס עם תמיכה בשפת Rust עבור מפתחי ליבת לינוקס לשקול.

זה מדורג כגרסה התשיעית של התיקונים (בהתחשב בגרסה הראשונה שפורסמה ללא מספר גרסה). תמיכת חלודה נחשבת נסיונית, אבל זה כבר כלול בענף linux-next, טוען לאינטגרציה במהדורת הסתיו של 5.20/6.0, והוא מתקדם מספיק כדי להתחיל לעבוד על יצירת שכבות הפשטה על גבי תתי-המערכות של הליבה, כמו גם כתיבת בקרים ומודולים.

הפיתוח ממומן על ידי גוגל וה-ISRG (Internet Security Research Group), המייסדת את פרויקט Let's Encrypt ומקדמת HTTPS ופיתוח טכנולוגיות להגברת אבטחת האינטרנט.

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

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

מה חדש במהדורה השמינית הזו?

בהצעה חדשה זו שפורסמה, מוזכר כי גרסת ספריית alloc, אשר ביטל את היצירה האפשרית של מצב "פאניקה" על שגיאות, עודכן לגרסה 1.62 של Rust. בהשוואה לגרסה הקודמת, ערכת הכלים Rust ייצבה תמיכה בפונקציונליות const_fn_trait_bound המשמשת בתיקוני ליבה.

חוץ מזה קוד הכריכות מופרד לצרור של תיבות "כריכות". בנפרד, מה שמקל על הבנייה מחדש אם רק משתנה חבילת הליבה הראשית.

ה יישום המאקרו "concat_idents!", נכתב מחדש כמאקרו פרוצדורלי, לא קשור לפונקציונליות concat_idents ומאפשר שימוש בהפניות למשתנים מקומיים.

בנוסף, מוזכר שהמאקרו "סטטי_טעון!" נכתב מחדש כדי לאפשר "core::assert!()" משמש בכל הקשר במקום בקבועים, בעוד שהמאקרו "construction_error!" הותאם לעבוד בעת הגדרת מצב "RUST_BUILD_ASSERT_{WARN,ALLOW}" עבור מודולים.

מודול fs נוסף המספק קישורים לעבודה עם מערכות קבצים. מוצעת דוגמה למערכת קבצים פשוטה שנכתבה ב-Rust, כמו גם מודול תור העבודה שנוסף לעבודה עם תורי מערכת.

משאר השינויים הבולטים מההצעה החדשה הזו:

  • נוסף קובץ תצורה נפרד "kernel/configs/rust.config".
  • הקבצים "*.i" שעובדו בהחלפות מאקרו שונו ל-"*.rsi".
  • הוסרה תמיכה בבניית רכיבי Rust עם רמות אופטימיזציה אחרות מאלה המשמשות לקוד C.
  • הפיתוח של מודול kasync נמשך עם הטמעת שיטות תכנות אסינכרוניות (אסינכרוני).
  • הוסיפו דוגמה לשרת TCP ברמת ליבה שנכתב ב- Rust והוסיפו את היכולת לטפל בהפרעות ב- Rust.
  • נוסף מאקרו פרוצדורה כדי להקל על העבודה עם טבלאות מצביעי פונקציות, כגון מבנה file_operations.
  • נוסף יישום רשימה מקושרת דו-כיוונית "unsafe_list::List".
  • נוספה תמיכה ראשונית עבור RCU וסוג Guard כדי לבדוק אם נעילת קריאה קשורה לשרשור הנוכחי.
  • נוספה פונקציה Task::spawn() כדי להריץ ולהתחיל שרשורי ליבה באופן אוטומטי.
  • השיטה Task::wake_up() נוספה גם היא.
  • נוסף מודול השהיה

בסופו של דבר אם אתה מעוניין לדעת יותר על כך, אתה יכול לבדוק את הפרטים בקישור הבא.


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

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

*

*

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