Zapis arhitekturne odločitve: programski jezik Rust
Številka odločitve: AR-001
Naslov odločitve: Uvedba programskega jezika Rust
Datum: 1. december 2021
Stanje: Sprejeto
Izjava o problemu
Z nadaljnjim razvojem programskih aplikacij opažamo, da je vse težje ublažiti morebitne varnostne ranljivosti in preprečiti napake med izvajanjem. Z obstoječimi programskimi jeziki, kot sta C in C++, se še naprej srečujemo s težavami, kot so prelivi medpomnilnika, uhajanje pomnilnika in nedefinirano vedenje, ki vodi do sesutja aplikacij. Potrebujemo programski jezik, ki zagotavlja jamstva varnosti pomnilnika in je dovolj učinkovit za podporo aplikacijam, kritičnim za zmogljivost.
Premisleki
Več programskih jezikov je zasnovanih za reševanje obstoječih problemov. Med njimi je programski jezik Rust zaradi svojih edinstvenih oblikovalskih značilnosti pritegnil veliko pozornosti razvijalske skupnosti. Premisleki vključujejo;
Varnost pomnilnika in varnost
Zmogljivost in učinkovitost
Podpora skupnosti in sprejetost
Krivulja učenja
Orodja in ekosistem
Združljivost z obstoječimi programskimi sistemi.
Omejitve
Uvedba novega programskega jezika zahteva prekvalifikacijo razvijalcev, kar vzame čas in vire. Vključitev jezika v obstoječi razvojni potek dela je lahko izziv. Zagotoviti moramo združljivost z obstoječimi sistemi in se izogniti spremembam, ki bi kršile združljivost, da ohranimo kontinuiteto.
Izvedba
Naša razvojna ekipa se bo usposobila, da se nauči programskega jezika Rust in se z njim seznani.
Na preizkusni osnovi bomo ustvarili nov projekt z uporabo Rust, da ovrednotimo njegovo združljivost in primernost za naše razvojne namene.
Obstoječe sisteme, napisane v C in C++, bomo postopoma selili v Rust.
Sodelovali bomo s skupnostjo Rust, da raziščemo razpoložljiva orodja in knjižnice, ki lahko izboljšajo naš razvojni potek dela.
Redno bomo spremljali zmogljivost jezika Rust in jo primerjali z zmogljivostjo obstoječih programskih jezikov.
Sprejeli bomo dolgoročni pristop, ki uravnoteži stroške usposabljanja, integracije in morebitne koristi uporabe jezika Rust.
Utemeljitev
Rust smo sprejeli zaradi njegovih edinstvenih lastnosti, zasnovanih za zagotavljanje jamstev varnosti pomnilnika in varnosti ob ohranjanju zmogljivosti in učinkovitosti. Robusten sistem tipov, preverjevalnik izposoje (borrow checker) in koncepti varnosti pomnilnika jezika Rust ga naredijo zelo primernega za razvoj aplikacij, kritičnih za zmogljivost in varnost. Poleg tega ima Rust pomembno skupnost razvijalcev, kar nam omogoča dostop do širokega nabora orodij, knjižnic in ekosistema, ki podpirajo naš razvojni potek dela. Čeprav ima Rust krivuljo učenja, verjamemo, da koristi uvedbe jezika Rust odtehtajo stroške in zagotavljajo odlično priložnost za nadaljnjo rast in inovacije.
Posledice
Uvedba jezika Rust bo zahtevala znatno vlaganje časa in virov v usposabljanje razvijalcev in vključitev jezika v obstoječi razvojni potek dela.
Uvedba jezika Rust lahko povzroči določeno stopnjo težav z združljivostjo z obstoječimi sistemi, kar zahteva preoblikovanje kode in spremembe.
Uvedba jezika Rust lahko poveča število razvijalcev, ki lahko prispevajo k našemu projektu, saj privabi razvijalce Rust, ki želijo delati na vznemirljivih projektih.
Uvedba bi lahko vodila do izboljšane zmogljivosti, učinkovitosti in varnosti v primerjavi z obstoječimi jeziki.
Nenazadnje uvedba jezika Rust prinaša možno korist zmanjšanja varnostnih ranljivosti v naših aplikacijah.