Rust 1.68 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.68 ü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:

  • Cargo paket meneceri və crates.io repozitoriyası repozitoriyada mövcud olan bütün paketlərin mövcud versiyalarını əks etdirən indekslə işləməyin yeni üsulunu müəyyən edən Seyrək protokolu üçün stabilləşdirilmiş dəstəyi var. Yeni protokol crates.io ilə işləmə sürətini əhəmiyyətli dərəcədə artırmağa və repozitoriyada paketlərin sayının daha da artması ilə miqyas problemlərini həll etməyə imkan verir.

    Tam indeksin endirilməsi nəticəsində yaranan gecikmələri azaltmaq üçün Git-dən istifadə edərək indeksə daxil olmaq əvəzinə Sparse, müəyyən bir layihənin asılılıqlarını əhatə edən yalnız zəruri indeks məlumatlarının HTTPS üzərindən birbaşa endirilməsini nəzərdə tutur. İndeks məlumatlarını təmin etmək üçün yeni xidmət index.crates.io istifadə olunur. Varsayılan olaraq, yeni protokolun Rust 1.70 filialında istifadəsi planlaşdırılır və bundan əvvəl onu işə salmaq üçün "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=seyrək" mühit dəyişənini təyin edə və ya "[registrlər. crates-io]" .cargo/config.toml faylının 'seyrək' bölməsi.

  • “T” ifadəsindən öz vəziyyətinin yerli sancması ilə Pin<&mut T> strukturu yaratmağa imkan verən “pin!” makrosunu əlavə etdi (Box::pin-dən fərqli olaraq, yaddaşı yığına ayırmır, lakin birləşdirir. yığın səviyyəsində).
  • Standart ayırma paketindən istifadə edərkən istifadə edilən standart yaddaş ayırma xətası idarəedicisi təklif edilmişdir. Yalnız ayırmanı aktivləşdirən proqramlar (std olmadan) yaddaşın ayrılması uğursuz olduqda indi “panic!” işləyicisini çağıracaq, bu da isteğe bağlı olaraq “#[panic_handler]” istifadə edərək tutula bilər. std kitabxanasından istifadə edən proqramlar səhv məlumatlarını stderr-də çap etməyə və qəzaya uğramağa davam edəcək.
  • 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:
    • {core,std}::pin::pin!
    • impl From {f32,f64} üçün
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut üçün PathBuf
  • VecDeque::new funksiyasında sabitlər əvəzinə istənilən kontekstdə istifadə imkanını müəyyən edən “const” atributundan istifadə olunur.
  • Android platformasında işləmək üçün indi ən azı NDK r25 (API 19) tələb olunur, yəni. Minimum dəstəklənən Android versiyası 4.4 (KitKat) səviyyəsinə qaldırıldı.
  • Üçüncü səviyyəli dəstək Sony PlayStation Vita platforması (armv7-sony-vita-newlibeabihf) üçü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 nəşri və ya kodun tikilib-qurula bilməyəcəyini yoxlamadan.

Mənbə: opennet.ru

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