Architecture Decision Record

Active theme: Light

← Mifano ya rekodi za maamuzi

Rekodi ya Uamuzi wa Usanifu: Lugha ya programu Rust

Nambari ya Uamuzi: AR-001

Kichwa cha Uamuzi: Kupitisha lugha ya programu Rust

Tarehe: Desemba 1, 2021

Hali: Imekubaliwa

Kauli ya Tatizo

Tunapoendelea kuunda programu za kompyuta, tumeona kwamba inazidi kuwa changamoto kupunguza udhaifu unaowezekana wa usalama na kuzuia makosa ya wakati wa utekelezaji. Kwa lugha za programu zilizopo, kama C na C++, tunaendelea kupata matatizo kama kufurika kwa bafa, uvujaji wa kumbukumbu, na tabia isiyofafanuliwa inayosababisha programu kuanguka. Tunahitaji lugha ya programu inayotoa dhamana za usalama wa kumbukumbu na yenye ufanisi wa kutosha kuunga mkono programu zinazotegemea utendaji.

Mazingatio

Lugha kadhaa za programu zimebuniwa kushughulikia matatizo yaliyopo. Miongoni mwao, lugha ya programu Rust imepata umakini mkubwa kutoka jamii ya waundaji kutokana na vipengele vyake vya kipekee vya muundo. Mazingatio ni pamoja na;

  1. Usalama wa kumbukumbu na usalama

  2. Utendaji na ufanisi

  3. Usaidizi wa jamii na kupitishwa

  4. Mkondo wa kujifunza

  5. Zana na mfumo ikolojia

  6. Upatanifu na mifumo ya programu iliyopo.

Vikwazo

Kupitisha lugha mpya ya programu kunahitaji kuwafunza upya waundaji, jambo linalochukua muda na rasilimali. Kujumuisha lugha hiyo katika mtiririko wa kazi wa uundaji uliopo kunaweza kuwa changamoto. Lazima tuhakikishe upatanifu na mifumo iliyopo na kuepuka mabadiliko yanayovunja ili kudumisha mwendelezo.

Utekelezaji

  1. Timu yetu ya uundaji itapitia mafunzo ili kujifunza na kufahamu lugha ya programu Rust.

  2. Tutaunda mradi mpya kwa kutumia Rust kwa msingi wa majaribio ili kutathmini upatanifu na ufaafu wake kwa madhumuni yetu ya uundaji.

  3. Tutahamisha polepole mifumo iliyopo iliyoandikwa kwa C na C++ kwenda Rust.

  4. Tutashirikiana na jamii ya Rust kuchunguza zana na maktaba zilizopo zinazoweza kuboresha mtiririko wetu wa kazi wa uundaji.

  5. Tutafuatilia utendaji wa Rust na kuulinganisha na utendaji wa lugha za programu zilizopo mara kwa mara.

  6. Tutapitisha mbinu ya muda mrefu inayosawazisha gharama za mafunzo, ujumuishaji, na manufaa yanayowezekana ya kutumia Rust.

Sababu

Tumepitisha Rust kutokana na vipengele vyake vya kipekee vilivyobuniwa kutoa dhamana za usalama wa kumbukumbu na usalama huku ikidumisha utendaji na ufanisi. Mfumo thabiti wa aina wa Rust, borrow checker, na dhana za usalama wa kumbukumbu hufanya iwe inayofaa sana kwa kuunda programu zinazotegemea utendaji na zinazotegemea usalama. Zaidi ya hayo, Rust ina jamii kubwa ya waundaji, ikituwezesha kupata anuwai pana ya zana, maktaba, na mfumo ikolojia unaounga mkono mtiririko wetu wa kazi wa uundaji. Ingawa Rust inakuja na mkondo wa kujifunza, tunaamini manufaa ya kupitisha Rust yanazidi gharama na kutoa fursa bora ya ukuaji na uvumbuzi endelevu.

Matokeo

  1. Kupitishwa kwa Rust kutahitaji uwekezaji mkubwa wa muda na rasilimali kufunza waundaji na kujumuisha lugha katika mtiririko wa kazi wa uundaji uliopo.

  2. Kupitisha Rust kunaweza kusababisha kiwango fulani cha matatizo ya upatanifu na mifumo iliyopo, kuhitaji urekebishaji wa msimbo na marekebisho.

  3. Kupitishwa kwa Rust kunaweza kuongeza idadi ya waundaji wanaoweza kuchangia mradi wetu kwa kuvutia waundaji wa Rust wanaotaka kufanya kazi kwenye miradi ya kusisimua.

  4. Kupitishwa kunaweza kusababisha utendaji, ufanisi, na usalama ulioboreshwa ikilinganishwa na lugha zilizopo.

  5. Mwishowe, kupitisha Rust kunakuja na manufaa yanayowezekana ya kupunguza udhaifu wa usalama katika programu zetu.

Credit: this page is generated by ChatGPT, then edited for clarity and format.