Bosh sahifa Wiki Rust

Rust

Rust — dastlab Mozilla xodimi Greydon Xoar tomonidan shaxsiy loyiha sifatida boshlangan, keyinchalik Mozilla tomonidan qo’llab-quvvatlangan va 2015-yilda 1.0 versiyasi chiqarilgan tizim dasturlash tili. Uning asosiy maqsadi — Garbage Collectorsiz, ammo xotira bilan bog’liq xatolardan xoli dasturlar yozish imkonini berish.

Egalik (ownership) modeli

Rust’ning markaziy g’oyasi — har bir qiymatning aniq bitta “egasi” bo’lishi kerakligi. Qiymat boshqa o’zgaruvchiga topshirilganda, avvalgi o’zgaruvchi uni endi ishlata olmaydi (move semantikasi). Ushbu qoidalar kompilyatsiya vaqtida tekshiriladi, shu sababli dastur ishga tushmasdan oldin ko’plab xotira xatolari aniqlanadi.

Borrow checker

Rust kompilyatorining “borrow checker” deb ataladigan qismi kodni tahlil qilib, bir vaqtning o’zida bir nechta o’zgaruvchan (mutable) havolaning mavjud bo’lishiga yo’l qo’ymaydi — bu esa ma’lumotlar poygasi (data race) kabi muammolarni bir ip (thread) doirasidayoq oldini oladi. Natijada, dastur muvaffaqiyatli kompilyatsiya qilingan bo’lsa, xotira bilan bog’liq ko’plab xatolar ishlash vaqtida umuman yuzaga kelmasligi kafolatlanadi.

Qo’llanilish sohalari

Rust tizim dasturlash, veb-brauzer komponentlari (Mozillaning Servo loyihasi va Firefox’ning ayrim qismlari), operatsion tizim yadrolari (Linux yadrosiga qisman Rust kodi qo’shilgan) va WebAssembly orqali brauzerda yuqori samarali kod ishga tushirishda qo’llaniladi. Discord va Dropbox kabi kompaniyalar ham ayrim yuqori yuklamali xizmatlarini Rust’ga ko’chirgan.

O’rganish qiyinligi

Rust’ning egalik va qarz olish qoidalari kuchli kafolatlar bersa-da, tilni birinchi marta o’rganayotgan dasturchilar uchun sezilarli darajada qiyinchilik tug’diradi — bu holat hatto “borrow checker bilan kurash” degan norasmiy atama paydo bo’lishiga olib kelgan. Shunga qaramay, Stack Overflow so’rovnomalarida Rust bir necha yil ketma-ket “eng sevilgan dasturlash tili” sifatida tan olingan.

Bog’liq tushunchalar

Xotira xavfsizligi, Egalik modeli, WebAssembly, Tizim dasturlash, Mozilla, Cargo, Concurrency