Linux ARM 64 bits atteint le niveau 1
Selon l'équipe de Rust, le compilateur Rust prend en charge une grande variété de cibles, mais elle ne peut pas fournir le même niveau de support pour toutes. Pour indiquer clairement le niveau de prise en charge de chaque cible, elle utilise un système de hiérarchisation :
- les cibles de niveau 3 sont techniquement supportées par le compilateur, mais l'équipe ne vérifie pas si leur code est construit ou s'il passe les tests nécessaires. En outre, l'équipe ne fournit pas de binaires préconstruits pour ses versions ;
- les cibles de niveau 2 sont garanties à la construction et l'équipe de Rust fournie des binaires préconstruits, mais elle n'exécute pas la suite de tests sur ces plateformes, ce qui signifie que les binaires produits peuvent ne pas fonctionner ou présenter des bogues ;
- les cibles de niveau 1 offrent la meilleure garantie de support, et l'équipe de Rust exécute tous les tests sur ces plateformes pour chaque modification fusionnée dans le compilateur. Des binaires préconstruits sont également disponibles.
Rust 1.49.0 promeut la cible aarch64-unknown-linux-gnu au niveau 1 de support, apportant ainsi les plus hautes garanties de l'équipe aux utilisateurs de systèmes ARM 64 bits sous Linux. « Nous espérons que ce changement bénéficiera aux charges de travail allant des systèmes embarqués aux ordinateurs de bureau et aux serveurs. C'est une étape importante pour le projet, car c'est la première fois qu'une cible non x86 atteint le niveau 1 de prise en charge : nous espérons que cela ouvrira la voie à d'autres cibles pour atteindre notre niveau le plus élevé à l'avenir », a déclaré l'équipe.
En outre, l'équipe de Rust a déclaré qu'Android n'est pas concerné par ce changement, car il utilise une cible de niveau 2 différente.
macOS et Windows ARM 64 bits atteignent le niveau 2
Avec la sortie de Rust 1.49.0, la cible aarch64-apple-darwin apporte le support de Rust sur les systèmes Apple M1. De même, la cible aarch64-pc-windows-msvc apporte le support de Rust sur les appareils ARM 64 bits fonctionnant sous Windows. Selon l'équipe de Rust, les développeurs peuvent s'attendre à ce que ces deux cibles aient des binaires précompilés installables avec rustup à partir de maintenant. Toutefois, l'équipe n'a pas exécuté les tests sur ces plateformes, il pourrait donc y avoir des bogues ou des instabilités.
Les autres améliorations et changements dans Rust 1.49.0
Langage
- Unions peut désormais mettre en œuvre Drop, et vous pouvez désormais avoir un champ dans un "union" avec ManuallyDrop<T> ;
- vous pouvez maintenant transformer des énumérations non utilisées en nombres entiers ;
- vous pouvez maintenant lier par référence et par déplacement dans des modèles. Cela vous permet d'emprunter de manière sélective les composants individuels d'un type.
Compilateur
- ajout du support de niveau 1 pour aarch64-unknown-linux-gnu ;
- ajout du support de niveau 2 pour aarch64-apple-darwin ;
- ajout du support de niveau 2 pour aarch64-pc-windows-msvc ;
- ajout du support de niveau 3 pour mipsel-unknown-none ;
- augmentation de la version LLVM minimale supportée à LLVM 9 ;
- la sortie des threads générés lors des tests est maintenant capturée ;
- changement des valeurs de "os" et de "vendor" à "none" et "unknown" pour certaines cibles.
Bibliothèques
- RangeInclusive vérifie désormais l'épuisement des appels lors de la composition et de l'indexation ;
- ToString::to_string ne réduit plus le tampon interne dans l'implémentation par défaut ;
- les ops::{Index, IndexMut} sont maintenant implémentées pour les tableaux de taille fixe, quelle que soit leur longueur.
Les API stabilisées
- slice::select_nth_unstable ;
- slice::select_nth_unstable_by ;
- slice::select_nth_unstable_by_key.
Cargo
- ajout de la variable d'environnement CARGO_PRIMARY_PACKAGE pour le temps de construction. Cette variable sera définie si la caisse (crate) en cours de construction est une caisse que l'utilisateur a choisi de construire, soit avec -p, soit par défaut ;
- vous pouvez maintenant utiliser des modèles globaux lors de la spécification de paquets et de cibles.
Source : Note de version de Rust 1.49.0
Et vous ?
Que pensez-vous de Rust 1.49.0 ?
Voir aussi
Rust 1.48.0 est disponible avec quelques modifications dans rustdoc pour rendre la rédaction de documentation encore plus facile
Rust 1.47.0 est disponible et s'accompagne de la prise en charge par défaut de LLVM 11, ainsi que de neuf API qui passent en version stable dans la bibliothèque
Rust 1.46.0 est disponible et s'accompagne de plusieurs nouveautés dans const fn, ainsi que de deux nouvelles API dans la bibliothèque standard
Rust 1.45.0 est disponible avec la correction du problème de la conversion entre des entiers et des flottants et de nombreuses fonctionnalités