Rust 1.61 Proqramlaşdırma Dili Buraxılışı

Mozilla layihəsi tərəfindən əsası qoyulmuş, lakin indi Rust Foundation müstəqil qeyri-kommersiya təşkilatının himayəsi altında hazırlanmış Rust 1.61 ümumi məqsədli proqramlaşdırma dilinin buraxılışı dərc edilmişdir. Bu dil yaddaşın təhlükəsizliyinə diqqət yetirir və zibil toplayıcıdan və işləmə müddətindən istifadə etmədən yüksək iş paralelliyinə nail olmaq üçün vasitələr təqdim edir (iş vaxtı standart kitabxananın əsas işə salınması və saxlanmasına qədər azaldılır).

Rust-un yaddaşla işləmə üsulları tərtibatçını göstəricilərlə manipulyasiya edərkən xətalardan xilas edir və yaddaşın aşağı səviyyəli işləməsi nəticəsində yaranan problemlərdən qoruyur, məsələn, yaddaş sahəsi boşaldıqdan sonra ona daxil olmaq, sıfır göstəricilərə istinad etmək, bufer aşmaq və s. Kitabxanaları yaymaq, qurmaları təmin etmək və asılılıqları idarə etmək üçün layihə Yük paketi meneceri hazırlayır. Crates.io deposu kitabxanaların yerləşdirilməsi üçün dəstəklənir.

Yaddaşın təhlükəsizliyi Rust-da kompilyasiya zamanı istinad yoxlaması, obyekt sahibliyinin izlənməsi, obyektin istifadə müddətinin (əhatə dairələrinin) izlənməsi və kodun icrası zamanı yaddaşa girişin düzgünlüyünün qiymətləndirilməsi vasitəsilə təmin edilir. Rust həmçinin tam ədədlərin daşmasına qarşı qorunma təmin edir, istifadə etməzdən əvvəl dəyişən dəyərlərin məcburi işə salınmasını tələb edir, standart kitabxanada səhvləri daha yaxşı idarə edir, dəyişməz istinadlar və dəyişənlər konsepsiyasını standart olaraq tətbiq edir, məntiqi səhvləri minimuma endirmək üçün güclü statik yazma təklif edir.

Əsas yeniliklər:

  • Əsas funksiyadan öz qaytarma kodlarınızı təyin etmək mümkündür. Əvvəlcə Rust-un əsas funksiyası yalnız “()” (vahid) növünü qaytara bilərdi ki, bu da tərtibatçı “process::exit(code)” funksiyasını açıq şəkildə çağırmadığı halda həmişə uğurlu çıxış statusunu göstərirdi. Rust 1.26-da, əsas funksiyada qeyri-sabit Sonlanma xüsusiyyətindən istifadə edərək, C proqramlarında EXIT_SUCCESS və EXIT_FAILURE kodlarına uyğun gələn "Ok" və "Err" dəyərlərini qaytarmaq mümkün oldu. Rust 1.61-də Sonlanma xüsusiyyəti sabitləşdirilib və spesifik qayıdış kodunu təmsil etmək üçün ayrıca ExitCode növü təklif olunub ki, bu da həm əvvəlcədən təyin edilmiş SUCCESS və FAILURE sabitlərini, həm də From metodunu təmin etməklə platformaya xas qayıdış növlərini mücərrəd edir. ixtiyari qaytarma kodunu qaytarmaq üçün. std::process::ExitCode istifadə edin; fn main() -> ExitCode { if !check_foo() { ExitCode::from(8); } Çıxış Kodu::UĞUR }
  • “const fn” ifadəsi ilə müəyyən edilmiş funksiyaların əlavə imkanları stabilləşdirilmişdir ki, onları təkcə müntəzəm funksiyalar kimi deyil, həm də sabitlər əvəzinə istənilən kontekstdə istifadə etmək olar. Bu funksiyalar icra zamanı deyil, tərtib zamanı hesablanır, ona görə də onlar yalnız sabitlərdən oxumaq imkanı kimi müəyyən məhdudiyyətlərə məruz qalırlar. Yeni versiyada const funksiyaları daxilində funksiya göstəriciləri ilə əsas əməliyyatlara icazə verilir (göstəricilərin yaradılması, ötürülməsi və ötürülməsinə icazə verilir, lakin funksiyanı göstərici ilə çağırmağa icazə verilmir); T kimi const funksiyalarının ümumi parametrləri üçün əlamət sərhədləri: Kopya; dinamik olaraq göndərilə bilən xüsusiyyətlər (dyn Trait); impl Funksiya arqumentləri və qaytarılan dəyərlər üçün xüsusiyyət növləri.
  • Axın std::io-da Stdin, Stdout və Stderr-i idarə edir, indi kilidləndikdə statik istifadə müddəti (“statik”) olur və “let out = std::io::stdout().lock();” kimi konstruksiyalara imkan verir. qulp almaq və bir ifadədə kilid qoymaqla.
  • API-nin yeni hissəsi stabillər kateqoriyasına köçürüldü, o cümlədən xüsusiyyətlərin üsulları və tətbiqləri stabilləşdirildi:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Kursor üçün yazın
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::proses::Xitam
    • std::thread::JoinHandle::is_finished
  • Onun sabitlər əvəzinə istənilən kontekstdə istifadə imkanını təyin edən "const" atributundan funksiyalarda istifadə olunur:
    • ::ofset və ::offset
    • ::wrapping_offset və ::wrapping_offset
    • ::add və ::add
    • ::sub və ::sub
    • ::wrapping_add və ::wrapping_add
    • ::wrapping_sub və ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_aralığı
    • ::as_mut_ptr_aralığı

Əlavə olaraq, proqram təminatında istifadə olunan Xous mikrokernel əməliyyat sisteminin inkişafı zamanı 100 min sətir kod yazdıqdan sonra Rust dilinin təəssüratlarının xülasəsi ilə "Rust: Kritik Retrospektiv" məqaləsini qeyd edə bilərsiniz. Dezavantajlar arasında çətin başa düşülən sintaksis, dilin natamamlığı və davamlı inkişafı, təkrarlanan quruluşların olmaması, Crates.io-da asılılıq etibarı ilə bağlı tipik problemlər və təhlükəsiz kod yazmaq üçün müəyyən bir nizam-intizamın saxlanması ehtiyacı daxildir. Gözləntiləri aşmış xüsusiyyətlərə kodun refaktorinqi və sürətli prototipləmə zamanı əlavə edilmiş “hack”lərin yenidən işlənməsi üçün alətlər daxildir.

Mənbə: opennet.ru

Добавить комментарий