Comme avec Linux, Rust s'invite progressivement sur Windows
Microsoft s'intéresse à Rust depuis un certain temps déjà, en étudiant son utilisation en tant qu'alternative sûre en matière de type et de mémoire à C et C++ dans les tâches de programmation de systèmes. L'activité de Microsoft reposant de plus en plus sur les services en nuage (avec Azure), des outils tels que Rust sont essentiels à la création de ces services, en augmentant à la fois la fiabilité et la sécurité. Les outils de programmation système trouvent leurs racines dans le développement de systèmes d'exploitation, où il faut qu'il y ait très peu de distance entre le code et le matériel.
Il faut également que la surcharge associée aux runtimes et au garbage collection ajoute une latence indésirable. Ces caractéristiques ne concernent pas uniquement les systèmes d'exploitation ; elles sont essentielles à la création de toute application fiable où vous souhaitez que le code s'exécute en toute sécurité sans fuite de mémoire et où il est difficile pour un attaquant de sortir de la section de la mémoire système réservée à votre code. En développant en Rust, vous rendez votre code plus sûr. Il s'agit d'une première ligne de défense, intégrée au langage et aux outils utilisés pour construire votre code.
Que vous construisiez des pilotes ou des logiciels bancaires, l'important est que votre code soit fiable et que vous puissiez gérer les risques. Ainsi, là où vous auriez pu utiliser JavaScript, vous pouvez utiliser Rust qui tourne dans WebAssembly, et là où vous auriez utilisé C ou C++, vous pouvez utiliser les versions Windows ou Linux. La firme de Redmond explique qu'en utilisant Rust for Windows pour gérer les appels d'API, votre code sera plus sûr et prêt pour les changements futurs dans les API Windows avec juste une reconstruction et une recompilation lorsque les API nouvelles et mises à jour sont déployées.
Avec cette dernière version, l'entreprise a ajouté du nouveau contenu à Microsoft Docs sur le développement avec Rust sur Windows. Il y a aussi une nouvelle vidéo de démarrage pour ceux qui veulent s'y plonger. « Nous avons fait de grands progrès depuis l'annonce de l'aperçu public de Rust/WinRT l'année dernière, avec des améliorations et des investissements continus dans le projet », a déclaré l'entreprise dans le billet de blogue annonçant la version 0.9 de Rust for Windows. Voici quelques-uns des changements et mises à jour marquants de cette version :
- ajout de la prise en charge des API Win32 et COM, unifiant les API Windows disponibles pour la consommation via windows crate. L'ajout de ces API est rendu possible par le projet win32metadata. Avec cette couverture accrue et l'unification des API Windows, Microsoft a changé le nom du projet de "Rust/WinRT" à "Rust for Windows" ;
- ajout de plusieurs exemples au repo Rust for Windows, démontrant comment appeler un large éventail d'API Windows, y compris les API Win32, COM et WinRT ;
- windows crate est publié sur crates.io et est maintenant sous double licence MIT ou Apache ;
- windows crate utilise maintenant des liaisons générées plutôt que des liaisons écrites à la main en interne ;
- windows crate se construit maintenant sous Linux ;
- de nombreuses améliorations et corrections pour les API Win32, comme le support des types de tableaux, une variété de types de chaînes de caractères, et des métadonnées mises à jour ;
- prise en charge plus naturelle et idiomatique des interfaces COM, par exemple avec des valeurs de retour, et prise en charge d'API supplémentaires impliquant des choses comme les unions de style C et les types imbriqués ;
- amélioration des temps de construction et de la gestion des erreurs ;
- le cas original de l'API est maintenant préservé, ce qui affectera le code existant utilisant windows crate ;
- transformation des fonctions de type QueryInterface en fonctions génériques, ce qui rend plus sûr et plus pratique l'appel de nombreuses fonctions liées à COM.
Comment Microsoft construit le projet Rust for Windows
L'engagement de Microsoft envers Rust se manifeste par sa position de membre fondateur de la Fondation Rust et par le nombre de développeurs du langage et des outils qui ont rejoint l'entreprise ces derniers mois. Microsoft a maintenant annoncé son propre ensemble d'outils pour construire et développer du code Windows à l'aide de Rust, des outils basés sur les mêmes caractéristiques de Windows qui lui ont permis de livrer ses projections d'API C++/WinRT. En effet, l'un des outils les plus importants pour les développeurs Windows est la prise en charge de la projection linguistique.
Il s'agit d'une technique qui permet aux outils de développement de générer des API spécifiques à un langage à partir des métadonnées que Windows possède pour ses SDK. Grâce à la prise en charge de la projection linguistique, Microsoft n'a pas besoin d'écrire des API pour chaque langage pris en charge, ce qui ajoute à la complexité des SDK Windows, qui ne cessent de croître, et rend plus difficile la synchronisation de tous les langages pris en charge avec Windows. Cette technique garantit que tout ce dont Rust a besoin pour bénéficier de la prise en charge de Windows est une projection de langage appropriée.
Les API sont ensuite générées automatiquement en fonction des besoins. Microsoft n'a pas besoin de fournir des SDK pour les langages pris en charge, et tout nouveau langage a besoin de sa propre projection de langage pour obtenir le support de Windows. Il s'agit d'une tâche de développement beaucoup moins complexe, et lorsque de nouvelles API Windows sont publiées (par exemple, dans le cadre du projet Reunion), l'équipe chargée des API n'a besoin que d'une définition des métadonnées. Au cœur de Rust for Windows se trouve une crate Rust qui prend en charge les métadonnées de l'API Windows pour générer du code API à la volée.
Selon Microsoft, pour utiliser Rust for Windows, vous aurez besoin des outils de construction C++ dans votre environnement de développement, en utilisant les outils autonomes de Visual Studio Code ou une installation complète de Visual Studio. Cela signifie que ce n'est pas un logiciel libre : vous aurez besoin d'une licence Visual Studio pour utiliser les outils C++. L'édition gratuite Community est une option si vous travaillez sur un projet open source ou si vous êtes un développeur individuel. Vous pouvez télécharger le compilateur Rust for Windows à partir du site Rust, avec des versions 32 et 64 bits.
L'outil rustup télécharge tous les composants appropriés pour votre système de développement, avec un outil de ligne de commande simple pour aider à personnaliser votre installation. Si vous utilisez VS Code, il y a quelques extensions supplémentaires à installer : rust-analyzer pour ajouter un serveur de langage Rust pour la mise en évidence et l'indication du code IntelliSense, et CodeLLDB ou l'extension C/C++ de Microsoft pour le débogage. Une fois ces éléments en place, vous pouvez commencer à travailler avec Rust for Windows.
Vous pouvez utiliser les outils Rust dans Visual Studio et Visual Studio Code pour écrire des modules Rust qui peuvent être exécutés n'importe où, mais si vous envisagez de l'utiliser pour le développement Windows, vous devrez installer les outils Rust for Windows pour accéder aux API Windows. Les services Rust de Microsoft sont un projet open source disponible sur GitHub. La version actuelle est disponible sous forme d'un crate Rust et peut être installée à partir du dépôt de crate Rust.
Source : Rust for Windows
Et vous ?
Que pensez-vous des nouveautés apportées par Microsoft à Rust for Windows ?
Voir aussi
Microsoft annonce Rust preview pour Windows, alors que la comparaison entre Rust et C++ reste un sujet d'actualité
Microsoft unifie toutes les API Windows sous une seule bibliothèque Rust générée à partir de métadonnées
Microsoft annonce Rust/WinRT, une projection du langage Rust pour les API Windows Runtime implémentée comme une bibliothèque basée sur des fichiers d'en-tête
Le langage Rust est la meilleure chance offerte à l'industrie informatique pour la mise sur pied d'applications système sécurisées, d'après Microsoft
Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation