L'équipe Rust a annoncé la disponibilité de Rust 1.60.0, elle permettra Contrôle du code à la source, de stabiliser la prise en charge de la collecte d'informations sur la construction avec l'indicateur –timings et apporte une Nouvelle syntaxe pour les fonctionnalités de Cargo. Avec Rust 1.60, la compilation incrémentale est réactivée.Rappelons que Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research, avec la contribution du créateur de JavaScript Brendan Eich. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.
Notons également qu’en début d’année dernière, AWS, Huawei, Google, Microsoft et Mozilla se sont associés pour lancer la fondation Rust et se sont engagés à lui consacrer un budget de deux ans à hauteur d'un million de dollars. Ce budget permettra au projet de développer des services, des programmes et des événements qui aideront les responsables du projet Rust à développer le meilleur Rust possible.
L'annonce a été faite par Ashley Williams, Directeur exécutif par intérim de la fondation, le 8 février sur le site Internet de l'organisation. « Aujourd'hui, au nom de l'équipe de Rust, je suis heureux d'annoncer la création de la Fondation Rust, une nouvelle organisation indépendante à but non lucratif chargée de gérer le langage de programmation et l'écosystème Rust, en mettant l'accent sur le soutien de l'ensemble des responsables qui régissent et développent le projet ».
Outre l'arrivée de nouveaux talents dans son équipe Rust, Facebook a également annoncé qu'elle rejoignait officiellement la Fondation Rust. « Facebook Open Source est heureux d'annoncer son soutien à la fondation Rust en qualité de membre important. Aux côtés des autres membres de la fondation, Facebook s'engage à soutenir et à faire croître l'écosystème et la communauté open source Rust », a indiqué Facebook sur son blog.
Faisant référence à un cours récemment publié par Microsoft sur les premiers pas avec Rust, Miguel de Icaza, ingénieur distingué de Microsoft a tweeté : « le Rustening a commencé chez Microsoft ». Ce que la plupart des adeptes de Rust sur Twitter voient comme un signe que l'entreprise augmente encore ses faveurs pour son langage de prédilection. Bien sûr, ce n'est pas la première fois que Microsoft se tourne vers Rust pour gérer les 70 % de vulnérabilités de Microsoft qui, selon l'entreprise, proviennent de l'utilisation du langage de programmation C++, peu sûr pour la mémoire, dans ses logiciels.
Contrôle du code à la source
Le support de l'instrumentation de couverture basée sur LLVM a été stabilisé dans rustc. Vous pouvez l'essayer sur votre code en reconstruisant votre code avec -Cinstrument-coverage, par exemple comme ceci :
RUSTFLAGS="-C instrument-coverage" cargo build
Après cela, il est possible d'exécuter le binaire résultant, qui produira un fichier default.profraw dans le répertoire courant. (Le chemin et le nom de fichier peuvent être remplacés par une variable d'environnement ; voir la documentation pour plus de détails). Le composant llvm-tools-preview comprend llvm-profdata pour le traitement et la fusion de la sortie brute du profil (comptes d'exécution des régions de couverture) ; et llvm-cov pour la génération de rapports. llvm-cov combine la sortie traitée, provenant de llvm-profdata, et le binaire lui-même, parce que le binaire incorpore un mappage des compteurs aux régions réelles du code source.
| Code : | Sélectionner tout |
1 2 3 4 5 6 | rustup component add llvm-tools-preview
$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-profdata merge -sparse default.profraw -o default.profdata
$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-cov show -Xdemangler=rustfilt target/debug/coverage-testing \
-instr-profile=default.profdata \
-show-line-counts-or-regions \
-show-instantiations |
Les commandes ci-dessus sur un simple binaire helloworld produisent ce rapport annoté, montrant que chaque ligne de l'entrée a été couverte.
| Code : | Sélectionner tout |
1 2 3 4 |
1| 1|fn main() {
2| 1| println!("Hello, world!");
3| 1|} |
cargo –timings
Cargo a stabilisé la prise en charge de la collecte d'informations sur la construction avec l'indicateur --timings.
| Code : | Sélectionner tout |
1 2 3 4 | $ cargo build --timings
Compiling hello-world v0.1.0 (hello-world)
Timing report saved to target/cargo-timings/cargo-timing-20220318T174818Z.html
Finished dev [unoptimized + debuginfo] target(s) in 0.98s |
Le rapport est également copié dans target/cargo...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.