Rust 1.62 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.62 ü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:

  • “Yük” paket meneceri Cargo.toml manifestinə yeni asılılıqlar əlavə etməyə və ya komanda xəttindən mövcud asılılıqları dəyişdirməyə imkan verən “əlavə et” əmrini təklif edir. Əmr həmçinin fərdi xüsusiyyətləri və versiyaları təyin etməyə imkan verir, məsələn: yük əlavə serde — funksiyalar yük əlavə etmək nom@5
  • Defolt seçimin “#[default]” atributundan istifadə edilməklə müəyyən edildiyi nömrələrlə “#[türə(Default)]” istifadə etmək imkanı əlavə edildi. #[alınmaq(Defolt)] nömrə Bəlkə { #[defolt] Heç bir şey, bir şey(T), }
  • Linux platformasında Mutex sinxronizasiya mexanizminin daha yığcam və daha sürətli tətbiqi Linux nüvəsi tərəfindən təmin edilən futekslərin istifadəsinə əsaslanır. Əvvəllər pthreads kitabxanasına əsaslanan tətbiqdən fərqli olaraq, yeni versiya Mutex vəziyyətini saxlamaq üçün 5 əvəzinə yalnız 40 baytdan istifadə edir.Oxşar şəkildə Condvar və RwLock kilidləmə mexanizmləri futex-ə köçürülüb.
  • Əməliyyat sistemi olmadan işləyə bilən icra edilə bilən fayllar yaratmaq üçün nəzərdə tutulmuş x86_64-naməlum-none hədəf platforması üçün ikinci səviyyəli dəstək tətbiq edilmişdir. Məsələn, kernel komponentləri yazarkən göstərilən hədəf platformadan istifadə edilə bilər. İkinci səviyyəli dəstək montaj zəmanətini əhatə edir.
  • Üçüncü dəstək səviyyəsi aarch64-pc-windows-gnullvm və x86_64-pc-windows-gnullvm 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.
  • 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:
    • bool::sonra bəzi
    • f32::total_cm
    • f64::total_cm
    • Stdin :: xətləri
    • windows::CommandExt::raw_arg
    • impl AssertUnwindSafe üçün standart dəyər
    • From > Rc üçün
    • From > Arc<[u8]> üçün
    • EncodeWide üçün FusedIterator

    Mənbə: opennet.ru

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