Versió del llenguatge de programació Rust 1.44

publicat llançament del llenguatge de programació del sistema Rovell 1.44, 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.

En el text de l'anunci de la nova versió, els desenvolupadors de Rust es van involucrar en la política i es van negar expressament a publicar una revisió completa dels canvis a Rust 1.44 com a mostra de solidaritat amb els manifestants contra la violència policial, indicant que aquest tema és més important. que l'intercanvi de coneixements tècnics. Bàsic innovacions:

  • El gestor de paquets Cargo integra l'ordre "arbre de càrrega", que mostra un gràfic de dependència semblant a un arbre. També s'afegeix l'opció “—duplicates” (“arbre de càrrega -d”), que permet avaluar les dependències en diferents versions del mateix paquet.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoníac v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── registre v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── registre v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [dependències de creació] │ │ │ └── version_check v0.1.5
    ...

  • Per a les aplicacions no vinculades a un std ("#![no_std]"), el suport per a tècniques de programació asíncrona s'implementa basant-se en la funció "async", el bloc de moviment asincrònic { ... } i l'operador ".await", que simplificar l'escriptura del flux d'ordres principal dels controladors que no bloquegen.
  • S'ha afegit suport per a un esquema de definició de jerarquia de mòduls extensible a l'analitzador. Per exemple, la construcció següent no produirà cap error, malgrat l'absència real del mòdul "foo/bar/baz.rs" (la construcció encara no és vàlida semànticament i pot provocar un error, però els canvis es poden veure i analitzar a el nivell de compilació macro i condicional):

    #[cfg(FALSE)] mod foo {
    barra de modificacions {
    mod baz;
    }
    }

  • El compilador rustc ha afegit la possibilitat d'utilitzar la marca "-C codegen-units" en mode incremental. La implementació de catch_unwind s'ha reelaborat perquè no tingui cap impacte en el rendiment si el procés de desenrotllament està desactivat i no es produeixen excepcions.
  • S'ha proporcionat suport de nivell 64 per a les plataformes aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos i x64_XNUMX-apple-tvos. El tercer nivell implica suport bàsic, però sense proves automatitzades i publicació de compilacions oficials.
  • Una nova part de les API s'ha transferit a la categoria estable, inclosa la estabilitzada
    PathBuf::with_capacity,
    PathBuf::capacitat,
    PathBuf::clar,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array i
    Disseny::ampliar.

  • Funcions ampliades de la biblioteca estàndard:
    • S'ha afegit una variant especial "vec![]" que es reflecteix directament a Vec::new(), permetent que "vec![]" s'utilitzi en context en lloc de constants.
    • S'ha afegit una implementació (impl) del tret per convertir::Infalible Picadillo.
    • OsString implementa punters intel·ligents DerefMut и IndexMut, retornant "&mut OsStr".
    • S'ha afegit suport per a Unicode 13.
    • Implementat a String Des de.
    • IoSlice implementa el tret Copiar.
    • Vec implementa From.
    • proc_macro::LexError implementa fmt::Display i Error.
  • L'atribut "const", que determina si es pot utilitzar en qualsevol context en lloc de constants, s'utilitza en els mètodes from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes i to_ne_bytes per a tots els tipus d'enters.
  • S'ha afegit suport per generar biblioteques estàtiques en format ".a" en lloc de ".lib" per a plataformes GNU a Windows.
  • Els requisits mínims per a LLVM s'han elevat a la versió 8 de LLVM.

Font: opennet.ru

Afegeix comentari