Rust 1.55 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.55 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 paketi meneceri quraşdırma zamanı baş verən dublikat səhvləri və xəbərdarlıqları birləşdirmək imkanına malikdir. Fərqli parametrlərə malik paketin çoxsaylı qurulması ilə nəticələnən "yük testi" və "yük yoxlaması --all-targets" kimi əmrləri yerinə yetirərkən, indi istifadəçiyə göstərilmək əvəzinə, təkrarlanan problemin baş verməsinin xülasəsi göstərilir. eyni şeyi təkrar-təkrar qurarkən çoxlu eyni xəbərdarlıqlar. fayl. $ cargo +1.55.0 check —all-targets yoxlanılır foo v0.1.0 xəbərdarlıq: funksiya heç vaxt istifadə edilmir: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = qeyd: '#[warn(dead_code)]' defolt olaraq aktivdir xəbərdarlıq: 'foo' (lib) 1 xəbərdarlıq xəbərdarlığı yaratdı: 'foo' (lib test) 1 xəbərdarlıq yaratdı (1 dublikat) Hazır inkişaf etdirmə [optimallaşdırılmamış + debuginfo] hədəfi (s) 0.84 saniyədə
  • Standart kitabxanadakı üzən nöqtəli təhlil kodu daha sürətli və dəqiq Eisel-Lemire alqoritmindən istifadə etmək üçün köçürülüb ki, bu da çox böyük rəqəmlərlə ədədlərin yuvarlaqlaşdırılması və təhlili ilə bağlı əvvəllər müşahidə edilən bəzi problemləri həll edib.
  • Şablonlarda qapalı olmayan diapazonları təyin etmək imkanı sabitləşdi (“X..” X dəyəri ilə başlayan və tam ədəd tipinin maksimum dəyəri ilə bitən diapazon kimi şərh olunur): x-i u32 { 0 => println kimi uyğunlaşdırın! (“sıfır!”), 1.. => println! (“müsbət rəqəm!”), }
  • std::io::ErrorKind tərəfindən əhatə olunan genişləndirilmiş xəta variantları (səhvləri NotFound və WouldBlock kimi kateqoriyalara təsnif edir). Əvvəllər mövcud kateqoriyalara uyğun gəlməyən xətalar ErrorKind::Other kateqoriyasına düşürdü, bu da üçüncü tərəf kodundakı səhvlər üçün istifadə olunurdu. İndi ayrıca daxili kateqoriya ErrorKind::Mövcud kateqoriyalara uyğun gəlməyən xətalar üçün Kateqoriyalaşdırılmamış və ErrorKind::Digər kateqoriya standart kitabxanada baş verməyən səhvlərlə məhdudlaşır (io::Error qaytaran standart kitabxana funksiyaları) artıq ErrorKind:: kateqoriyasından istifadə etməyin.
  • 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:
    • Bağlanmış::klonlanmış
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUnit::assume_init_mut
    • MaybeUnit::assume_init_ref
    • BəlkəUnit::yazın
    • massiv :: xəritə
    • əməliyyat::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • str::from_utf8_unchecked metodunda sabitlərin əvəzinə istənilən kontekstdə istifadə imkanını müəyyən edən “const” atributundan istifadə olunur.
  • Üçüncü dəstək səviyyəsi powerpc64le-naməlum-freebsd platforması üçü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

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