BT

Rust 1.25 passe à LLVM 6

| par Sergio De Simone Suivre 14 Abonnés , traduit par Slim Ouertani Suivre 7 Abonnés le 03 avr. 2018. Durée de lecture estimée: 2 minutes |

Rust 1.25 met à niveau son LLVM vers LLVM 6, ajoute la prise en charge des groupes d'importation imbriqués dans les instructions use, l'alignement personnalisé de struct et les stabilisations de bibliothèque. Cette dernière version de Rust n'inclut cependant pas les fonctionnalités très attendues telles que impl Trait, la prise en charge stable SIMD et les entiers 128 bits.

La mise à jour de LLVM 6 est motivée par un certain nombre d'avantages, tels que des corrections de bugs, y compris les erreurs de compilation liées à SIMD, mais surtout par le fait qu'elle permet de suivre plus facilement le backend Wasm en amont de LLVM, ainsi de nouvelles fonctionnalités Wasm peuvent être prises en charge rapidement. Cela a une exception importante pour le backend JavaScript fonctionnant avec Emscripted, qui utilise une version verrouillée avec LLVM 4. Selon le développeur Steve Klabnik de Rust, LLVM 6 n'apporte pas nécessairement d'amélioration des performances dans le cas général, et cela dépendra du code exact, qu'il s'agisse d'une compilation plus rapide ou plus lente.

La nouvelle syntaxe de l'instruction use permet aux développeurs de spécifier des groupes d'importation imbriqués, afin de rendre le code plus lisible et plus concis. Par exemple, l'ensemble d'importations suivant :

use std::fs::File;
use std::io::Read;
use std::path::{Path, PathBuf};

peut maintenant être écrit comme :

use std::{fs::File, io::Read, path::{Path, PathBuf}};

En outre, vous pouvez définir l'alignement des structs Rust 1.25 en utilisant les annotations #[repr(align(x))] :

struct Number(i32);

assert_eq!(std::mem::align_of::<Number>(), 4);
assert_eq!(std::mem::size_of::<Number>(), 4);

#[repr(align(16))]
struct Align16(i32);

assert_eq!(std::mem::align_of::<Align16>(), 16);
assert_eq!(std::mem::size_of::<Align16>(), 16);

 

Cette fonctionnalité peut être utile lors de l'utilisation de matériel avec des exigences d'alignement spécifiques, pour une meilleure interopérabilité avec le code C, comme par exemple pour faciliter le passage correct d'une structure qu'un code C s'attend à aligner d'une manière donnée et pour des cas avancés allouer des tables de pages dans le kernel.

Au niveau de la bibliothèque, le changement le plus significatif est l'introduction de std::ptr::NonNull, qui est comme *mut T mais avec la garantie d'être non nul et covariant. Son utilisation est surtout appropriée lors de la construction de structures de données avec un code unsafe.

Dans l'état actuel des choses, Rust 1.25 n'est pas la grosse version de Rust que de nombreux développeurs attendent, car elle n'inclut pas les fonctionnalités majeures sur lesquelles l'équipe Rust travaille depuis longtemps, y compris impl Trait (ce qui devrait permettre d'améliorer les performances, simplifier la syntaxe et les diagnostics génériques), les entiers de 128 bits, le support de bibliothèque SIMD stable et autres. La bonne nouvelle, selon Klabnik, est qu'ils vont probablement atterrir dans les deux prochaines versions, 1.26 et 1.27.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT