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

nəşr edilmişdir sistem proqramlaşdırma dili buraxılışı Pas 1.37, 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:

  • Rustc kompilyatorunda təmin olunub kod profilinin nəticələrinə əsaslanan optimallaşdırma dəstəyi (PGO, Profile-Guided Optimization),
    proqramın icrası zamanı toplanmış statistikanın təhlili əsasında daha optimal kod yaratmağa imkan verir. Profil yaratmaq üçün “-C profile-generate” bayrağı verilir və montaj zamanı profildən istifadə etmək üçün - “-C profile-istifadə” (ilkin olaraq, proqram birinci bayraqla yığılır, ətrafında işləyir və yaratdıqdan sonra). profil, ikinci bayraqla yenidən yığılır);

  • Konsol proqramlarını cəld sınaqdan keçirmək üçün istifadə etmək rahat olan “cargo run” əmrini yerinə yetirərkən, paketdə bir neçə icra olunan fayl varsa, avtomatik olaraq işə salınacaq icra olunan faylı seçmək imkanı əlavə edilmişdir. İcra ediləcək standart fayl paket parametrləri ilə [paket] bölməsində default-run direktivi vasitəsilə müəyyən edilir ki, bu da sizə hər dəfə “cargo run”u işə saldığınız zaman “-bin” bayrağı vasitəsilə fayl adının açıq şəkildə göstərilməsindən qaçmağa imkan verir;
  • "Yük satıcısı" əmri, əvvəllər kimi təchiz edilmişdir ayrı paket. Komanda sizə asılılıqların yerli nüsxəsi ilə işi təşkil etməyə imkan verir - "yük satıcısı" icra edildikdən sonra layihənin asılılıqlarının bütün mənbə kodları crates.io saytından yerli kataloqa endirilir, daha sonra qutulara daxil olmadan iş üçün istifadə edilə bilər. io (əmr yerinə yetirildikdən sonra konfiqurasiyanın dəyişdirilməsinə dair ipucu qurulma üçün kataloqdan istifadə etmək üçün göstərilir). Bu xüsusiyyət artıq rustc kompilyatorunun buraxılış ilə bir arxivdə bütün asılılıqların qablaşdırılması ilə çatdırılmasını təşkil etmək üçün istifadə olunur;
  • İndi tip ləqəblərindən istifadə etməklə sadalanan seçimlərə keçidlər yaratmaq mümkündür (məsələn, “fn increment_or_zero(x: ByteOption) funksiyasının gövdəsində siz “ByteOption::None => 0” təyin edə bilərsiniz), tip hesablama konstruksiyalarını (‹) MyType‹.. ››::option => N) və ya Öz-özünə girişlər (c &self bloklarında siz “Self::Quarter => 25” təyin edə bilərsiniz);
  • Makroslarda adsız sabitlər yaratmaq imkanı əlavə edildi. "const"-da element adını müəyyən etmək əvəzinə, siz indi "_" simvolundan istifadə edərək, təkrarlanmayan identifikatoru dinamik olaraq seçə bilərsiniz, makroya yenidən zəng edərkən ad konfliktlərindən qaçın;
  • AlignN‹T› strukturunu hizalama ilə təyin etməyə oxşar sintaksisdən istifadə edərək, sonra AlignN‹MyEnum› istifadə edərək "#[repr(align(N))" atributunu saylarla istifadə etmək imkanı əlavə edildi;
  • API-nin yeni hissəsi BufReader::buffer, BufWriter::buffer və daxil olmaqla sabit kateqoriyaya köçürüldü.
    Cell::from_mut,
    Hüceyrə::hüceyrələrin_dilimi,
    DoubleEndedIterator::nth_back,
    Seçim::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits və
    dilim::copy_within.

Əlavə olaraq qeyd etmək olar sınaq başlaması Layihə Async-stdRust standart kitabxanasının asinxron variantını təklif edən (bütün interfeyslərin asinxron versiyada təklif edildiyi və async/await sintaksisi ilə istifadəyə hazır olan std kitabxanasının portu).

Mənbə: opennet.ru

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