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

nəşr edilmişdir sistem proqramlaşdırma dili buraxılışı Pas 1.36, Mozilla layihəsi tərəfindən yaradılmışdır. Bu dil yaddaşın təhlükəsizliyinə diqqət yetirir, yaddaşın avtomatik idarə edilməsini təmin edir və zibil toplayıcıdan və ya iş vaxtından istifadə etmədən yüksək tapşırıq paralelliyinə nail olmaq üçün bir vasitə təqdim edir.

Rust-un avtomatik yaddaş idarəçiliyi tərtibatçını göstəricilərin manipulyasiyasından azad edir və boş yaddaşa daxil olma, boş göstəricidən imtina, buferin aşılması və s. kimi aşağı səviyyəli yaddaş manipulyasiyasından yaranan problemlərdən qoruyur. Kitabxanaları yaymaq, montajı təmin etmək və layihə tərəfindən asılılıqları idarə etmək üçün paket meneceri hazırlanır. Yük, proqram üçün lazım olan kitabxanaları bir kliklə əldə etməyə imkan verir. Kitabxanaların saxlanması üçün repozitoriya dəstəklənir crates.io.

Əsas yeniliklər:

  • Xarakter sabitləşdi Gələcək, async / .await bloklarından istifadə edərkən qiymətləndirilməsi hələ tamamlanmayan dəyəri təmsil edir. Gələcəkdən istifadə edərək müəyyən edilmiş asinxron dəyərlər eyni zamanda müəyyən bir dəyərin hesablamalarının tamamlanmasını gözləyərkən ipdə faydalı işi davam etdirməyə imkan verir;
  • Kitabxana sabitləşdi ayırmaq, yaddaşa ayrılmış dəyərləri idarə etmək üçün ağıllı göstəricilər və kolleksiyalar təqdim edir. Std-də yaddaşın ayrılması indi növü istifadə edir Bir şey, onlar ayırmadan təkrar ixrac edilir. std ilə əlaqəli olmayan proqramlarda (“#![no_std]”), eləcə də std olmadan oxşar proqramlarda istifadə üçün nəzərdə tutulmuş kitabxanalarda alloc-un ayrıca istifadəsi məna kəsb edir;
  • Dəyərlərin düzgün işə salınması üçün yoxlamaları keçmək təklif etdi ara tip Bəlkə Vahid, daha təhlükəsiz alternativ olaraq mem::uninitialized funksiyası yerinə istifadə edilə bilər. mem::uninitialized funksiyası tez massivlər yaratmaq üçün əlverişlidir, lakin o, tərtibçini yanlış yönləndirir, çünki o, işə salınmış kimi görünür, lakin əslində dəyər işə salınmamış qalır. MaybeUninit, kompilyatora dəyərin başlatılmadığını açıq şəkildə göstərməyə, bununla əlaqədar mümkün qeyri-müəyyən davranışı nəzərə almağa, həmçinin "belki_t:" və addım-addım inisiallaşdırma vasitəsilə proqramlarda yoxlamaları təşkil etməyə, onun tamamlanmasını qeyd etməyə imkan verir. “.assume_init()” çağırışından istifadə etməklə. MaybeUninit-in yaranması ilə, mem::uninitialized funksiyası köhnəldi və istifadə üçün tövsiyə edilmir;
  • Borclanmış dəyişənlərin ömrünü qeyd etmək sistemini genişləndirən NLL (Lexical Non-Lexical Lifetimes) texnikası Rust 2015 dili üçün stabilləşdirilmişdir (ilkin olaraq NLL yalnız Rust 2018 tərəfindən dəstəklənmişdir). Ömürləri leksik səviyyədə bağlamaq əvəzinə, NLL icra axını qrafikindəki göstəricilər dəsti səviyyəsində onlara qayğı göstərir. Bu yanaşma dəyişənlərin borclanmasının yoxlanılması keyfiyyətini artırmağa imkan verir (borrow checker) və istifadəsi əvvəllər xətaya səbəb olan bəzi növ düzgün kodun icrasına imkan verir. Yeni davranış həmçinin sazlamağı çox asanlaşdırır;
  • Assosiativ massivlərin yeni tətbiqi daxildir HashMap, strukturun tətbiqinə əsaslanır İsveçrə Cədvəli (avtomatik olaraq yüklənir hashbrown :: HashMap, başqa cür göstərilmədiyi təqdirdə, məsələn, SipHash 1-3-ə əsaslanan std::HashMap). Proqram interfeysi eyni olaraq qalır və tərtibatçı üçün nəzərə çarpan fərqlər artan performans və azaldılmış yaddaş istehlakı ilə nəticələnir;
  • Paket menecerində yük əlavə etdi asılılıqların quraşdırılması zamanı yalnız yerli sistemdə keşlənmiş paketlərin istifadə edildiyi şəbəkəyə daxil olmadan işləməyə imkan verən “--offline” seçimi. Asılılıq yerli keşdə deyilsə, səhv atılacaq. Oflayn keçməzdən əvvəl asılılıqları yerli keşə əvvəlcədən yükləmək üçün siz “yük gətirmə” əmrindən istifadə edə bilərsiniz;
  • Makronu “dbg!” adlandırmaq imkanı tətbiq edildi. bir neçə arqumentin göstərilməsi;
  • Metodlar üçün sabitlərin əvəzinə istənilən kontekstdə istifadə imkanını təyin edən “const” atributundan istifadə olunur.
    Layout::from_size_align_checked,
    mem::needs_drop,
    NonNull::dangling və
    NonNull::cast;

  • API-lərin yeni hissəsi stabilləşdirilmiş üsullar da daxil olmaqla stabil kateqoriyaya köçürüldü
    task::Waker, task::Sorğu,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Read::read_vectored, Write::write_vectored,
    İterator::kopyalandı,
    BorrowMut (sətirlər üçün) və str::as_mut_ptr.

Mənbə: opennet.ru

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