Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Bill Fassinou

25PARTAGES

14  0 
Microsoft a annoncé l’arrivée d’un nouveau membre dans la famille des outils de projection de langage dont fait partie C++/WinRT. C’est Rust/WinRT qui vient de faire son entrée. C’est une projection du langage Rust entièrement standard pour les API Windows Runtime, implémentée comme une bibliothèque basée sur des fichiers d'en-tête, et conçue pour vous fournir un accès de première classe à l'API Windows moderne. Il a désormais une prévisualisation publique sur GitHub. Rust continue de séduire Microsoft.

Windows Runtime (WinRT) est le Runtime de Windows. Il constitue la base des applications de la Plateforme universelle de Windows (UWP). Il se base sur les API COM (Component Object Model) sous le capot et il est conçu pour être accessible par des projections de langage. WinRT peut également être utilisé pour des choses comme les pilotes, ce qui se prête à un code natif très performant. Microsoft soutient principalement ce cas d'utilisation avec C++/WinRT. Mais depuis ce jeudi, Rust a rejoint C++ avec Rust/WinRT. Une bonne nouvelle pour les développeurs Rust.

En effet, ces projections de langage prennent les métadonnées décrivant les différentes API et fournissent des liaisons naturelles pour le langage de programmation cible. Comme vous pouvez l'imaginer, cela permet aux développeurs de créer plus facilement des applications et des composants pour Windows en utilisant le langage de leur choix. Vous pouvez alors utiliser ces API Windows pour créer des applications de bureau, des applications de stockage ou quelque chose de plus unique comme un composant, un service NT ou un pilote de périphérique.


Rust/WinRT suit la tradition établie par C++/WinRT de construire des projections de langage pour le Runtime Windows en utilisant des langages et des compilateurs standards, fournissant une manière naturelle et idiomatique pour les développeurs Rust d'appeler les API Windows. Il permet d'appeler toute API WinRT passée, présente et future en utilisant du code généré à la volée directement à partir des métadonnées décrivant l'API et directement dans votre paquet Rust où vous pouvez les appeler comme s'il s'agissait d'un module Rust parmi d'autres.

« Microsoft a longtemps dépendu du C++ comme épine dorsale pour une grande partie de ses activités, mais elle doit relever certains défis, notamment en matière de sécurité. Le C++ moderne facilite certainement l'écriture d'un C++ sûr et sécurisé si vous suivez certaines conventions prudentes, mais cela est souvent difficile à appliquer sur des projets plus importants. Rust est un langage intrigant. Il ressemble beaucoup au C++ à bien des égards, et il a toutes les qualités requises pour la compilation, le modèle d'exécution, le système de types et la finalisation déterministe », a écrit Microsoft dans un billet de blogue.

« Bien qu'il ait sa propre courbe d'apprentissage unique, il a aussi le potentiel de résoudre certains des problèmes les plus contrariants qui affligent les projets C++. Il est conçu à partir de zéro avec la sécurité de la mémoire et la concurrence sûre comme principes de base », a-t-il ajouté. L'adoption de Rust par Microsoft n’est pas surprenante, car dernièrement, la firme n’a pas cessé de louer les performances du langage développé par Mozilla. L’été dernier, elle a déjà recommandé l’utilisation de Rust comme approche proactive pour un code plus sécurisé.

Selon Microsoft, le C++ a des vertus qui le rendent attrayant et parfois essentiel. Il est très rapide, mature ; avec une exécution prévisible, une faible empreinte mémoire et disque, une plateforme presque inégalée, etc., et vous pouvez l’utiliser sans être obligé d’installer des composants supplémentaires. Ainsi, il estime que si les développeurs pouvaient avoir toutes les garanties de sécurité de la mémoire de langages comme .NET C# combinés à toute l’efficacité du C++, cela leur permettrait de ne pas introduire certains défauts dans leurs logiciels.

« L’un des langages de programmation les plus récents et les plus prometteurs qui répondent à ces exigences est le langage de programmation Rust initialement développé par Mozilla », a expliqué l’équipe Microsoft Security Response Center (MSRC). Toutefois, Microsoft n’est pas la seule entreprise qui plébiscite Rust pour une programmation plus sécurisée. D’autres grands noms de la technologie et de petites entreprises ont commencé à compter sur Rust comme un élément clé dans leur travail. Parmi elles, il y a npm Inc, la société derrière npm, le gestionnaire de paquets de Node.js.

En février 2019, l’entreprise a publié un rapport d’étude avançant que le langage de programmation Rust possède une meilleure façon de gérer les dépendances que d’autres langages tels que Go, C et C++. L’équipe a donc choisi Rust pour faire une nouvelle implémentation d’un service du registre npm pour éviter à la longue les problèmes de performance. Enfin, Microsoft a déclaré que Rust/WinRT est une avant-première publique très précoce, mais que l’équipe a désormais décidé de travailler au grand jour.

Sources : Microsoft, Rust/WinRT

Et vous ?

Qu'en pensez-vous ?

Voir aussi

L'équipe Microsoft Security Response Center recommande l'utilisation de Rust comme approche proactive pour un code plus sécurisé

L'équipe de npm choisit Rust pour gérer les goulots d'étranglement liés au CPU au détriment de Go, C, C++ et Java. Voici les raisons de ce choix

Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

C2Rust : un outil qui permet de faire la traduction et la refactorisation de votre code écrit en langage C vers le langage Rust

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Aurelien.Regat-Barrel
Expert éminent sénior https://www.developpez.com
Le 04/05/2020 à 22:49
Hello

Je profite de ce topic pour partager mon point de vue et recueillir le vôtre. Pour info je suis spécialisé C++ et n'ai qu'une connaissance légère de Rust. Mais je m'intéresse pas mal à comment ce langage évolue et comment il est adopté dans l'industrie car de manière générale je suis passionné par comment les langages interagissent entre eux.

En lisant certains messages, je crois qu'il est important de préciser que ce qui fait le succès d'un langage ce n'est pas (simplement) ses qualité intrinsèques. C'est peut être même un aspect secondaire. Son écosystème et le support (financier) qu'il reçoit sont des facteurs essentiels : bibliothèques disponibles, IDE / debug / profiling, intégration avec d'autres systèmes, portabilité, etc... Donc surtout ne pas réduire un langage à sa syntaxe quand on veut comparer les utilisations (penser à comment javascript s'est imposé comme langage n°1!). Et donc le fait qu'il reçoive du soutient de la part de Microsoft est une très bonne chose pour le langage.

Un autre point à rappeler est que Rust n'est pas le premier langage à s'attaquer à C/C++ en apportant des innovations qui sont, objectivement, intéressantes. J'ai personnellement lu moultes démonstrations expliquant pourquoi ADA, Objective C, Eiffel, D, Nim... sont de meilleurs langages que C++. Mais il y a un petit détail : C++ est un langage avec un spectre d'utilisation extrêmement large dans plusieurs secteurs aux contraintes très différentes. Le remplacer sur certains segments est une tâche accessible, remplacer le langage de manière large est une tout autre histoire. Et il me semble que Rust occupe aujourd'hui la position de challenger que d'autres ont occupé avant lui (le langage D en particulier, qu'il a à mon avis tué) et peine à en sortir. Non pas qu'il n'en sortira jamais, mais il peine.

Et à mon avis c'est lié au segment sur lequel on le positionne presque systématiquement : la sécurité. Et c'est pas vraiment le plus porteur. Pour rappel les discussions sur la sécurité ne sont pas nouvelles : PASCAL se vantait d'être beaucoup plus secure que le C, et puis au final nos composants système les plus critiques (OS, drivers...) sont écrits en C... tandis que PASCAL n'est plus... De plus - et c'est pas un détail - il existe des solutions logicielles pour fiabiliser des programmes en C et C++. Le hic est qu'elles sont souvent payantes, à vil prix. Mais pour les structures qui ont ces besoin c'est acceptable. Et pour les domaines où ça ne suffit pas, genre l'aérospatiale, les personnes concernées avec qui j'ai pu en discuter ne juraient en général que par ADA, ou alors des solutions style Frama-C.

Donc pour moi Rust a un peu le cul entre deux chaises : pour les environnements critiques genre aérospatiale, il est face à plus qualifié que lui. Et pour les autres cas d'usage, et bien il a quand même un gros côté overkill. En particulier face à un langage comme Go et son approche "get the shit done". En effet y a quand même beaucoup de boites qui arrivent à correctement développer des logiciels en C ou C++ sans vraiment être troublées par des problèmes de sécurité : leurs problèmes au quotidien sont ailleurs. Oui certains bugs constatés ne se seraient pas produits avec Rust, mais ce n'est pas ce qui gêne le plus en pratique car l'outillage hyper mature aide à rattraper beaucoup de choses. Ca me parait important de le souligner car je trouve qu'au niveau communication sur Rust il y a une trop forte focalisation sur cet aspect dont au final peu de monde accord une forte importance. Je donne un exemple réel : dans une conf un mec répond à une question sur pourquoi il faudrait choisir Rust en expliquant pendant plusieurs minutes commet Rust offre de super garanties de sécurité en termes de programmation multi-thread etc... Puis il demande s'il a répondu à la question => "heu... nous on n'utilise pas de threads alors je sais pas". A trop se focaliser sur un aspect parmi tant d'autres, ça peut vite se retourner contre le langage en réduisant la perception de son champ d'application réel.

Enfin, pour qui essaye de suivre l'intégration de Rust dans Firefox, Mozilla n'envoie pas des signaux très positifs. Pour moi là ils ont clairement merdé quand leur comm. Ca a pris beaucoup plus de temps qu'annoncé, l'effet "silver bullet" tant vanté n'a pas vraiment eu lieu, et aujourd'hui le navigateur est en sérieuse difficulté face à ses concurrents intégralement propulsés en C++ : pas de quoi rassurer un décideur. C'est difficile d'avoir les raisons précises de ces difficultés, mais de ce que j'ai pu trouver comme information (j'ai du chercher sur les blogs perso de certains développeurs...) ça confirme ce que j'ai dit au début : développer une brique logicielle dans un coin est une chose. Intégrer cette brique dans des systèmes existants est une autre paire de manches. Et dans un environnement où à peu près tout repose sur C et C++, et bien ces 2 langages ont un avantage. La news ci-dessus vient rappeler cette dépendance en tout un tas de couches de compatibilité / intégration, et c'est avec ce genre de "détails" (qui se multiplient sur les gros projets) que commencent à se diluer tous les avantages qu'on a pu gagner ailleurs.

Par exemple j'ai lu le témoignage de développeurs qui au début ont été enthousiastes avec Rust, et puis ont fini par jeter l'éponge face à ses lacunes dans le domaine de la 3D en particulier. L’écosystème C++ dans ce domaine est colossal, et un nouveau langage ne peut pas rivaliser avec de multiples bibliothèques qui ont souvent +20 ans de développement ininterrompu dans des domaines très pointus. Sans parler, semble-t-il, de la prise de tête que c'est de coder des structures de données complexes telles des arbres ou des graphes.

Face à C, je suis aussi assez dubitatif - mais pour d'autres raisons. D'abord parce que C++, malgré sa possibilité de l'utiliser comme un meilleur C, n'est pas parvenu à convaincre les développeurs récalcitrants. Ceux que j'ai pu fréquenter travaillaient tous dans le domaine embarqué, et avaient comme point commun d'être très à l'aise avec des concepts bas niveau de hardware et d'électronique, de masquage de bits, etc... et par contre de très vite décrocher quand on commence à parler d'abstraction, POO, patterns, etc... Je ne suis même pas arrivé à les convaincre de l'utilité d'une classe vector ou string par rapport à une gestion manuelle ou via des macros. C'est une autre façon de penser le code, et c'est pourquoi je vois mal n'importe quel langage les convaincre. Y'a que Go semble-t-il, qui en séduit quelques uns (Ken Thompson doit y être pour quelque chose).

Donc au final désolé si je casse un peu l'ambiance, mais j'essaye de faire la part des choses entre ce qu'on aimerait qu'il se passe, et ce qu'il peut réellement se produire. Faire basculer des équipes de développement vers un nouveau langage ne répond pas aux mêmes critères de décision que choisir un langage pour un projet perso from scratch sur github. C'est un peu comme comparer 20 ans de vie de couple avec un flirt d'été Par le passé y'a eu des vagues d'enthousiasme et d'intérêt pour des langages comme D, F#, Haskell. Ces langages ont innové et ont clairement apporté quelque chose à tous ceux qui les ont étudiés à en devenir super fan. Avec aussi, il faut le dire je crois, ce petit côté "ça c'est un vrai langage pour les vrais programmeurs" qui en pratique se marie assez mal avec le pragmatisme de l'industrie.

Personnellement je suis très content que Rust soit là et contribue à faire progresser notre métier. Mais j'ai l'impression qu'on se dirige plus vers un marché de niche qu'une adoption massive du langage. Et les quelques retours d'expérience qui commencent à circuler tendent à confirmer cela.

Je pense en effet que c'est honorer une techno que d'en reconnaitre les limites, pour éviter de la mettre dans des situations où elle n'est pas adaptée et peut causer des dégats / déceptions. Paradoxalement, plus on connait les faiblesses et lacunes d'un langage, plus il devient fiable car sa zone de risque se clarifie. Et je trouve que c'est quelque chose qui manque encore beaucoup au sujet de Rust : des retours contrastés sur son emploi. Beaucoup de discours sont dithyrambiques, on a l'impression de lire des plaquettes commerciales : pas vraiment de quoi rassurer sur la maturité du langage. Donc si vous avez des retours d'expérience plus nuancés sur la base d'une utilisation sérieuse je suis preneur !

Ceci étant dit, j'aimerais conclure ce message un peu "douche froide" par ce qui est pour moi l'essentiel : le fait d'aimer un langage est une raison suffisante pour pratiquer ce langage. J'ai mis plusieurs années à comprendre que l'affinité qu'on peut avoir avec un langage n'est pas quelque chose de rationnel, mais relève plutôt du goût et des couleurs. Partant de là, y'a pas à rationaliser pourquoi on préfère ce langage. Car chaque langage capture une certaine façon de penser les choses, et quand on est se découvre en phase avec l'une d'elle alors y'a juste à se laisser porter afin de d'explorer tout ce qu'il y a à découvrir avec cette façon de faire. On en retire forcément quelque chose. Et à y réfléchir, c'est quand même plus sympa de choisir un langage sur un coup de coeur !

J'attends vos réactions en espérant avoir blessé personne
6  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 02/05/2020 à 11:08
Citation Envoyé par defZero Voir le message
Pour ce qui est de travailler avec Rust ça ne dépendra pas vraiment de tes envies / études, mais plus du type de projet sur lesquels tu travaillera.
Si tu t’oriente vers le Web au mieux ce sera du Java / Go / .Net et au pire du PHP / Ruby / Python et dans tous les cas du JS, avec une petite lueur désespoir pour WASM, mais le leagacy restera.
Je ne doute pas que des langages de plus haut niveau sont dans la plupart des cas plus adaptés pour du Web, mais Rust n'est pas totalement disqualifié dans le domaine non plus. Il peut notamment avoir de l’intérêt dans les parties qui requièrent de la performance, pour gérer des traitement plus lourds que du simple CRUD.

Coté backend, il y a par exemple le framework Actix qui brille par ces performances et le framework Rocket qui fournit une API vraiment propre. Coté frontend, Rust n'est clairement pas le langage le plus adapté, sauf en ce qui concerne le WASM où il est probablement le langage qui offre le meilleur support à l'heure actuelle.
4  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/05/2020 à 20:02
Le temps que tu sois embauché, il est bien possible qu'il soit devenu courant a utiliser, en tout cas il le mériterait certainement.

Mais vu l'omniprésence du C dans l'informatique de bas niveau actuellement, il n'aura certainement pas encore conquis le monde. Il n'y a qu'a voir comment le Cobol que l'on annonce mort depuis 30 ans est encore partout dans certains domaines de l'informatique.
3  0 
Avatar de defZero
Membre éclairé https://www.developpez.com
Le 02/05/2020 à 20:32
Non pas que je doute que des langages de plus haut niveau soient dans la plupart des cas plus adaptés pour du Web, Rust n'est pas totalement disqualifié dans le domaine.
Il peut notamment avoir de l’intérêt dans les parties qui requièrent de la performance, pour gérer des traitement plus lourds que du simple CRUD.
@Uther
Tout à fait d'accord, mais le vrai problème que va rencontrer Rust à l'avenir est de savoir s'il est assez bon pour justifier la bascule ?

Le type de systèmes nécessitant de la performance pour des traitements lourds que tu décris, aura plutôt tendance à être développé en JAVA, .Net ou Go, pour des raisons de simplicité, de productivité, de main d’œuvre et surtout de coûts.

Est-ce que Rust et son écosystème pourra se justifier dans ces cas là ?

D'autant plus quand on parle d'environnement Web où la notion de performance à un sens somme toute relatif.
C'est principalement pour cela que je mettais le Rust face au C / C++ en environnement Pro et plutôt pour des projets autre que Web.

... Coté backend, il y a par exemple le framework Actix qui brille par ces performances et le framework Rocket qui fournit une API vraiment propre.
Coté frontend, Rust n'est clairement pas le langage le plus adapté, sauf en ce qui concerne le WASM où il est probablement le langage qui offre le meilleur support à l'heure actuelle.
@Uther
Développer un backend sur des frameworks Rust non stable (pré-alpha, alpha), pour des performances dont on n'as pas forcement besoin, c'est prendre de gros risque pour pas grand chose à mon avis et cela que ce soit maintenant ou dans 10 ans (si les projets existent encore).
Pour le front, c'est un peut la même histoire, sachant que de dans tous les cas de figure, un développement JS sera nécessaire, alors pourquoi partir sur Rust pour uniquement une compilation vers WASM alors que d'autres (JAVA, .Net, Go, Typescript ...etc), seront parfaitement apte à remplir l'ensemble des besoins ?

Pour moi le coup de développement en Rust ne peut ce justifié que sur des projets qui auraient été confiés au C / C++, soit des projets relativement lourds, long et couteux de toute façons.

Rust est très capable et je pense a ça place en remplaçant de C / C++ sur certains projets, mais il faut savoir rester pragmatique et ne pas vouloir tout faire avec.
Ne faites pas de Rust le nouveaux NodeJS.
Apprenez à lâchez le marteau et vos problème ne ressemblerons plus tous à des clous .
3  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 03/05/2020 à 7:35
Citation Envoyé par defZero Voir le message
Le type de systèmes nécessitant de la performance pour des traitements lourds que tu décris, aura plutôt tendance à être développé en JAVA, .Net ou Go, pour des raisons de simplicité, de productivité, de main d’œuvre et surtout de coûts.

Est-ce que Rust et son écosystème pourra se justifier dans ces cas là ?
Je suis conscient que dans la majorité des cas, pour le Web le goulot d'étranglement, c'est plutôt le réseau et la base de données, pas les performances brutes du code. Mais dans les cas ou les performances sont importantes Rust peut tout à fait se justifier. Par exemple Dropbox a rapporté que de passer une partie très consommatrice de son code de Go à Rust leur permis de faire d'énormes économies sur les besoins en matériel. Et puis le framework Rocket offre quand même un cadre de travail bien plus propre que pas mal de frameworks dans des langages de haut niveau.

Je ne dis pas que Rust est forcément le meilleur langage pour le backend, loin de là, juste qu'il n'est pas totalement inintéressant.

Citation Envoyé par defZero Voir le message
Développer un backend sur des frameworks Rust non stable (pré-alpha, alpha), pour des performances dont on n'as pas forcement besoin, c'est prendre de gros risque pour pas grand chose à mon avis et cela que ce soit maintenant ou dans 10 ans (si les projets existent encore).
C'est vrai que Rocket nécessite un compilateur Rust "nightly" car il utilise en interne des fonctionnalités avancées de Rust (qui devraient être définitivement stabilisées cet été), mais l'API du framework lui même est stable. Le framework Actix est stable et fonctionne sans soucis avec les version stables de Rust.
Franchement quand je vois l'état de stabilité de la majorité des frameworks Web les plus utilisés actuellement, je suis plus rassuré par la stabilité des frameworks Rust.

Citation Envoyé par defZero Voir le message
Pour le front, c'est un peut la même histoire, sachant que de dans tous les cas de figure, un développement JS sera nécessaire, alors pourquoi partir sur Rust pour uniquement une compilation vers WASM alors que d'autres (JAVA, .Net, Go, Typescript ...etc), seront parfaitement apte à remplir l'ensemble des besoins ?
Java, .Net et Go sont tout aussi dépendant du JavaScript que Rust. Un des avantages de Rust quand on fait du Wasm, c'est justement qu'il fournit une plutôt bonne intégration avec le JavaScript grâce à wasm-bindgen.

Citation Envoyé par defZero Voir le message
Pour moi le coup de développement en Rust ne peut ce justifié que sur des projets qui auraient été confiés au C / C++, soit des projets relativement lourds, long et couteux de toute façons.
Rust est très capable et je pense a ça place en remplaçant de C / C++ sur certains projets, mais il faut savoir rester pragmatique et ne pas vouloir tout faire avec.
Ne faites pas de Rust le nouveaux NodeJS.
Apprenez à lâchez le marteau et vos problème ne ressemblerons plus tous à des clous .
Je suis entièrement d'accord, c'est bien pour ça que je dis bien qu'il peut avoir son utilité dans certaines situations, pas qu'il est la meilleure solution à tous les problèmes. Ce qui vaut d'ailleurs pour tous les langages.
2  0 
Avatar de Nothus
Membre émérite https://www.developpez.com
Le 03/05/2020 à 9:45
C'est une excellente nouvelle

A de nombreux titres àmha.

D'abord parce que si Microsoft "joue le jeu", ce sont des ressources supplémentaires qui peuvent être allouées à l'amélioration et au développement du langage lui-même : du temps d'ingénierie, probablement des propositions et pistes d'amélioration.

Ensuite parce que c'est une étiquette "qualité" (chacun jugera) d'un grand éditeur logiciel pour entreprise (qui ne fait pas que des OS) - et donc favorise l'adoption dans les autres entreprises, si j'en crois un sondage récent sur un usage encore très limité dans le monde professionnel.

Ensuite (bis) parce qu'au-delà de l'étiquette, c'est permettre davantage d'opérations et de processus sur Windows : donc moins de coûts de développement qu'aujourd'hui, plus de potentiel, donc plus facile à porter comme projet dans une organisation. Rust répond par sa sûreté, à des attentes notamment vis-à-vis des normes de l'ANSII et d'une vision plus pro-active de la sécurité.

Ensuite (ter) parce que c'est probablement à terme l'ensemble de l'environnement logiciel de Microsoft qui en aura un usage massif (je pense fort à l'alternative d'Amazon Lambda : Microsoft Function qui aujourd'hui ne supporte encore pas Rust).

Enfin parce que c'est un signal dans le monde du développement. L'effet de mode, au-delà des qualités mêmes de Rust, peut devenir un déclencheur pour des profils développeurs à s'y intéresser, à commencer son relatif mais pénible apprentissage, élargissant l'offre. Émulation dans les entreprises, durant les recrutements IT...

J'ai peut-être et même sûrement la foi du converti récent... mais tant mieux !
2  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 04/05/2020 à 11:47
Citation Envoyé par SimonDecoline Voir le message
En quoi est-ce un exploit ? Je peux me tromper mais je crois que les OS existaient avant Rust... Il y a en même en Lisp : https://github.com/froggey/Mezzano
C'est clairement pas un exploit, juste une démonstration plutôt probante que Rust est utilisable de manière idiomatique en tant que langage système.
Je sais qu'on à vu des trucs louches comme des OS en Java, mais en général c'était du gros bricolage. Je ne connaissait pas Mezzano, ça a l'air intéressant, je regarderai si j'ai le temps, mais si c'est vraiment totalement en LISP, je suppose que ça doit aussi impliquer des trucs discutables du genre d'avoir un interpréteur en ring 0.

Citation Envoyé par SimonDecoline Voir le message
Mais non, justement : la sureté mémoire à un coût. Rust a l'avantage de permettre une gestion sûre par défaut et de faire explicitement du unsafe, si nécessaire, mais on n'a pas magiquement une gestion sûre ET les performances du C. D'ailleurs, si tu regardes les codes de ton benchmark, tu trouveras beaucoup de unsafe (https://benchmarksgame-team.pages.de...dy-rust-7.html), et donc on perd des garanties de gestion mémoire sûre.
Même si en Rust on doit parfois renoncer à la sécurité pour les performances, le fait qu'on ne le fasse que partiellement, et au cas par cas, reste un gros avantage.
Pour reprendre ton exemple, en un coup d’œil on voit que la plupart des blocs "unsafe" sont des instruction SIMD qui ne touchent pas du tout à la mémoire et qui sont donc parfaitement safe (tout le SIMD est considéré unsafe même si toute les instructions le sont pas réellement). Les seules instruction SIMD de ce programme potentiellement dangereuses pour la sécurité mémoire sont _mm_loadh_pd, _mm_loadl_pd et _mm_store_pd qui manipulent des pointeurs unsafe.

Donc pour vérifier que tout le programme est sûr niveau mémoire, il suffit de vérifier que ces 3 instructions ne font pas de dépassement, ce qui est relativement simple. Avec un code équivalent en C il m'aurait fallu analyser l'intégralité du programme, je n'aurais pas été capable de te faire un diagnostic aussi rapide avec autant d'assurance.

Citation Envoyé par epsilon68 Voir le message
il faut voir comment rust evolue, car c++ a 30 ans d’évolution derrière lui, en relevant les nouveaux defis qui se presentaient.

il y a plein de projets fait en C ou c++ qui sont geniaux : sqlite, git, webkit
pourquoi eux y arrivent mais pas les autres ?
On a construit des cathédrales sans camions, ni marteau-piqueur, ça ne veux pas dire que ces outils sont inutiles maintenant que l'on en dispose.
D'ailleurs sqlite, git, webkit, ... n'ont pas miraculeusement évité les problème de vulnérabilité mémoire. C'est pas pour rien que Mozilla a été le premier sponsor de Rust. Les erreur de mémoires sont la principales source de vulnérabilité grave que l'on trouve dans les navigateurs qu'ils soient basés sur Webkit, Trident ou Gecko.

Citation Envoyé par epsilon68 Voir le message
les problèmes sont beaucoup plus basique que ca, l'algo est faux, ou over compliqué, le code est dupliqué 50 milliard de fois, le ownership d'une ressource n'est pas compris (qui detient mon context ?), les structures de données ne sont pas maitrisées.
Quand je vois en entreprise le niveau du code rien qu'en C#, j'ai vraiment peur. Je crois que fondamentalement, les problèmes ne sont pas dans le langage ... je n'imagine même pas ce que ca pourrait donner en C++, je n'ai plus confiance, la majorité doit coder avec le "luc"... En quoi Rust serait une solution ?
Pour un algo éronné, en effet Rust ne te sera d'aucun secours, par contre si le ownership n'est pas maîtrise, justement Rust ne te laissera pas compiler ton code. Un gros intérêt de Rust est qu'il permet d’empêcher complètement cette catégorie d'erreurs pas facile à appréhender.

Une erreur d'algo, ça se trouve en général relativement vite avec des bons test. Une erreur de mémoire on peut facilement la faire sans s'en rendre compte, et même les projets sérieux avec gens expérimentés ne sont pas à l’abri.

Les gardes fous apportés par Rust sont d'autant plus important quand est persuadé que l'on travaille avec des nuls, mais il ne faut pas oublier que même les meilleurs sont des nuls parfois.

Citation Envoyé par epsilon68 Voir le message
Comme par exemple quelqu'un qui a recodé une appli en swift... pour ensuite s'apercevoir d'un temps de compilation plus long, des complication dans la gestion des non-nullable etc, il a ensuite recodé en objective c avec une bien meilleure architecture... bref comme disait joel on software, tu peux perdre un temps infini de ré-ecrire ton soft en changeant la techno (a peu pres tous les 10 ans) ou bien tu peux rester competitif et implementer les fonctionalités qui manquent, en plus de refactorer.
Je pense qu'il y a moins de risque a encapsuler en C++ un programme existant vieux de 20 ans, que de tout re-ecrire en rust. En C++, on sait ou on va, mais en rust ?
C'est fou que dès que l'on parle de Rust, les développeurs C++ s'imaginent qu'on leur demande de réécrire l'intégralité du code existant en Rust. Ça n'est bien évidement pas près d'arriver. On ne récrit pas un code dans un nouveau langage sans une bonne raison de faire ça.
Par contre, le Rust sait au moins autant où il va que le C++, qui a énormément plus évolué, particulièrement ces dix dernières années.
2  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 04/05/2020 à 13:19
Oui enfin la c'était visiblement surtout quelque quidams lambda sur Github qui venaient sans doute de découvrir Rust peu après sa sortie, et qui ne connaissent visiblement pas grand chose, les utilisateurs de Rust sont généralement les premiers a s'en moquer.
Y'a pas de vraie demande de fond à tout réécrire en Rust.
2  0 
Avatar de Astraya
Membre expérimenté https://www.developpez.com
Le 01/05/2020 à 14:21
C'est une excellente nouvelle. En espérant que cela aidera à son adoption dans les entreprises maintenant!
1  0 
Avatar de steel-finger
Membre actif https://www.developpez.com
Le 01/05/2020 à 14:36
C'est vraiment une très bonne nouvelle. Nous avons commencé à utilisé Rust au travail, habituellement on travaille sur C/C++.
Rust est un langage très intéressant, il corrige un certain nombre de défaut qu'on retrouve dans certain langage.
1  0