Developpez.com

Le Club des Développeurs et IT Pro

Rust 1.26.2 est désormais disponible en version stable

Et vient stabiliser le fonctionnement du pattern matching

Le 2018-06-09 19:50:52, par Songbird, Membre expert
Rust est un langage de programmation système axé sur la sécurité, la rapidité et la concurrence.

Pour mettre à jour votre version stable, il suffit d’exécuter la commande habituelle.

Code bash :
$ rustup update stable

Si vous ne disposez pas de rustup, vous pouvez en obtenir une copie sur la page de téléchargement du site officiel. N’hésitez pas également à consulter la release note de la 1.26.2 sur GitHub !

Quoi de neuf ?

De nouveaux correctifs ont été apportés, principalement axés sur les expressions (et les vérifications sous-jacentes) permises par le compilateur. Comme pour la 1.26.1, cette mise à jour n’a pour but que de stabiliser les fonctionnalités existantes.

Bogue dans la règle des emprunts mutables

En dehors des blocs unsafe, le compilateur ne permet pas deux accès en écriture sur une même ressource en simultané. Toutefois, un est bogue survenu, suite à un recyclage apporté par la 1.26.0 visant à améliorer l’ergonomie de match, permettant ainsi de casser la règle précédemment citée.

Ici, par exemple, nous disposons de deux accès en écriture sur bar au même moment.

Code Rust :
1
2
3
4
5
6
7
8
let mut foo = Some("foo".to_string()); 
let bar = &mut foo; 
match bar { 
    Some(baz) => { 
        bar.take(); // Should not be permitted, as baz has a unique reference to the bar pointer. 
    }, 
    None => unreachable!(), 
}

En réponse à cela, la version 1.26.2 vient corriger ce problème. Désormais, la vérification est interrompue et renvoie une erreur lorsque le cas survient.

Code Rust :
1
2
3
4
5
6
7
8
9
10
11
12
error[E0499]: cannot borrow `*bar` as mutable more than once at a time 
 --> src/main.rs:6:9 
  | 
5 |     Some(baz) => { 
  |          --- first mutable borrow occurs here 
6 |         bar.take(); // Should not be permitted, as baz has a ... 
  |         ^^^ second mutable borrow occurs here 
... 
9 | } 
  | - first borrow ends here 
  
error: aborting due to previous error

En définitive, l’équipe Rust a pris la décision de publier ce patch le plus rapidement possible pour éviter d’étendre inutilement le laps de temps pendant lequel les compilateurs stables sont affectés par ce bogue.

Source

Le blog de l'équipe Rust

Voir aussi

La version stable de Rust 1.26.1 est désormais disponible !
  Discussion forum
6 commentaires