Architekturális döntési feljegyzés: Rust programozási nyelv
Döntés száma: AR-001
Döntés címe: A Rust programozási nyelv bevezetése
Dátum: 2021. december 1.
Állapot: Elfogadott
Problémafelvetés
Ahogy folytatjuk a szoftveralkalmazások fejlesztését, azt észleltük, hogy egyre nehezebb enyhíteni a lehetséges biztonsági réseket és megelőzni a futásidejű hibákat. A meglévő programozási nyelvekkel, mint a C és a C++, továbbra is olyan problémákkal szembesülünk, mint a puffertúlcsordulások, memóriaszivárgások és az alkalmazások összeomlásához vezető meghatározatlan viselkedés. Olyan programozási nyelvre van szükségünk, amely memóriabiztonsági garanciákat nyújt, és elég hatékony a teljesítménykritikus alkalmazások támogatásához.
Megfontolások
Több programozási nyelvet terveztek a meglévő problémák kezelésére. Ezek közül a Rust programozási nyelv jelentős figyelmet kapott a fejlesztői közösségtől egyedi tervezési jellemzői miatt. A megfontolások közé tartozik:
Memóriabiztonság és biztonság
Teljesítmény és hatékonyság
Közösségi támogatás és elterjedtség
Tanulási görbe
Eszközök és ökoszisztéma
Kompatibilitás a meglévő szoftverrendszerekkel.
Megszorítások
Új programozási nyelv bevezetése a fejlesztők átképzését igényli, ami időt és erőforrásokat vesz igénybe. A nyelv beillesztése a meglévő fejlesztési munkafolyamatba kihívást jelenthet. Biztosítanunk kell a kompatibilitást a meglévő rendszerekkel, és el kell kerülnünk a törő változtatásokat a folytonosság fenntartása érdekében.
Megvalósítás
Fejlesztőcsapatunk képzésen vesz részt, hogy megtanulja és megismerje a Rust programozási nyelvet.
Próbaképpen új projektet hozunk létre Rusttal, hogy értékeljük a kompatibilitását és alkalmasságát fejlesztési céljainkra.
Fokozatosan áttelepítjük a C-ben és C++-ban írt meglévő rendszereket Rustra.
Együttműködünk a Rust-közösséggel, hogy felfedezzük a rendelkezésre álló eszközöket és könyvtárakat, amelyek javíthatják fejlesztési munkafolyamatunkat.
Rendszeresen figyeljük a Rust teljesítményét, és összehasonlítjuk a meglévő programozási nyelvek teljesítményével.
Hosszú távú megközelítést alkalmazunk, amely egyensúlyba hozza a képzés, az integráció költségeit és a Rust használatának lehetséges előnyeit.
Indoklás
A Rustot egyedi funkciói miatt vezettük be, amelyeket arra terveztek, hogy memóriabiztonsági és védelmi garanciákat nyújtsanak, miközben fenntartják a teljesítményt és a hatékonyságot. A Rust robusztus típusrendszere, borrow checkere és memóriabiztonsági koncepciói rendkívül alkalmassá teszik teljesítmény- és biztonságkritikus alkalmazások fejlesztésére. Ráadásul a Rustnak jelentős fejlesztői közössége van, ami hozzáférést biztosít számunkra eszközök, könyvtárak és ökoszisztéma széles köréhez, amelyek támogatják a fejlesztési munkafolyamatunkat. Bár a Rustnak tanulási görbéje van, úgy véljük, hogy a bevezetés előnyei meghaladják a költségeket, és kiváló lehetőséget nyújtanak a folyamatos növekedéshez és innovációhoz.
Következmények
A Rust bevezetése jelentős idő- és erőforrás-befektetést igényel a fejlesztők képzéséhez és a nyelv beillesztéséhez a meglévő fejlesztési munkafolyamatba.
A Rust bevezetése bizonyos fokú kompatibilitási problémákat okozhat a meglévő rendszerekkel, ami átalakítást és módosításokat igényel.
A Rust bevezetése növelheti a projektünkhöz hozzájárulni képes fejlesztők számát azáltal, hogy vonzza azokat a Rust-fejlesztőket, akik izgalmas projekteken akarnak dolgozni.
A bevezetés a meglévő nyelvekhez képest jobb teljesítményhez, hatékonysághoz és biztonsághoz vezethet.
Végül a Rust bevezetése azzal a lehetséges előnnyel jár, hogy csökkenti az alkalmazásaink biztonsági réseit.