Lansarea limbajului de programare Rust 1.43

publicat lansarea limbajului de programare a sistemului Rugina 1.43, fondată de proiectul Mozilla. Limbajul se concentrează pe siguranța memoriei, oferă gestionarea automată a memoriei și oferă instrumente pentru realizarea unui paralelism ridicat al sarcinilor fără a utiliza un colector de gunoi și Runtime.

Gestionarea automată a memoriei Rust eliberează dezvoltatorul de manipularea pointerului și protejează împotriva problemelor care decurg din manipularea memoriei de nivel scăzut, cum ar fi accesările la memorie după eliberarea, dereferențele pointerului nul, depășirile de buffer și altele asemenea. Se dezvoltă un manager de pachete pentru a distribui biblioteci, a asigura asamblarea și a gestiona dependențele de către proiect. încărcătură, permițându-vă să obțineți bibliotecile necesare pentru program cu un singur clic. Un depozit este acceptat pentru a găzdui biblioteci lăzi.io.

Principalul inovații:

  • Macro-urile oferă posibilitatea de a folosi fragmente de elemente pentru a le transforma în cod pentru trăsături (trăsătură), implementări (impl) sau blocuri externe. De exemplu:

    macro_reguli! mac_trait {
    ($i:item) => {
    trasatura T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Va duce la generare:

    trasatura T {
    fn foo() {}
    }

  • Detectarea tipului îmbunătățită a primitivelor, referințelor și operațiilor binare.
    De exemplu, următorul cod, care anterior a provocat o eroare, va putea acum să fie compilat (Rugina acum stabilește corect că 0.0 și &0.0 trebuie să fie de tip f32):

    fie n: f32 = 0.0 + &0.0;

  • O nouă variabilă de mediu CARGO_BIN_EXE_{nume} a fost adăugată la Cargo, care este setată la construirea testelor de integrare și vă permite să determinați calea completă către fișierul executabil definit în secțiunea „[[bin]]” a pachetului.
  • Dacă instrucțiunilor li se permite să utilizeze atribute precum „#[cfg()]”.
  • Biblioteca oferă posibilitatea de a utiliza constante asociate direct pentru tipurile întregi și fracționale, fără a importa un modul. De exemplu, puteți scrie imediat u32::MAX sau f32::NAN fără a specifica mai întâi „use std::u32” și „use std::f32”.
  • S-a adăugat un nou modul primitiv, care reexportă tipurile primitive Rust, de exemplu atunci când trebuie să scrieți o macrocomandă și să vă asigurați că tipurile nu sunt ascunse.
  • O nouă parte a API-urilor a fost transferată în categoria stabilă, inclusiv stabilizat

    Odată ce::este_terminat,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 și
    iter::o dată_cu.

Sursa: opennet.ru

Adauga un comentariu