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

Mozilla layihəsi tərəfindən əsası qoyulmuş, lakin hazırda Rust Foundation müstəqil qeyri-kommersiya təşkilatının himayəsi altında hazırlanmış Rust 1.52 sistem proqramlaşdırma dilinin buraxılışı nəşr olunub. 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 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 avtomatik yaddaş idarəetməsi göstəriciləri idarə edərkən səhvləri aradan qaldırır və aşağı səviyyəli yaddaş manipulyasiyasından yaranan problemlərdən qoruyur, məsələn, boşaldıqdan sonra yaddaş bölgəsinə daxil olmaq, null göstərici referensiyaları, bufer aşması və s. Kitabxanaları yaymaq, montajı təmin etmək və asılılıqları idarə etmək üçün layihə Yük paketi menecerini inkişaf etdirir. Crates.io deposu kitabxanaların yerləşdirilməsi üçün dəstəklənir.

Əsas yeniliklər:

  • “Yük yoxlaması” və “yük klipi” əmrlərinin yerinə yetirilməsi qaydası ilə bağlılıq silindi. Əvvəllər, "yük yoxlamasından" sonra "yük klipi" adlandırılması, bu yoxlama rejimləri üçün keş ayrılması olmaması səbəbindən clippy yardım proqramını (linter) işə salmırdı. İndi bu problem həll olunub və “yük klipi” və “yük çeki”nin hansı qaydada adlandırılması artıq əhəmiyyət kəsb etmir.
  • API-nin yeni hissəsi sabit kateqoriyaya köçürüldü, o cümlədən aşağıdakı üsullar stabilləşdirildi:
    • Arqumentlər::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • dilim::partition_point
    • str::rsplit_once
    • str::split_once
  • Metodlarda onu sabitlər əvəzinə istənilən kontekstdə istifadə etmək imkanını müəyyən edən “const” atributundan istifadə olunur:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_böyük hərf
    • char::to_ascii_kiçik hərflərə
    • char::eq_ignore_ascii_case
    • u8::to_ascii_böyük hərf
    • u8::to_ascii_kiçik hərflərə
    • u8::eq_ignore_ascii_case
  • Təhlükəsiz funksiyalarda istifadə edilən təhlükəli kodun təhlükəli bloklarla çərçivəyə salınıb-saxlanmadığını müəyyən etmək üçün unsafe_op_in_unsafe_fn lint yoxlaması əlavə edildi.
  • Dəyişən göstəriciləri massivlərə massiv elementinin tipinə göstəricilər formasına köçürməyə icazə verilir. let mut x: [istifadə; 2] = [0, 0]; let p = &mut x kimi *mut istifadə; let p = &mut x as *const use;
  • Klipə (linter) 9 yeni çek əlavə edildi.
  • Yük paketi meneceri indi paketlər üçün JSON-da “manifest_path” sahəsini dəstəkləyir. Crates.io repozitoriyasına SPDX 3.11 formatında lisenziya məlumatının dəqiqləşdirilməsi üçün dəstək əlavə edildi.
  • Testləri yerinə yetirərkən birdən çox filtr təyin etməyə icazə verilir, məsələn, "yük testi - foo bar" işləməsi "foo" və "bar" maskalarına uyğun gələn bütün testləri həyata keçirəcək.
  • Defolt LLVM alət dəsti LLVM 12-ə yeniləndi.
  • Üçüncü dəstək səviyyəsi s390x-naməlum-linux-musl, riscv32gc-naməlum-linux-musl, riscv64gc-unknown-linux-musl və powerpc-naməlum-openbsd platformaları üçün həyata keçirilib. Üçüncü səviyyə əsas dəstəyi əhatə edir, lakin avtomatlaşdırılmış sınaq, rəsmi quruluşların dərc edilməsi və ya kodun tikilib-qurula bilməyəcəyini yoxlamaq olmadan.

Mənbə: opennet.ru

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