, פרויקט Chromium יתמוך בשימוש בספריות C++ Rust של צד שלישי ב-Chromium
גוגל הודיעה לאחרונה כי הצוות שעומד מאחורי פרויקט Chromium עובד על הוספת שרשרת כלים של Rust למערכת הבנייה שלה.
למי שעדיין לא מודע ל-Rust, כדאי לזכור אותה היטב כי שפת התכנות הזו, שפותחה על ידי מוזילה במיוחד לשימוש בכתיבת דפדפן, החלה לחלחל ולהתקבל בתוך פרויקטים חשובים רבים, שאחד מהם הוא ליבת חלודה. לינוקס.
זה יאפשר לנו לכלול את קוד Rust ב-Chrome הבינארי במהלך השנה הבאה. המטרה היא להתחיל בקטן ולהגדיר ציפיות ברורות לגבי אילו ספריות ייחשבו כשהן מוכנות.
לכן, הגיוני ש-Chromium סוף סוף מתחיל לפתח גם את הטכנולוגיה הזו. עבור גוגל, הצגת Rust ב-Chromium תגשים את המטרה של מתן דרך קלה ובטוחה יותר להשגת "כלל השניים", הכולל האצת הפיתוח ושיפור האבטחה של Chrome. יתר על כן, זה משפר את האבטחה על ידי ביטול שגיאות זיכרון והפחתת צפיפות באגים בקוד.
אנו יודעים ש-C++ ו-Rust יכולים לעבוד טוב מאוד ביחד, הודות לכלים כמו cxx, autocxx bindgen, cbindgen, diplomat ו-crubit (ניסיוני). עם זאת, יש גם מגבלות. אנו יכולים לצפות שצורתן של מגבלות אלו תשתנה עם הזמן עם כלים חדשים או משופרים, אך ההחלטות והתיאורים כאן מבוססים על מצב הטכנולוגיה הנוכחי.
ההחלטה התקבלה כחלק מיוזמה למנוע הופעת שגיאות זיכרון בבסיס הקוד של כרום. על פי נתונים סטטיסטיים שסופקו לפני שנתיים, 70% מבעיות האבטחה הקריטיות והמסוכנות ב-Chromium נובעות משגיאות זיכרון.
שימוש בשפת Rust, המתמקדת בניהול זיכרון מאובטח ומספקת ניהול זיכרון אוטומטי, יפחית את הסיכון לפגיעויות הנגרמות מבעיות כגון גישה לאזור זיכרון לאחר שפונה וגלישה של מאגר (buffer overflow).
המטרה של הבאת Rust ל-Chromium היא לספק דרך קלה יותר (ללא IPC) ובטוחה יותר (פחות מורכבת C++ באופן כללי, ללא באגי בטיחות בארגז חול) כדי לספק את כלל השניים, על מנת לזרז את הפיתוח (פחות קוד לכתיבה , פחות מסמכי עיצוב, פחות תיקוני אבטחה) וכדי לשפר את האבטחה (יותר שורות קוד ללא באגי אבטחה בזיכרון, צפיפות באגים בקוד נמוכה יותר) של Chrome. בנוסף, החברה בטוחה שנוכל להשתמש בספריות Rust של צד שלישי כדי להשיג מטרה זו.
בתחילת 2022, צוות Chromium כבר התנסה עם Rust , ולאחר מספר חודשים הגיע למסקנה שהשפה אינה מתאימה בתחילה כתחליף ל-C++ עבור משימות מורכבות עם קוד אסינכרוני שצריך לעבוד לצד קוד קיים.
לכן, השימוש המתוכנן ב-Rust ב-Chromium מוגבל בבירור בתחילה . מצד אחד, יכולת הפעולה ההדדית תלך רק בכיוון אחד: מ-C++ ל-Rust. מצד שני, בתחילה מותר רק השימוש בספריות של צד שלישי. אלה מתפקדות כרכיבים עצמאיים ואינן תלויות ברכיבים הפנימיים של Chromium. הספריות חייבות להיות בעלות ממשק API פשוט למשימה הספציפית שלהן. לאחר מכן צוות Chromium יבחן את הספריות.
לבסוף, ראוי לציין כי הוספת תמיכה ב-Chromium תאפשר להעביר את קוד Rust לקבצים הבינאריים של Chrome החל מהשנה הבאה. ההחלטה נובעת בעיקר משיקולי אבטחה: Rust מציע אבטחה רבה יותר בעת כתיבה לזיכרון מאשר C++ ואוסר על התנהגויות שעלולות להיות מזיקות כגון קריאת משתנים לא כתובים, גישה לערכים מעבר למגבלות שנקבעו על ידי מערכים, ביטול הפניות של מצביעים ריק או לא חוקיים ושימוש באיטרטורים לא חוקיים.
אם אתם מעוניינים ללמוד עוד, תוכלו למצוא את הפרטים בקישור הבא.