Arkitekturbeslutspost: Programmeringsspråket Rust
Beslutsnummer: AR-001
Beslutstitel: Införande av programmeringsspråket Rust
Datum: 1 december 2021
Tillstånd: Godkänd
Problemformulering
När vi fortsätter att utveckla programvaruapplikationer har vi observerat att det blir allt svårare att mildra potentiella säkerhetssårbarheter och förhindra körtidsfel. Med de befintliga programmeringsspråken, som C och C++, upplever vi fortsatt problem som buffertöverskridningar, minnesläckor och odefinierat beteende som leder till att applikationer kraschar. Vi behöver ett programmeringsspråk som ger garantier för minnessäkerhet och är tillräckligt effektivt för att stödja prestandakritiska applikationer.
Överväganden
Flera programmeringsspråk är utformade för att åtgärda de befintliga problemen. Bland dem har programmeringsspråket Rust fått stor uppmärksamhet från utvecklargemenskapen på grund av sina unika designegenskaper. Överväganden inkluderar;
Minnessäkerhet och säkerhet
Prestanda och effektivitet
Communitystöd och spridning
Inlärningskurva
Verktyg och ekosystem
Kompatibilitet med befintliga programvarusystem.
Begränsningar
Att anta ett nytt programmeringsspråk kräver omskolning av utvecklare, vilket tar tid och resurser. Att integrera språket i det befintliga utvecklingsarbetsflödet kan vara en utmaning. Vi måste säkerställa kompatibilitet med de befintliga systemen och undvika brytande ändringar för att upprätthålla kontinuitet.
Implementation
Vårt utvecklingsteam kommer att genomgå utbildning för att lära sig och bekanta sig med programmeringsspråket Rust.
Vi kommer att skapa ett nytt projekt med Rust på prov för att utvärdera dess kompatibilitet och lämplighet för våra utvecklingsändamål.
Vi kommer gradvis att migrera befintliga system skrivna i C och C++ till Rust.
Vi kommer att samarbeta med Rust-gemenskapen för att utforska de tillgängliga verktygen och biblioteken som kan förbättra vårt utvecklingsarbetsflöde.
Vi kommer att övervaka Rusts prestanda och regelbundet jämföra den med de befintliga programmeringsspråkens prestanda.
Vi kommer att anta ett långsiktigt tillvägagångssätt som balanserar kostnaderna för utbildning och integration mot de potentiella fördelarna med att använda Rust.
Motivering
Vi har antagit Rust på grund av dess unika funktioner som är utformade för att ge garantier för minnessäkerhet och säkerhet samtidigt som prestanda och effektivitet bibehålls. Rusts robusta typsystem, lånegranskare (borrow checker) och minnessäkerhetskoncept gör det mycket lämpligt för att utveckla prestandakritiska och säkerhetskritiska applikationer. Dessutom har Rust en betydande gemenskap av utvecklare, vilket ger oss tillgång till ett brett utbud av verktyg, bibliotek och ekosystem som stöder vårt utvecklingsarbetsflöde. Även om Rust har en inlärningskurva tror vi att fördelarna med att anta Rust överväger kostnaderna och ger en utmärkt möjlighet till fortsatt tillväxt och innovation.
Konsekvenser
Införandet av Rust kommer att kräva en betydande investering i tid och resurser för att utbilda utvecklare och integrera språket i det befintliga utvecklingsarbetsflödet.
Att anta Rust kan orsaka en viss grad av kompatibilitetsproblem med befintliga system, vilket kräver omstrukturering och ändringar.
Införandet av Rust kan öka antalet utvecklare som kan bidra till vårt projekt genom att locka Rust-utvecklare som vill arbeta med spännande projekt.
Införandet kan leda till förbättrad prestanda, effektivitet och säkerhet jämfört med de befintliga språken.
Slutligen medför införandet av Rust den potentiella fördelen att minska säkerhetssårbarheter i våra applikationer.