IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

Évolution de l'écosystème Rust en 2020 : Rust continue de faire des percées en tant que langage utilisé pour la production
Les développeurs réclament une plus grande interopérabilité avec C++

Le , par Stéphane le calme

346PARTAGES

15  0 
L'équipe responsable des sondages Rust (Rust Survey Team) a publié les résultats de son sondage visant à dresser le portrait de l'évolution de l'écosystème Rust en 2020. Le sondage était disponible en 14 langues différentes et avait un total record de 8323 réponses. Voici la répartition des langues entre les réponses :
  • anglais : 75,0 %
  • chinois simplifié : 5,4 %
  • russe: 5, 3%
  • allemand : 4,0 %
  • français : 2,7 %
  • japonais: 2,2 %
  • coréen : 1,2 %
  • chinois traditionnel : 1,1 %
  • espagnol : 1,0 %
  • portugais : 0,7 %
  • italien : 0,6 %
  • suédois: 0,5 %
  • vietnamien : 0,1 %
  • polonais : 0,1 %

83,0 % des répondants ont déclaré qu'ils utilisaient Rust (un niveau record) tandis que 7 % ont déclaré qu'ils avaient utilisé Rust dans le passé, mais ne l'utilisent plus. Lorsqu'il leur a été demandé pourquoi ils avaient arrêté d'utiliser Rust, le plus grand groupe (35 %) a déclaré ne pas l'avoir encore appris (probablement par manque de temps), suivi de ceux dont l'entreprise n'utilisait pas Rust (34 %) et de ceux qui ont répondu que passer à Rust les « ralentirait » par rapport au langage qu'ils ont choisi actuellement (19 %).

La stabilité

L'équipe explique :

« Bien que Rust lui-même ait toujours eu une solide garantie de stabilité, la stabilité signifie souvent plus que simplement garantir que le code des utilisateurs ne provoque pas un plantage lorsqu'il est compilé avec une nouvelle version du compilateur. Rust en 2020 a principalement consisté à nettoyer et à stabiliser des caractéristiques et des initiatives déjà en cours. Bien que ce travail ne soit pas presque terminé, les répondants ont noté que la stabilité de Rust en général s'est améliorée.

« Tout d'abord, nous aimerions remercier les projets rust-analyzer et le plug-in IntelliJ Rust, qui bénéficient tous deux de bases d'utilisateurs relativement satisfaites. Près des 3/4 de tous les répondants ont indiqué avoir constaté au moins une certaine amélioration dans l'histoire de l'EDI, mais les utilisateurs de rust-analyzer et d'IntelliJ étaient particulièrement satisfaits. 47 % des utilisateurs de rust-analyzer notent ‘beaucoup d'améliorations’ et 40 % des utilisateurs d'IntelliJ ont dit la même chose.

« En plus des améliorations de l'expérience EDI, le nombre d'utilisateurs qui comptent sur un compilateur nightly au moins une partie du temps continue de baisser - jusqu'à 28 % par rapport aux 30,5 % de l'année dernière avec seulement 8,7 % des personnes interrogées déclarant utiliser exclusivement la version nightly. Lorsqu'on leur a demandé pourquoi ils se servaient d’une version nightly, la principale raison était d'utiliser le framework Web Rocket qui a annoncé qu'il fonctionnera sur la version stable de Rust dans sa prochaine version. La deuxième raison en importance pour l’utilisation de la version nightly était les génériques const, mais avec une version minimale des génériques const qui sera bientôt disponible en version stable, nous devrions voir moins de dépendance à la version nightly pour cette fonctionnalité.


« Il convient de noter qu’un pourcentage décent d’utilisateurs qui utilisent la version nightly le font par habitude car "la nightly est suffisamment stable". Lorsqu'on leur a demandé ce qui cassait le plus souvent le code des gens, la réponse de loin la plus importante était l'introduction de nouveaux avertissements dans une base de code où les avertissements cassent la construction (ce qui ne fait pas partie de la garantie de stabilité de Rust bien que Rust soit conçu de sorte que l'ajout de nouveaux avertissements ne casse jamais vos dépendances). Puisque nous nous appuyons sur des tests nightly pour détecter les régressions, c'est un très bon signe : la nightly est suffisamment stable pour être utile tout en permettant des changements continus. Un grand merci aux équipes de l'infrastructure, du compilateur et des bibliothèques de Rust pour avoir fait un si bon travail en s'assurant que ce qui atterrit dans le compilateur nightly est déjà assez stable! »

Qui utilise Rust ?

Rust continue de faire des percées en tant que langage utilisé pour la production avec environ 40 % des répondants qui travaillent dans le logiciel notant qu'ils utilisent Rust dans leur travail quotidien.


Le changement apparemment le plus important chez ceux qui utilisent Rust semble être les étudiants avec un pourcentage beaucoup plus élevé (~ 15 % contre ~ 11 % l'année dernière) de répondants qui ont indiqué qu'ils n'utilisent pas Rust au travail parce qu'ils sont des étudiants ou des amateurs en développement logiciel.

De plus, l'utilisation de Rust sur les lieux de travail des répondants semble augmenter, 44 % des répondants affirmant que la quantité de Rust au travail était de 10 000 lignes de code ou plus, contre 34 % l'année dernière.


Améliorer Rust

Bien que l’utilisation de Rust semble croître à un rythme soutenu, les résultats de l’enquête ont clairement montré qu’il reste du travail à faire pour faire de Rust un outil plus approprié pour les flux de travail de nombreuses personnes.

Interopérabilité C++

Fait intéressant, l'interopérabilité C++ était la plus demandée pour une meilleure interopérabilité avec Rust, C et Python étant respectivement en deuxième et troisième place. L'amélioration de l'interopérabilité C++ a été particulièrement souvent mentionnée comme moyen d'améliorer l'utilisation de Rust spécifiquement au travail. En fait, pour les utilisateurs qui travaillent sur de grandes bases de code (100 000 lignes de code ou plus), l'interopérabilité C++ et, sans surprise, les temps de compilation étaient les moyens les plus cités pour améliorer leur expérience Rust.


Apprentissage amélioré

Lorsqu'il a été demandé au panel comment améliorer l'adoption de Rust, beaucoup ont cité le fait de rendre Rust plus facile à apprendre. D'ailleurs, 15,8 % des répondants ont déclaré qu'ils utiliseraient plus Rust si le langage était « moins intimidant, plus facile à apprendre ou moins compliqué ». Nombreux sont ceux qui ont demandé une amélioration de la documentation et de la formation.

« Lorsque nous avons demandé aux répondants d'évaluer leur expertise dans Rust, il y avait un pic clair à 7 sur 10. Il est difficile de mettre une perspective par rapport aux autres langages, mais il semble notable que relativement peu soient disposés à revendiquer une expertise complète. Cependant, par rapport à l'année dernière, la communauté Rust semble acquérir une expertise dans le langage. »


« Nous avons également posé des questions sur la difficulté de sujets spécifiques. Le sujet le plus difficile à apprendre d'après les résultats de l'enquête est sans surprise la gestion de la durée de vie, 61,4 % des répondants affirmant que l'utilisation des durées de vie est soit délicate, soit très difficile ».


« Il semble que la connaissance du C++ aide 20,2 % des répondants ayant au moins une certaine expérience en C++ à noter que la durée de vie est "très difficile", tandis que 22,2 % de ceux qui ne connaissent pas le C++ ont trouvé le sujet "très difficile". Dans l'ensemble, les connaissances en programmation de systèmes (définies comme disposant au moins une certaine expérience en C et C++) ont tendance à rendre les utilisateurs de Rust plus confiants : ceux qui ont une expérience de programmation de systèmes ont estimé à 5,5 sur 10 leur expertise Rust, tandis que ceux qui ont une expérience dans des langages comme Java ou C# ont estimé à 4,9 sur 10 leur expertise Rust. Ceux qui n'ont qu'une expérience des langages à typage dynamique comme Ruby ou JavaScript ont estimé à 4,8 sur 10 leur expérience Rust.

« Sans surprise, plus les gens utilisent souvent Rust, plus ils se sentent experts dans le langage avec 56,3 % de ceux qui utilisent Rust quotidiennement estimant à 7 ou plus sur 10 leur degré d'expertise de Rust.

Support de la bibliothèque

En général, les répondants semblaient satisfaits du support croissant des bibliothèques dans l'écosystème Rust, 65,9 % des répondants affirmant avoir constaté au moins une amélioration et seulement 4,9 % affirmant qu'ils n'avaient constaté aucune amélioration. Lorsqu'il leur a été demandé quel type de support de bibliothèque manquait le plus, la programmation GUI était la réponse majoritaire. L'année dernière, 26,9 % des répondants avaient indiqué qu'il s'agissait d'un domaine d'amélioration.

Communauté

Les façons dont la communauté Rust pourrait s'améliorer variaient, mais s'articulaient autour de deux points. Tout d'abord, améliorer l'état de la communauté Rust pour ceux qui ne souhaitent pas ou ne peuvent pas participer en anglais. Dans le rapport, l'équipe estime qu'il ne semble pas y avoir de langue en particulier qui soit particulièrement mal desservie, le russe, le mandarin, le japonais, le portugais, l'espagnol et le français étant fréquents.

De plus, beaucoup ont déclaré que le fait d'avoir de grandes entreprises sponsors dans la communauté Rust leur facilitera la tâche pour justifier l'utilisation de Rust au travail.

« Une autre découverte intéressante était que l'Europe semblait de loin être le lieu le plus favorisé pour la tenue d'une conférence Rust, toutes les parties de l'Europe (ouest, est, nord, sud et centre) ayant chacune plus de 14 % de répondants se disant intéressés de participer à une conférence qui s'y tiendrait. L'Europe de l'Ouest a obtenu le pourcentage le plus élevé (26,3 % des répondants). La seule autre région avec un pourcentage aussi élevé était les États-Unis où 21,6 % des répondants ont déclaré être intéressés par une conférence qui s'y tiendrait ».

Source : Rust

Et vous ?

Que pensez-vous de Rust ?
L'avez-vous déjà utilisé ? En entreprise, pour des projets personnels, par curiosité ou pour des besoins académiques ?
Quelle lecture faites-vous de ces différentes statistiques ?

Voir aussi :

Amazon : « nous embauchons des ingénieurs en logiciels qui maîtrisent le langage de programmation Rust », AWS estime que Rust est un élément essentiel de sa stratégie à long terme
Rust 1.48.0 est disponible avec quelques modifications dans rustdoc pour rendre la rédaction de documentation encore plus facile
Ox, un éditeur de texte rapide selon ses développeurs, écrit en Rust, fonctionne dans un terminal sur les plateformes Linux et macOS
Après Microsoft et Linux, c'est au tour d'Apple de montrer de plus en plus d'intérêt pour l'utilisation de Rust dans la programmation de bas niveau
Feuille de route de Rust pour 2021 : l'équipe souhaite étendre la communauté du langage et pourrait travailler sur une éventuelle édition de Rust 2021

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

Avatar de defZero
Membre extrêmement actif https://www.developpez.com
Le 20/12/2020 à 19:36
@Pyramidev et tu as oublié la plus importantes des qualités de Rust sur C++ qui est l'absence d'OOP pour un langage système .
Pour moi le gros inconvénient de C++ vient de ça conception même en tant que surcouche à C, à la manière d'un Typescript pour du JS.
A cela vous rajoutez la nécessité de rétrocompatibilité et l'ajout de fonctionnalité, tout ça sur plus de 30 ans et vous obtenez le "C++ Monster" actuel.
4  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 20/12/2020 à 19:20
Citation Envoyé par kilroyFR Voir le message
Jamais compris l'interet de Rust si c'est pour se rapprocher du C++, autant faire du C++ que reapprendre un langage avec ses particularités (bien bizarres il faut le reconnaitre - y en a pas mal dans Rust). Pour avoir testé histoire de me faire un avis, j'ai finalement laissé tomber, un langage de plus a la mode qui veut reinventer ce qui existe déjà. Je prefere peaufiner ma connaissance de C++20 et ses nouveautés que perdre du temps a repartir de zero avec un nouveau langage (qui sur le fond ne fait pas mieux les choses).
Une liste non exhaustive d'avantages du Rust par rapport au C++ (je mets les premiers trucs qui me passent par la tête) :
  • Il y a plus de contrôles à la compilation sur la gestion de la mémoire. Cela ne veut pas dire qu'on doit activer tous les contrôles dans 100 % des cas. Par exemple, si on veut désallouer de la mémoire à la main, c'est possible avec std::mem::ManuallyDrop. Mais, souvent, c'est pratique d'avoir des contrôles plus stricts de la mémoire qu'en C++.
  • Il y a plus de contrôles à la compilation sur la programmation concurrente.
  • Le RAII et la sémantique de mouvement sont mieux supportés qu'en C++. Par exemple, en C++, quand une variable est dans un moved-from state, elle est encore accessible. En Rust, par contre, sa portée s'arrête.
  • Le zero-overhead principle est mieux respecté en Rust qu'en C++.
  • Le C++ a beaucoup de pièges qu'il faut apprendre à repérer et contourner, pas que pour la gestion de la mémoire.
  • Rust a un gestionnaire de paquets officiel et de qualité.
  • La programmation modulaire est mieux gérée en Rust. Par exemple, pour la visibilité, dans l'arborescence des modules, on peut choisir dans quel sous-arbre un élément est public (ce sous-arbre doit inclure le module dans lequel est défini l'élément).
  • Les types sommes sont beaucoup mieux gérés en Rust qu'en C++. Une conséquence indirecte est que la plupart des stupides déréférencements de pointeurs nuls des développeurs C++ auraient été empêchés à la compilation en Rust.
  • Les variables sont immuables par défaut et les passages par référence muable sont généralement explicites. En C++, j'ai tendance à écrire des const presque partout, mais je trouve dommage que ça prenne autant de place.
  • Les macros syntaxiques du Rust sont plus puissantes que les macros du préprocesseur de C et C++. Cela permet à des concepteurs de bibliothèques externes de faire des choses assez sympas.
  • Définir un forward iterator est beaucoup plus facile en Rust qu'en C++.
  • Les types &str et String de la bibliothèque standard garantissent que la chaîne sous-jacente est une chaîne UTF-8 valide. Il existe aussi d'autres types de chaînes avec moins de garanties.


De manière générale, beaucoup de défauts du C++ sont corrigés en Rust. La contrepartie est que, comme Rust est plus jeune, l'écosystème est plus petit.

La gestion du polymorphisme est assez différente en Rust et en C++. En moyenne, je préfère celle du Rust, mais c'est un long sujet.
3  0 
Avatar de imperio
Membre émérite https://www.developpez.com
Le 20/12/2020 à 23:09
Citation Envoyé par kilroyFR Voir le message
Jamais compris l'interet de Rust si c'est pour se rapprocher du C++, autant faire du C++
Ce n'est pas ce qui est dit. Ici on parle de FFI et d'interopérabilité avec un autre langage comme c'est déjà possible avec le C.

Citation Envoyé par kilroyFR Voir le message
un langage de plus a la mode qui veut reinventer ce qui existe déjà.
Peut-être ? L'avenir nous dira si tu as raison. Par-contre, bien que tous les paradigmes de programmation au sein de rust existent aussi dans d'autres langages, ce sont généralement plus des POC (ou bien trop spécifique à un domaine) pour être utile à tous. Rust fait plutôt bien le boulot de ce côté-là.

Citation Envoyé par kilroyFR Voir le message
Je prefere peaufiner ma connaissance de C++20 et ses nouveautés que perdre du temps a repartir de zero avec un nouveau langage (qui sur le fond ne fait pas mieux les choses).
Quand a la gestion mémoire, comme avec l'avenement de C# ou on ne devait plus s'en occuper, c'est un leurre. Gerer proprement ses allocations/désallocations c'est la bas de bonnes pratiques (croire qu'il y aura toujours un petit genie pour les resoudre a notre place est un leurre - enfin moi je n'y crois plus).
Quand en embarqué le GC de C# se declenche au mauvais moment on doit user de parades donc sans interet. Sur beaucoup de composants techniques on est re passé de C# vers C++ pour ces raisons.
Comparer C# et rust est assez mal venu. Rust n'a pas de GC après tout, la gestion de la mémoire de rust est au final plus proche de celle du C++. La grosse différence vient du système d'ownership et de lifetime qui t'empêche de faire n'importe quoi. Peut-être devrais-tu jeter un autre coup d'oeil à rust finalement ?
0  0 
Avatar de destroyedlolo
Membre actif https://www.developpez.com
Le 24/12/2020 à 12:51
Je n'utilise pas Rust en tant que tel ( les C(++ ou pas), Lua pour le scripting et évidemment le bash me suffisent largement).
Mais mes machines tournants majoritairement sous Gentoo, je peste sur la lenteur qu'a son compiler à se compiler et surtout là mémoire garganduesque qu'il utilise : même avec 8 Go de RAM, ca passe limite
0  0 
Avatar de imperio
Membre émérite https://www.developpez.com
Le 24/12/2020 à 14:38
Citation Envoyé par destroyedlolo Voir le message
Mais mes machines tournants majoritairement sous Gentoo, je peste sur la lenteur qu'a son compiler à se compiler et surtout là mémoire garganduesque qu'il utilise : même avec 8 Go de RAM, ca passe limite
Gentoo ou autre, le problème est le même : Rust est lent et lourd pour la compilation. (Et je parle même pas de compiler rustc lui-même...)
0  0 
Avatar de destroyedlolo
Membre actif https://www.developpez.com
Le 24/12/2020 à 14:54
Citation Envoyé par imperio Voir le message
Gentoo ou autre, le problème est le même : Rust est lent et lourd pour la compilation. (Et je parle même pas de compiler rustc lui-même...)
D'autant plus qu'il n'est pas possible de faire de la compilation distribuée

(je développe principalement sur des SBC alors ...)
0  0 
Avatar de kilroyFR
Membre éprouvé https://www.developpez.com
Le 20/12/2020 à 18:03
Jamais compris l'interet de Rust si c'est pour se rapprocher du C++, autant faire du C++ que reapprendre un langage avec ses particularités (bien bizarres il faut le reconnaitre - y en a pas mal dans Rust). Pour avoir testé histoire de me faire un avis, j'ai finalement laissé tomber, un langage de plus a la mode qui veut reinventer ce qui existe déjà. Je prefere peaufiner ma connaissance de C++20 et ses nouveautés que perdre du temps a repartir de zero avec un nouveau langage (qui sur le fond ne fait pas mieux les choses).
Quand a la gestion mémoire, comme avec l'avenement de C# ou on ne devait plus s'en occuper, c'est un leurre. Gerer proprement ses allocations/désallocations c'est la bas de bonnes pratiques (croire qu'il y aura toujours un petit genie pour les resoudre a notre place est un leurre - enfin moi je n'y crois plus).
Quand en embarqué le GC de C# se declenche au mauvais moment on doit user de parades donc sans interet. Sur beaucoup de composants techniques on est re passé de C# vers C++ pour ces raisons.
1  3