une release pas comme les autres !
Dernièrement, l'équipe Rust avait annoncé la toute dernière version stable du langage, qui était principalement axée sur les fonctionnalités et le comportement du compilateur pour améliorer les performances du binaire généré en implémentant une nouvelle représentation des instructions écrites : le code MIR.
Suite à cela, les contributeurs du dépôt ont débusqué des régressions importantes lors du passage de la version 1.11 à la version 1.12. Il s'agit de treize régressions en tout. Toutefois, dans cette version 1.12.1, seulement neuf de ces régressions ont été corrigées. En effet, concernant, les quatre autres, l'équipe a annoncé que les tests routiniers n'ont rien donné, ce qui a permis à ces dernières de se propager.
En revanche, dans un billet officiel, le Rust Core Team stipule bien que ce style de release est exceptionnel et qu'elle n'est présente que pour stabiliser la version courante.
Concernant les difficultés rencontrées lors de cette mise à jour, vous pouvez retrouver quelques tickets ci-dessous, pour vous aider dans votre installation :
- ICE: ‘rustc’ panicked at ‘assertion failed: concrete_substs.is_normalized_for_trans()’ #36381
- Confusion with double negation and booleans
- rustc 1.12.0 fails with SIGSEGV in release mode (syn crate 0.8.0)
- Rustc 1.12.0 Windows build of ethcore crate fails with LLVM error
- 1.12.0: High memory usage when linking in release mode with debug info
- Corrupted memory after updated to 1.12
- “Let NullaryConstructor = something;” causes internal compiler error: “tried to overwrite interned AdtDef”
- Fix ICE: inject bitcast if types mismatch for invokes/calls/stores
- debuginfo: Handle spread_arg case in MIR-trans in a more stable way.
Les quatre régressions non prises en charge dans cette release 1.12.1 sont :
- ICE, possibly related to associated types of associated types ?
- Compilation of a crate using a large static map fails on latest i686-pc-windows-gnu Beta
- Regression: “no method found” error when calling same method twice, with HRTB impl
- ICE: fictitious type sizing_type_of
Nous pouvons donc remarquer que les régressions ne sont pas spécifiques à la dernière version du langage, et donc à l'implémentation du code MIR, mais concernent également la gestion de la mémoire et les appels de méthodes dans des cas bien précis. (cf. issue #37154)
Source: Blog Rust
Et vous ?
Qu'en pensez-vous ?
Avez-vous rencontré l'un de ces problèmes (ou d'autres qui ne sont pas listés ici) ?
Voir aussi
Rust 1.12 est désormais disponible: Design des erreurs revu, renvoi de la trace au format json et implémentation de la génération de code MIR