Versió del llenguatge de programació Rust 1.54

S'ha publicat el llançament del llenguatge de programació del sistema Rust 1.54, 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, proporciona una gestió automàtica de la memòria i proporciona els mitjans per aconseguir un paral·lelisme de tasques elevat sense utilitzar un col·lector d'escombraries o temps d'execució (el temps d'execució es redueix a la inicialització i manteniment bàsics de la biblioteca estàndard).

La gestió automàtica de la memòria de Rust estalvia al desenvolupador d'errors en manipular punters i protegeix dels problemes que sorgeixen a causa de la manipulació de la memòria de baix nivell, com ara accedir a una àrea de memòria després d'haver estat alliberada, 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.

Principals innovacions:

  • S'ha afegit la possibilitat d'utilitzar macros semblants a funcions dins dels atributs (macros de procediment i macros creades amb la macro "macro_rules!"). Aquestes macros es distingeixen de les funcions pel símbol "!" després del nom (macro!(...)) i substituint el text font de la macro en lloc de generar una crida de funció. Cridar macros dins dels atributs pot ser útil per incloure contingut d'altres fitxers en la documentació dels comentaris. Per exemple, per inserir el contingut del fitxer README i el resultat de l'execució de l'script, podeu especificar: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR") "), "/generated.rs" )] mod generat;
  • S'han estabilitzat les funcions del compilador incorporades (intrínses) per a la plataforma wasm32, permetent l'ús d'instruccions SIMD a WebAssembly. La majoria de funcions, com ara v128_bitselect, estan disponibles en mode "segur", però algunes funcions que funcionen amb punters (per exemple, v128_load) segueixen sent "insegures".
  • S'ha tornat l'ús predeterminat de la compilació incremental, que us permet reconstruir només les parts modificades del codi, la qual cosa pot reduir significativament el temps que triga a construir un projecte quan es recompilen després de fer canvis menors. La compilació incremental es va desactivar a la versió 1.52.1 a causa d'errors ocults que van aparèixer després d'afegir una comprovació addicional per carregar dades de la memòria cau del disc.
  • S'ha transferit una nova part de les API a la categoria estable, inclosa la següent estabilitzada:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arc::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Opcions afegides a cargo-tree: “—prune " per eliminar un paquet del gràfic de dependències, "-depth" per mostrar només elements d'un nivell d'imbricació donat a l'arbre de dependències, "-edges no-proc-macro" per ocultar les dependències de macro procedimentals.

Font: opennet.ru

Afegeix comentari