Rust 1.65 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.65 ü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:

  • Ümumi əlaqəli növlər üçün əlavə dəstək (GAT, Generic Associated Types) başqa tiplə əlaqəli tip ləqəbləri yaratmağa imkan verir və tip konstruktorlarını əlamətlərlə əlaqələndirməyə imkan verir. trait Foo { növü Bar<'x>; }
  • “Let ... else” ifadəsi tətbiq edilmişdir ki, bu, nümunə uyğunluğu şərtini birbaşa “let” ifadəsinin daxilində yoxlamağa və nümunə uyğun gəlmədikdə ixtiyari kodu icra etməyə imkan verir. let Ok(count) = u64::from_str(count_str) else { panik!("Tam ədədi təhlil etmək mümkün deyil: '{count_str}'"); };
  • Sonlandırılacaq bloku müəyyən etmək üçün blok adından (etiketindən) istifadə edərək, adlandırılmış bloklardan vaxtından əvvəl çıxmaq üçün fasilə bəyanatının istifadəsinə icazə verin. let result = 'blok: { do_thing(); if condition_not_met() { break 'blok 1; } do_next_thing(); if condition_not_met() { break 'blok 2; } do_son_thing(); 3 };
  • Linux üçün əvvəllər yalnız macOS platforması üçün mövcud olan sazlama məlumatını (split-debuginfo) ayrıca saxlamaq imkanı əlavə edilib. "-Csplit-debuginfo=unpacked" seçimini təyin edərkən, DWARF formatında debuginfo datası ".dwo" uzantısı olan bir neçə ayrı obyekt faylında saxlanacaq. "-Csplit-debuginfo=packed" təyin edilməsi layihə üçün bütün debuginfo məlumatlarını özündə birləşdirən ".dwp" formatında tək paket yaradacaq. Debuginfo-nu birbaşa ELF obyektlərinin .debug_* bölməsinə inteqrasiya etmək üçün siz "-Csplit-debuginfo=off" seçimindən istifadə edə bilərsiniz.
  • 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:
    • std::backtrace::Backtrace
    • Bağlanmış ::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Onu sabitlər əvəzinə istənilən kontekstdə istifadə etmək imkanını təyin edən “const” atributu <*const T&>::offset_from və <*mut T>::offset_from funksiyalarında istifadə olunur.
  • LSP (Language Server Protocol) protokolunun tətbiqinin pas-analizatora ötürülməsinin son mərhələsinin bir hissəsi olaraq, Rust Language Server (RLS)-nin köhnəlmiş tətbiqi keçid təklifi ilə xəbərdarlıq edən stub server ilə əvəz edilmişdir. pas analizatorundan istifadə etməklə.
  • Kompilyasiya zamanı MIR aralıq kodunun daxili yerləşdirilməsi dəstəyi aktivləşdirilir ki, bu da tipik sandıq paketlərinin tərtibini 3-10% sürətləndirir.
  • Planlaşdırılmış tikinti işlərini sürətləndirmək üçün Yük paketi meneceri növbədə icrasını gözləyən işlərin çeşidlənməsini təmin edir.

Əlavə olaraq, avtomobil məlumat sistemlərinin komponentlərini hazırlamaq üçün Volvo-da Rust dilinin istifadəsi ilə bağlı müsahibəni qeyd edə bilərsiniz. Rust-da mövcud və sınaqdan keçirilmiş kodu yenidən yazmaq planları yoxdur, lakin yeni kod üçün Rust daha aşağı xərclərlə keyfiyyəti yaxşılaşdırmaq üçün üstünlük verilən variantlardan biridir. AUTOSAR (Avtomobil Açıq Sistemi Architecture) və SAE (Avtomobil Mühəndisləri Cəmiyyəti) avtomobil birliklərində də Rust dilinin istifadəsi ilə bağlı işçi qruplar yaradılmışdır.

Bundan əlavə, Google-un mühəndislik üzrə vitse-prezidenti David Kleidermacher şifrələmə açarlarını Rust-a idarə etmək üçün Android platformasında istifadə olunan kodun tərcüməsi, həmçinin stekdə HTTPS protokolu üzərindən DNS-in həyata keçirilməsində Rust-dan istifadə haqqında danışıb. UWB- çipləri (Ultra-Genişzolaqlı) və Tensor G2 çipi ilə əlaqəli virtuallaşdırma çərçivəsində (Android Virtualizasiya Çərçivəsi) üçün. Rust-da yenidən yazılmış Bluetooth və Wi-Fi üçün yeni yığınlar Android üçün də hazırlanır. Ümumi strategiya əvvəlcə ən həssas və həyati vacib proqram komponentlərini Rust-a çevirməklə, sonra isə digər əlaqəli alt sistemlərə genişləndirməklə təhlükəsizliyi tədricən gücləndirməkdir. Keçən il Rust dili Android platformasının inkişafı üçün icazə verilən dillər siyahısına daxil edildi.

Mənbə: opennet.ru

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