Versió del llenguatge de programació Rust 1.68

S'ha publicat el llançament del llenguatge de programació de propòsit general Rust 1.68, fundat pel projecte Mozilla, però ara desenvolupat sota els auspicis de l'organització independent sense ànim de lucre Rust Foundation. El llenguatge se centra en la seguretat de la memòria i proporciona els mitjans per aconseguir un alt paral·lelisme de treballs evitant l'ús d'un col·lector d'escombraries i el temps d'execució (el temps d'execució es redueix a la inicialització bàsica i al manteniment de la biblioteca estàndard).

Els mètodes de gestió de memòria de Rust estalvien al desenvolupador d'errors en manipular els punters i protegeixen dels problemes que sorgeixen a causa del maneig de la memòria de baix nivell, com ara accedir a una àrea de memòria després d'haver-se alliberat, desreferenciar punters nuls, desbordaments de memòria intermèdia, etc. Per distribuir biblioteques, proporcionar compilacions i gestionar dependències, el projecte desenvolupa el gestor de paquets Cargo. El repositori crates.io és compatible per allotjar biblioteques.

La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la comprovació de referències, el seguiment de la propietat de l'objecte, el seguiment de la vida útil dels objectes (àmbits) i l'avaluació de la correcció de l'accés a la memòria durant l'execució del codi. Rust també proporciona protecció contra desbordaments d'enters, requereix la inicialització obligatòria dels valors de les variables abans de l'ús, gestiona millor els errors a la biblioteca estàndard, aplica el concepte de referències i variables immutables per defecte, ofereix una escriptura estàtica forta per minimitzar els errors lògics.

Principals innovacions:

  • El gestor de paquets Cargo i el repositori crates.io han estabilitzat el suport per al protocol Sparse, que defineix una nova forma de treballar amb un índex que reflecteix les versions disponibles de tots els paquets existents al repositori. El nou protocol us permet augmentar significativament la velocitat de treball amb crates.io i resoldre problemes d'escala amb un major creixement del nombre de paquets al dipòsit.

    Per reduir els retards causats per la descàrrega d'un índex complet, Sparse en comptes d'accedir a l'índex mitjançant Git implica la descàrrega directa a través d'HTTPS només de les dades d'índex necessàries, que cobreixen les dependències d'un projecte concret. S'utilitza un servei nou, index.crates.io, per proporcionar dades d'índex. Per defecte, està previst que el nou protocol s'utilitzi a la branca Rust 1.70, i abans, per habilitar-lo, podeu establir la variable d'entorn "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=esparce" o afegir el paràmetre "protocol =" al "[registres. crates-io]" del fitxer .cargo/config.toml 'esparce'.

  • S'ha afegit la macro "pin!", que us permet crear una estructura Pin<&mut T> a partir de l'expressió "T" amb fixació local del seu estat (a diferència de Box::pin, no assigna memòria al munt, sinó que s'enllaça). a nivell de pila).
  • S'ha proposat un gestor d'errors d'assignació de memòria per defecte, utilitzat quan s'utilitza el paquet alloc estàndard. Les aplicacions que només habiliten alloc (sense std) ara trucaran al controlador "panic!" quan falla l'assignació de memòria, que opcionalment es pot interceptar mitjançant "#[panic_handler]". Els programes que utilitzen la biblioteca std continuaran imprimint informació d'error a stderr i es bloquejaran.
  • Una nova part de l'API s'ha mogut a la categoria d'estable, inclosos els mètodes i les implementacions de trets s'han estabilitzat:
    • {core,std}::pin::pin!
    • impl De per a {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut per a PathBuf
  • L'atribut "const", que determina la possibilitat d'utilitzar-lo en qualsevol context en lloc de constants, s'utilitza a la funció VecDeque::new.
  • Per treballar a la plataforma Android, ara cal com a mínim NDK r25 (API 19), és a dir. La versió mínima admesa d'Android s'ha elevat a 4.4 (KitKat).
  • El tercer nivell de suport s'ha implementat per a la plataforma Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). El tercer nivell inclou el suport bàsic, però sense proves automatitzades, publicar compilacions oficials o comprovar si es pot crear el codi.

Font: opennet.ru

Afegeix comentari