רשומת החלטה ארכיטקטונית: שפת התכנות Rust
מספר החלטה: AR-001
כותרת ההחלטה: אימוץ שפת התכנות Rust
תאריך: 1 בדצמבר 2021
מצב: התקבלה
הצגת הבעיה
ככל שאנו ממשיכים לפתח יישומי תוכנה, שמנו לב שהולך ונעשה מאתגר יותר למתן פגיעויות אבטחה אפשריות ולמנוע שגיאות בזמן ריצה. עם שפות התכנות הקיימות, כמו C ו-C++, אנו ממשיכים לחוות בעיות כמו buffer overflows, דליפות זיכרון והתנהגות לא מוגדרת שמובילה לקריסות של יישומים. אנו זקוקים לשפת תכנות שמספקת ערבויות לבטיחות זיכרון ויעילה מספיק כדי לתמוך ביישומים קריטיים לביצועים.
שיקולים
כמה שפות תכנות תוכננו כדי לטפל בבעיות הקיימות. ביניהן, שפת התכנות Rust קיבלה תשומת לב משמעותית מקהילת המפתחים בשל תכונות העיצוב הייחודיות שלה. השיקולים כוללים;
בטיחות זיכרון ואבטחה
ביצועים ויעילות
תמיכת קהילה ואימוץ
עקומת למידה
כלים ואקוסיסטם
תאימות למערכות תוכנה קיימות.
אילוצים
אימוץ שפת תכנות חדשה דורש הכשרה מחדש של מפתחים, מה שלוקח זמן ומשאבים. שילוב השפה בזרימת העבודה הקיימת של הפיתוח עשוי להיות אתגר. עלינו להבטיח תאימות למערכות הקיימות ולהימנע משינויים שוברים כדי לשמור על רצף.
מימוש
צוות הפיתוח שלנו יעבור הכשרה כדי ללמוד ולהכיר את שפת התכנות Rust.
ניצור פרויקט חדש ב-Rust על בסיס ניסיון כדי להעריך את התאימות וההתאמה שלה למטרות הפיתוח שלנו.
נעביר בהדרגה מערכות קיימות שנכתבו ב-C וב-C++ ל-Rust.
נשתף פעולה עם קהילת Rust כדי לבחון את הכלים והספריות הזמינים שיכולים לשפר את זרימת העבודה של הפיתוח שלנו.
ננטר את הביצועים של Rust ונשווה אותם לביצועים של שפות התכנות הקיימות באופן סדיר.
נאמץ גישה לטווח ארוך שמאזנת בין עלויות ההכשרה, השילוב והיתרונות האפשריים של שימוש ב-Rust.
נימוק
אימצנו את Rust בשל התכונות הייחודיות שלה שתוכננו לספק ערבויות לבטיחות זיכרון ולאבטחה תוך שמירה על ביצועים ויעילות. מערכת הטיפוסים החזקה של Rust, ה-borrow checker ומושגי בטיחות הזיכרון הופכים אותה למתאימה מאוד לפיתוח יישומים קריטיים לביצועים וקריטיים לבטיחות. יתרה מזו, ל-Rust יש קהילה משמעותית של מפתחים, מה שמאפשר לנו גישה למגוון רחב של כלים, ספריות ואקוסיסטם שתומכים בזרימת העבודה של הפיתוח שלנו. אף של-Rust יש עקומת למידה, אנו מאמינים שיתרונות האימוץ עולים על העלויות ומספקים הזדמנות מצוינת לצמיחה וחדשנות מתמשכות.
השלכות
אימוץ Rust ידרוש השקעה משמעותית בזמן ובמשאבים כדי להכשיר מפתחים ולשלב את השפה בזרימת העבודה הקיימת של הפיתוח.
אימוץ Rust עלול לגרום במידה מסוימת לבעיות תאימות עם מערכות קיימות, ולדרוש refactoring ושינויים.
אימוץ Rust עשוי להגדיל את מספר המפתחים שיכולים לתרום לפרויקט שלנו על ידי משיכת מפתחי Rust שרוצים לעבוד על פרויקטים מרגשים.
האימוץ עשוי להוביל לשיפור בביצועים, ביעילות ובבטיחות בהשוואה לשפות הקיימות.
לבסוף, אימוץ Rust מביא עמו את התועלת האפשרית של צמצום פגיעויות אבטחה ביישומים שלנו.