Voir le flux RSS

Songbird_

[Actualité] La version 1.12 de Rust est désormais disponible !

Note : 4 votes pour une moyenne de 5,00.
par , 10/10/2016 à 09h41 (360 Affichages)
La dernière version en date de Rust (1.12) a été annoncée sur le blog officiel de l'équipe le 29 septembre dernier, apportant par la même occasion son lot de nouveautés.

Nom : rust_icon.jpg
Affichages : 2070
Taille : 14,9 Ko

Quelles sont les nouvelles ?

De gros efforts ont été fournis sur le compilateur ainsi que les informations qu'il partage avec les développeurs pour rendre ces dernières plus intelligibles et ainsi faciliter le débogage des projets.

Design des erreurs revu

Jusqu'ici, les messages renvoyés par le compilateur (bien que très explicites et verbeux) étaient assez peu intelligibles pour son lecteur, forçant très souvent le développeur à parcourir l'intégralité de la trace pour trouver les lignes incriminées.
Bien que sur de petits projets le problème ne soit pas de taille, cela peut devenir très gênant lorsqu'un programme dispose de nombreuses assertions.

Pour remarquer les différences majeures, voici quelques exemples d'erreurs fournies par les versions de rustc inférieures à 1.12:

<= 1.11

Nom : r_old_errors.png
Affichages : 1428
Taille : 104,9 Ko

Nom : r_old-mismatched-trait-error.png
Affichages : 1403
Taille : 11,9 Ko

Formatage des erreurs par la version 1.12 de rustc:

^1.12

Nom : r_new_errors.png
Affichages : 1412
Taille : 26,4 Ko

Nom : r_mismatched-trait-error.png
Affichages : 1406
Taille : 12,2 Ko

Bien que les anciennes traces d'erreurs étaient compréhensibles, les nouvelles conservent uniquement l'essentiel pour déboguer efficacement les éléments incriminés; Nous remarquerons également que le compilateur sollicite davantage le "soulignement" (^^^).

Renvoi de la trace au format json

Il vous est désormais possible également de procéder à la génération de la trace d'erreurs au format json, vous permettant ainsi de l'utiliser comme bon vous semble. (l'auteur cite, d'ailleurs, comme exemple l'exploitation du format json par les futurs IDE dédiés à Rust)
Pour se faire il vous suffit de passer le flag --error-format=json comme ceci:

[commande tirée de l'annonce officielle]

Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
$ rustc borrowck-assign-comp.rs --error-format=json
Sortie standard:
Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
{"message":"cannot assign to `p.x` because it is borrowed","level":"error","spans":[{"file_name":"borrowck-assign-comp.rs","byte_start":562,"byte_end":563,"line_start":15,"line_end":15,"column_start":14,"column_end":15,"is_primary":false,"text":[{"text":"    let q = &p;","highlight_start":14,"highlight_end":15}],"label":"borrow of `p.x` occurs here","suggested_replacement":null,"expansion":null}],"label":"assignment to borrowed `p.x` occurs here","suggested_replacement":null,"expansion":null}],"children":[],"rendered":null}
{"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":null}

Vous souhaiteriez en savoir davantage à ce propos ? N'hésitez pas à visiter la page "Shape of errors to come" qui présentait en avril les fonctionnalités à venir au sein du langage.

Implémentation de la génération de code MIR

La seconde fonctionnalité majeure introduite dans cette nouvelle version est bien évidemment l'ajout d'un niveau d'analyse au sein du compilateur; rustc est désormais muni d'un second niveau de traduction du code source vers le code machine pour effectuer des optimisations supplémentaires avant de le convertir définitivement en binaire: la génération de code MIR(=Mid-level intermediate representation).

Le sujet disposant déjà d'un document très complet s'attelant à expliquer, de manière très exhaustive, tous les rouages internes du compilateur, je vous invite à vous y rendre si le fonctionnement de rustc vous intéresse.

Pour reprendre le schéma du document officiel, voici à quoi pourrait ressembler le compilateur d'aujourd'hui:

Nom : flow.png
Affichages : 1494
Taille : 33,4 Ko

Liens:
Annonce officielle
La page Shape Of errors to come
Introduction au MIR
Release note

Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Viadeo Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Twitter Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Google Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Facebook Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Digg Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Delicious Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog MySpace Envoyer le billet « La version 1.12 de Rust est désormais disponible ! » dans le blog Yahoo

Mis à jour 10/10/2016 à 12h47 par Michael Guilloux

Catégories
Programmation

Commentaires

  1. Avatar de gros_bidule
    • |
    • permalink
    Il ne manque plus qu'un vrai IDE "lourd" (dans le sens : truffé de fonctionnalités d'assistance, et pas un truc light à la Visual Studio Code).
    Y'a bien un plugin IntelliJ en cours, mais ce n'est pas encore ça.
  2. Avatar de Zefling
    • |
    • permalink
    Ils se servent de quoi ceux qui codent Servo ?
  3. Avatar de Songbird_
    • |
    • permalink
    Citation Envoyé par Zefling
    Ils se servent de quoi ceux qui codent Servo ?


    En jetant un œil au repo, il semblerait qu'ils se servent de Cargo.