Izdanje Rust programskog jezika 1.46

Objavljeno izdanje 1.46 sistemskog programskog jezika Hrđa, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža alate za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća i runtime.

Rustovo automatsko upravljanje memorijom uklanja pogreške prilikom manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što je pristup memorijskoj regiji nakon što je oslobođena, dereferenciranje nultog pokazivača, prekoračenje međuspremnika, itd. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj, što vam omogućuje da jednim klikom dobijete biblioteke potrebne za program. Repozitorij je podržan za host knjižnica sanduci.io.

Glavni inovacije:

  • Proširene su mogućnosti funkcija definiranih izrazom "const fn", koje se mogu nazvati ne samo redovnim funkcijama, već i koristiti u bilo kojem kontekstu umjesto konstanti. Ove se funkcije izračunavaju u vrijeme prevođenja, a ne u vrijeme izvođenja, pa su podložne 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 dopušta upotrebu konstrukcija "if", "if let", "match",
    "while", "while let" i "loop", a također pruža mogućnost pretvaranja u odsječke (slice, dynamic arrays) pomoću izraza "&[T]". Korištenje ovih značajki u funkcijama "const fn" omogućuje vam premještanje nekih resursno intenzivnih operacija u fazu kompilacije. Na primjer, implementacija "const-sha1" omogućuje izračunavanje SHA-1 hashova tijekom kompajliranja, što dovodi do ubrzanja WinRT vezanja za Rust za gotovo 40 puta.

  • Kako bi poruke o pogreškama bile informativnije, stabilizirana je podrška za atribut "#[track_caller]", koji je koristan za funkcije kao što je unwrap, što može izazvati paniku ako se tipovi neispravno koriste. Navedeni atribut koristit će obrađivač panike za ispis lokacije pozivatelja u poruci pogreške.
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u metodi std::mem::forget.
  • Novi dio API-ja premješten je u stabilnu kategoriju, uključujući stabilizirane Option::zip i vec::Drain::as_slice.
  • U upravitelju paketa Cargo dodao podrška za nove varijable okoline postavljene prilikom kompajliranja paketa: CARGO_BIN_NAME (naziv rezultirajuće izvršne datoteke), CARGO_CRATE_NAME (naziv paketa), CARGO_PKG_LICENSE (licenca navedena u manifestu), CARGO_PKG_LICENSE_FILE (put do licencne datoteke).

Izvor: opennet.ru

Dodajte komentar