בעולם שבו מערכות בטיחות קריטיות דורשות קוד אמין יותר, תרגום מאגרי קוד C ותיקים ל-Rust הופך לצורך דחוף. אולם, שיטות קיימות נתקלות בקשיים: גישות מבוססות כללים מתקשות לעמוד בדרישות בטיחות וסגנון טבעי, בעוד שיטות מבוססות LLM נכשלות בשמירה על שוויון סמנטי בגלל תלות בין מודולים. מחקר חדש מציג את EvoC2Rust, מסגרת אוטומטית לתרגום פרויקטים שלמים מ-C ל-Rust שמתמודדת בהצלחה עם אתגרים אלה.
EvoC2Rust משתמשת באסטרטגיית תרגום מונחית שלד (skeleton-guided). בשלב הראשון, היא מפרקת את פרויקט ה-C למודולים פונקציונליים, משתמשת ב-LLM משודרג עם מיפוי תכונות להמרת הגדרות ומקרו, ומייצרת stubs של פונקציות שנבדקו סמנטית כדי ליצור שלד Rust שניתן לקמפל. בשלב השני, היא מתרגמת פונקציות באופן הדרגתי ומחליפה את ה-stubs המקבילים. לבסוף, בשלב שלישי, היא מתקנת שגיאות קמפילציה באמצעות שילוב LLM וניתוח סטטי.
המסגרת משלבת יתרונות של גישות מבוססות כללים ו-LLM באמצעות שדרוג אבולוציוני. הערכה על סטי ביצועים פתוחים ושישה פרויקטים תעשייתיים מראה עליונות: EvoC2Rust עולה על הבסיס LLM הטוב ביותר ב-17.24% בדיוק תחבירי וב-14.32% בדיוק סמנטי, וגבוהה ב-43.59% משיעור הבטיחות של הכלי מבוסס כללים הטוב ביותר.
המשמעות של EvoC2Rust גדולה במיוחד למפתחים ומנהלי פרויקטים בישראל, שם תעשיית ההייטק משתמשת רבות בקוד C ותיק במערכות IoT, רכב אוטונומי וביטחון. המסגרת מאפשרת מעבר חלק ל-Rust, שמציע בטיחות זיכרון מובנית ללא garbage collector, ומפחיתה סיכונים. בהשוואה לחלופות, היא מתאימה לפרויקטים בקנה מידה גדול, מה שחוסך זמן ומשאבים.
עבור מנהלי טכנולוגיה, EvoC2Rust פותחת דלתות לשדרוג מאגרי קוד קיימים. כיצד תשלבו כלי זה בפרויקט הבא שלכם כדי להבטיח בטיחות גבוהה יותר?