Programski jezik Rust 1.46 izdanje

objavljeno izdanje 1.46 sistemskog programskog jezika rđa, osnovan od strane Mozilla projekta. Jezik se fokusira na sigurnost memorije, pruža automatsko upravljanje memorijom i pruža alate za postizanje visokog paralelizma zadataka bez korištenja sakupljača smeća i runtime.

Rustovo automatsko upravljanje memorijom eliminiše greške prilikom manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom na niskom nivou, kao što je pristup memorijskom regionu nakon što je on oslobođen, nulte reference pokazivača, prekoračenje bafera itd. Razvija se menadžer paketa za distribuciju biblioteka, osiguravanje sklapanja i upravljanje ovisnostima od strane projekta. teret, što vam omogućava da jednim klikom dobijete biblioteke potrebne za program. Podržano je spremište za hostiranje biblioteka crates.io.

Glavni inovacije:

  • Proširene su mogućnosti funkcija definiranih izrazom “const fn”, koje se mogu pozvati ne samo kao regularne funkcije, već se i koristiti u bilo kojem kontekstu umjesto konstantama. Ove funkcije se izračunavaju u vrijeme kompajliranja, a ne u vrijeme izvođenja, tako da podliježu određenim ograničenjima, kao što je mogućnost čitanja samo iz konstanti.

    Novo izdanje uklanja zabranu korištenja Booleovih operatora (“&&” i “||”) u takvim funkcijama i dozvoljava korištenje konstrukcija “if”, “if let”, “match”,
    "while", "while let" i "loop", a također pruža mogućnost pretvaranja u rezove (slice, dinamički nizovi) koristeći izraz "&[T]". Upotreba ovih funkcija u funkcijama “const fn” omogućava vam da neke operacije koje zahtijevaju velike resurse premjestite u fazu kompilacije. Na primjer, implementacija "const-sha1" omogućava izračunavanje SHA-1 heševa u vrijeme kompajliranja, što dovodi do ubrzavanja WinRT veza za Rust za skoro 40 puta.

  • Kako bi poruke o greškama bile informativnije, podrška za atribut “#[track_caller]” je stabilizirana, što je korisno za funkcije kao što je unwrap, što može izazvati paniku ako se tipovi koriste pogrešno. Navedeni atribut će koristiti rukovalac panikom za ispis lokacije pozivatelja u poruci o grešci.
  • Atribut “const”, koji određuje mogućnost njegove upotrebe u bilo kojem kontekstu umjesto konstanti, koristi se u metodi std::mem::forget.
  • Novi dio API-ja je premješten u stabilnu kategoriju, uključujući stabiliziranu Option::zip i vec::Drain::as_slice.
  • U paket menadžeru Cargo dodano podrška za nove varijable okruženja postavljene prilikom kompajliranja paketa: CARGO_BIN_NAME (ime rezultirajuće izvršne datoteke), CARGO_CRATE_NAME (naziv paketa), CARGO_PKG_LICENSE (licenca navedena u manifestu), CARGO_PKG_LICENSE_FILE (put do datoteke licence).

izvor: opennet.ru

Dodajte komentar