Rust 1.74 proqramlaşdırma dilinin buraxılışı. RustVMM auditi. Rustda Binderin yenidən yazılması

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.74 ü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:

  • Paket meneceri manifesti ilə Cargo.toml faylı vasitəsilə lint yoxlamalarını konfiqurasiya etmək imkanı əlavə edildi. Cavab səviyyəsi (qadağan etmək, inkar etmək, xəbərdarlıq etmək, icazə vermək) kimi lint parametrlərini müəyyən etmək üçün yeni “[lints]” və “[workspace.lints]” bölmələri təklif olunur ki, bunlarda dəyişikliklər haqqında qərar qəbul edilərkən nəzərə alınır. yenidən qurulması. Məsələn, “#![qadağan (təhlükəsiz_kod)]” və “#![deny(clippy) yığarkən və ya əlavə edərkən “-F”, “-D”, “-W” və “-A” bayraqlarını göstərmək əvəzinə :” kodun atributları) :enum_glob_use)]" indi Yük manifestində istifadə edilə bilər: [lints.rust] unsafe_code = "qadağan" [lints.clippy] enum_glob_use = "inkar"
  • Crate paket meneceri artıq depoya qoşulduqda identifikasiyanı dəstəkləyir. Doğrulama parametrlərinin etimadnamə anbarlarında saxlanması üçün dəstək artıq baza paketinə daxil edilmişdir. Linux (libsecret-ə əsaslanaraq), macOS (Açar zənciri) və Windows (Windows Etimadnamə Meneceri), lakin sistem əvvəldən modulyar olmaq üçün hazırlanmışdır və tokenlərin saxlanması və yaradılması üçün müxtəlif provayderlərlə işləməyə imkan verir; məsələn, 1Password parol menecerindən istifadə etmək üçün bir plagin hazırlanmışdır. Doğrulama yalnız paket nəşrlərini təsdiqləmək üçün deyil, istənilən əməliyyat üçün depo tərəfindən tələb oluna bilər. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Qayıdış tipli proqnozlar (impl_trait_projections) üçün dəstək sabitləşdi və bu, Self və T:: Assoc-un "async fn" və "->impl Trait" kimi qaytarma növlərində qeyd edilməsinə imkan verdi. struct Wrapper<'a, T>(&'a T); // `Özünü` qeyd edən qeyri-şəffaf qaytarma növləri: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */ } fn impl_trait() -> impl İterator { /* … */ } } xüsusiyyət Xarakter<'a> { növü Dos; fn new() -> Self::Dos; } impl Xarakter<'_> üçün () { növü Dos = (); fn new() {} } // Əlaqəli növü qeyd edən qeyri-şəffaf qaytarma növləri: impl<'a, T: Trait<'a>> Sarmalayıcı<'a, T> { async fn mk_assoc() -> T::Assoc { /* … */ } fn a_few_assocs() -> impl İterator { /* … */ } }
  • 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:
  • Onun sabitlər əvəzinə istənilən kontekstdə istifadə imkanını təyin edən "const" atributundan funksiyalarda istifadə olunur:
    • core::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • core::num::Doyma
    • impl From std::process::Stdio üçün
    • impl From std::process::Stdio üçün
    • impl From std::process::Child{Stdin, Stdout, Stderr} üçün
    • impl From std::process::Child{Stdin, Stdout, Stderr} üçün
    • std::ffi::OsString::from_encoded_bytes_checked
    • std::ffi::OsString::into_encoded_bytes
    • std::ffi::OsStr::from_encoded_bytes_checked
    • std::ffi::OsStr::as_encoded_bytes
    • std::io::Xəta::digər
    • impl TryFrom u16 üçün
    • impl From<&[T; N]>Vec üçün
    • impl From<&mut [T; N]>Vec üçün
    • impl From<[T; Arc<[T]> üçün N]>
    • impl From<[T; Rc<[T]> üçün N]>
  • Kompilyator, alətlər zənciri, standart kitabxana və yaradılan tətbiq icra faylları Apple platformaları üçün tələblərini artıraraq ən azı versiyalar tələb edir. macOS 10.12 Sierra, iOS 10 və tvOS 10, 2016-cı ildə buraxılmışdır.
  • Üçüncü dəstək səviyyəsi i686-pc-windows-gnullvm 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.
  • loongarch64-naməlum-none hədəf platforması üçün ikinci dəstək səviyyəsi həyata keçirilib. İkinci səviyyəli dəstək montaj zəmanətini əhatə edir.

Bundan əlavə, Rust dili ilə bağlı iki hadisəni qeyd etmək olar:

  • Açıq mənbə layihələrinin təhlükəsizliyini gücləndirmək üçün yaradılan Açıq Mənbə Texnologiyalarının Təkmilləşdirilməsi Fondu (OSTIF), tapşırıqlara uyğun hipervizorlar və monitorlar yaratmaq üçün komponentlər təmin edən RustVMM layihəsinin auditinin nəticələrini dərc edib. virtual maşınlar (VMM). Intel, Alibaba, Amazon, Google, Linaro və Red Hat kimi şirkətlər layihənin hazırlanmasında iştirak edirlər. Intel Cloud Hypervisor və Dragonball hipervisorları RustVMM üzərində hazırlanmışdır. Audit kod bazasının yüksək keyfiyyətini və arxitektura və tətbiqdə təhlükəsizliyi artıran üsulların istifadəsini təsdiqlədi. Audit təhlükəsizliyə birbaşa təsir etməyən altı məsələni müəyyən etdi.
  • Google, nüvə geliştiriciləri üçün poçt siyahısı təqdim etdi Linux Rust-da yenidən yazılmış Binder proseslərarası rabitə mexanizminin yeni bir tətbiqi. Bu yenidən işlənmə təhlükəsizliyi artırmaq, təhlükəsiz proqramlaşdırma təcrübələrini təşviq etmək və yaddaş problemlərini aşkar etməyin səmərəliliyini artırmaq layihəsinin bir hissəsi idi. Android (müəyyən edilmiş bütün təhlükəli zəifliklərin təxminən 70%-i) Android, yaddaşın işlənməsindəki səhvlərdən qaynaqlanır). Rust-dakı Binder tətbiqi orijinal C versiyası ilə funksionallıq baxımından paritetə ​​nail olub və bütün AOSP testlərindən keçib (Android Açıq Mənbə Layihəsi) və işləyən proqram təminatı versiyalarını yaratmaq üçün istifadə edilə bilər. Hər iki tətbiqin performansı təxminən eynidir (-1.96% və +1.38% arasında sapmalar).

Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster