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

514PARTAGES

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...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

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 chevronné 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 chevronné 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