Versió del llenguatge de programació Rust 1.46

publicat versió 1.46 del llenguatge de programació del sistema Rovell, fundada pel projecte Mozilla. El llenguatge se centra en la seguretat de la memòria, proporciona una gestió automàtica de la memòria i proporciona eines per aconseguir un alt paral·lelisme de tasques sense utilitzar un col·lector d'escombraries i temps d'execució.

La gestió automàtica de la memòria de Rust elimina els errors en manipular punters i protegeix dels problemes derivats de la manipulació de la memòria de baix nivell, com ara l'accés a una regió de memòria després d'haver-se alliberat, desreferències de punters nuls, desbordaments de memòria intermèdia, etc. S'està desenvolupant un gestor de paquets per distribuir biblioteques, assegurar el muntatge i gestionar les dependències pel projecte. Càrrega, que us permet obtenir les biblioteques que necessiteu per al programa amb un sol clic. S'admet un dipòsit per allotjar biblioteques caixes.io.

El principal innovacions:

  • S'han ampliat les capacitats de les funcions definides amb l'expressió "const fn", que es poden anomenar no només com a funcions regulars, sinó que també s'utilitzen en qualsevol context en lloc de constants. Aquestes funcions es calculen en temps de compilació, no en temps d'execució, de manera que estan subjectes a certes restriccions, com ara la capacitat de llegir només a partir de constants.

    La nova versió elimina la prohibició d'utilitzar operadors booleans (“&&” i “||”) en aquestes funcions i permet l'ús de construccions “if”, “if let”, “concorda”.
    "while", "while let" i "loop", i també ofereix la possibilitat de convertir-se en rodanxes (slice, matrius dinàmiques) mitjançant l'expressió "&[T]". L'ús d'aquestes característiques a les funcions "const fn" us permet traslladar algunes operacions que requereixen molts recursos a l'etapa de compilació. Per exemple, la implementació de "const-sha1" permet calcular els hash SHA-1 en temps de compilació, la qual cosa condueix a accelerar els enllaços WinRT per a Rust gairebé 40 vegades.

  • Per fer que els missatges d'error siguin més informatius, s'ha estabilitzat el suport per a l'atribut "#[track_caller]", que és útil per a funcions com ara desembolicar, que pot provocar pànic si els tipus s'utilitzen incorrectament. L'atribut especificat serà utilitzat pel controlador de pànic per imprimir la ubicació de la persona que truca en un missatge d'error.
  • L'atribut "const", que determina la possibilitat d'utilitzar-lo en qualsevol context en lloc de constants, s'utilitza en el mètode std::mem::forget.
  • Una nova part de l'API s'ha mogut a la categoria estable, incloses les estabilitzades Option::zip i vec::Drain::as_slice.
  • Al gestor de paquets Cargo afegit suport per a noves variables d'entorn establertes en compilar un paquet: CARGO_BIN_NAME (nom del fitxer executable resultant), CARGO_CRATE_NAME (nom del paquet), CARGO_PKG_LICENSE (llicència especificada al manifest), CARGO_PKG_LICENSE_FILE (camí al fitxer de llicència).

Font: opennet.ru

Afegeix comentari