Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Rust 1.44.0 est disponible et apporte la commande cargo tree à Cargo
Pour l'impression d'un graphe arborescent des dépendances

Le , par Stéphane le calme

11PARTAGES

10  0 
L’équipe Rust a publié une nouvelle version de Rust, la version 1.44.0. Le billet de blog, dont la longueur est extrêmement courte, est marqué par l’actualité américaine :

« Il s'agit d'un article de blog plus court que d'habitude: reconnaissant qu'il est plus important de prendre position contre la brutalité policière qui sévit actuellement aux États-Unis et dans le monde que de partager les connaissances technologiques, nous avons décidé de réduire considérablement la quantité promotionnelle que nous faisons pour cette version.

« L'équipe Rust Core estime que la technologie est et sera toujours politique, et nous encourageons tout le monde à prendre le temps aujourd'hui de se renseigner sur les inégalités raciales et de soutenir le mouvement Black Lives Matter ».

Comme le souligne l’équipe, cette version de Rust n’est pas une mise à jour majeure. Néanmoins, nous pouvons noter quelques points intéressants.

L’ajout de la commande cargo tree qui va imprimer un graphe arborescent de vos dépendances. Par exemple

mdbook v0.3.2 (/Users/src/rust/mdbook)
├── ammonia v3.0.0
│ ├── html5ever v0.24.0
│ │ ├── log v0.4.8
│ │ │ └── cfg-if v0.1.9
│ │ ├── mac v0.1.1
│ │ └── markup5ever v0.9.0
│ │ ├── log v0.4.8 (*)
│ │ ├── phf v0.7.24
│ │ │ └── phf_shared v0.7.24
│ │ │ ├── siphasher v0.2.3
│ │ │ └── unicase v1.4.2
│ │ │ [build-dependencies]
│ │ │ └── version_check v0.1.5
Vous pouvez également afficher les dépendances sur plusieurs versions du même Cargo avec la commande cargo tree -d (pour cargo tree --duplicates).


Côté compatibilité
  • Rustc génère désormais correctement les bibliothèques statiques sur les cibles GNU Windows avec l'extension .a, plutôt que le précédent .lib.
  • Suppression du drapeau -C no_integrated_as de rustc.
  • La propriété file_name dans la sortie JSON des erreurs de macro pointe désormais le fichier source réel plutôt que le format précédent de . Remarque: cela peut ne pas pointer vers un fichier qui existe réellement sur le système de l'utilisateur.
  • La version LLVM externe minimale requise a été transférée vers LLVM 8.
  • mem::{zeroed, uninitialised} va maintenant signaler des erreurs système lorsqu'il est utilisé avec des types qui n'autorisent pas l'initialisation à zéro tels que NonZeroU8. Auparavant, cela générait un avertissement.
  • Dans la version 1.45.0 (la prochaine version), la conversion d'un f64 en u32 à l'aide de l'opérateur as a été définie comme une opération de saturation. Ce comportement n'était pas défini auparavant, vous pouvez utiliser les méthodes {f64, f32}::to_int_unchecked pour continuer à utiliser le comportement actuel qui peut être souhaitable dans de rares situations sensibles aux performances.

Langage
  • Vous pouvez maintenant utiliser async/.await avec #[no_std] activé.
  • Cette version s’accompagne de l’ajout du lint unused_braces.

Modifications affectant la syntaxe uniquement

Rust 1.4.4 s’accompagne de l’analyse syntaxique du module hiérarchique

Code Rust : Sélectionner tout
1
2
3
4
5
6
#[cfg(FALSE)] 
mod foo { 
    mod bar { 
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error! 
    } 
}

Ceux-ci sont toujours rejetés sémantiquement, vous recevrez donc probablement une erreur, mais ces modifications peuvent être vues et analysées par les macros et la compilation conditionnelle.

Bibliothèque
  • vec![] va mapper directement à Vec::new(). Cela permet à vec![] D'être utilisé dans des contextes const.
  • convert::Infallible implémente désormais Hash
  • OsString implémente désormais DerefMut et IndexMut retourne un &mut OsStr.
  • Unicode13 est désormais supporté
  • String implémente désormais From<&mut str>.
  • IoSlice implémente désormais Copy.
  • Vec implémente désormais From<[T; N]>. Où N peut prendre la valeur 32 au maximum.
  • proc_macro::LexError implémente désormais fmt::Display et Error.

Parmi les API passés en version stable, nous pouvons citer :
  • PathBuf::with_capacity
  • PathBuf::capacity
  • PathBuf::clear
  • PathBuf::reserve
  • PathBuf::reserve_exact
  • PathBuf::shrink_to_fit
  • f32::to_int_unchecked
  • f64::to_int_unchecked
  • Layout::align_to
  • Layout::pad_to_align
  • Layout::array
  • Layout::extend

Source : billet Rust, référentiel Rust (GitHub)

Une erreur dans cette actualité ? Signalez-le nous !