Adoption de Rust : qui l’utilise et comment

C’est le premier d’une série en deux parties.

Rust a été la langue la plus appréciée dans l’enquête annuelle de Stack Overflow pendant sept années consécutives, et Rust Conference 2022 a mis en évidence les nombreuses industries et développeurs qui naviguent sur les mers de Rust. Alors que de nombreux développeurs présents à la conférence ont tracé une voie claire, il y en a encore un certain nombre qui se demandent comment ils pourraient utiliser le langage.

Conçu comme une alternative plus fiable et plus sûre au C++, le développeur de logiciels Graydon Hoare a créé Rust en tant que projet personnel alors qu’il travaillait chez Mozilla Research en 2006.

Microsoft, l’une des principales entreprises technologiques qui l’utilisent, a décidé que le C++ n’était plus acceptable pour écrire des logiciels critiques, qualifiant Rust de meilleur choix sur le marché pour un langage performant et sécurisé en mémoire.

Voyons qui utilise la technologie, pourquoi elle est appréciée et ce qui peut empêcher les autres de se joindre à eux.

Qui l’utilise vraiment ?

La Fondation Rust compte environ 38 membres et donateurs et répertorie 138 utilisateurs de production. La part du lion revient aux éditeurs de logiciels, dont beaucoup fournissent des API et des services. Cela est en train de changer à mesure que de nombreuses industries verticales, petites entreprises, universités et centres de recherche se joignent à nous. Une estimation de 200, semble être une sous-estimation quand on comprend que les infrastructures de calcul, comme chez Amazon Web Services (AWS), sont oxydées (c’est-à-dire réécrites en tout ou partie en Rust). Du coup, de nombreuses applications existantes peuvent bénéficier de Rust sans frais supplémentaires ou avec des coûts supplémentaires limités.

Pouvons-nous cependant identifier 200 entreprises ? Eh bien techniquement, je ne suis arrivé qu’à 174. L’auteur de “Black Hat Rust” Sylvain Kerkour présente plus de 42 entreprises l’utilisant dans ses recherches. Nous avons croisé ceux-ci avec la liste de la Rust Foundation et en avons ajouté quelques-uns récemment annoncés publiquement. Il existe donc des preuves raisonnables d’une inclusion substantielle du langage par les développeurs dans les grandes et les petites entreprises pour la production et le développement.

Le référentiel de packages de Rust, Crates.io, croît au rythme respectable de 87 caisses par jour, selon Modulecounts. Pas le plus rapide, mais pas anémique non plus. Parallèlement à cela, les améliorations de performances dans l’exécution du code et la stabilité du compilateur ont tendance à augmenter. Les investissements s’accéléreront probablement à mesure que la familiarité et la confiance avec la langue grandiront.

Développements d’infrastructures (API et services cloud)

Il peut être facilement illustré que les principaux fournisseurs de technologies (beaucoup d’utilisateurs) ont repris le flambeau de Rust. Considérez la portée de cela seul. Qu’est-ce qui a pu influencer ces grands fournisseurs de cloud ? Peut-être la rapidité et l’efficacité de la langue. Peut-être, des exemples spécifiques comme le départ réussi de Dropbox d’AWS vers sa propre plate-forme en utilisant une grande quantité de Rust. Utilisez-vous Dropbox ? Surprise que vous utilisiez Rust !

Amazon Web Services a également vu les avantages très tôt, en basant des technologies telles que la technologie de virtualisation Firecracker et Crater, l’outil de test, sur Rust. AWS propose un SDK Rust.

Sur la base de problèmes de sécurité et de fiabilité, Azure CTO Mark Russinovich exhorte les développeurs à éviter d’utiliser C ou C++ dans les nouveaux projets, préconisant qu’ils utilisent Rust à la place. Il a récemment déclaré que l’industrie devrait traiter les langages C et C++ comme “obsolètes”. Cet article de ZDNet fait également allusion à l’utilisation de Rust chez Meta, Google (Android et Chrome), le noyau Linux et peut-être même à l’intérieur de Windows lui-même.

Du côté des utilisateurs et des startups, l’outil de conception collaborative basé sur le Web Figma, récemment acquis par Adobe, a décrit ses expériences, bonnes et mauvaises, avec le développement de Rust dans cet article de 2018. Gardez à l’esprit que l’amélioration continue par la communauté Rust est en cours depuis lors. Pourtant, de nombreux utilisateurs et développeurs utiliseront Rust dans les outils cloud, peut-être à la fois sciemment et involontairement.

Augmentation de l’adoption par les chercheurs et les scientifiques

La vitesse d’exécution du code augmente par rapport à, disons, Python, le favori actuel pour la recherche scientifique, conduit beaucoup à annoncer le nouvel environnement Rust. Cela dirige les chercheurs en science des données et en intelligence artificielle vers Rust. La performance dans la formation de grands ensembles de données est importante et devient cruciale lorsque les systèmes sont en cours de développement. De plus, plus d’une douzaine de bibliothèques de calcul sont utilisées ou en cours de développement par la communauté Rust. Ce nombre n’inclut pas les bibliothèques de prise en charge du traitement des données disponibles.

Les progrès du langage de Rust

Efficacité et énergie

Le « biais vert » est un facteur de cette progression. Rust peut faire ses preuves aux côtés de C et C ++ en étant généralement aussi efficace et économe en énergie que n’importe quel langage de bas niveau. Des recherches menées au Portugal révèlent l’efficacité de Rust. Il convient de noter que des critiques valables de ces données existent. Par exemple, la taille de référence pour C++ est si petite que ce test mesure principalement l’initialisation d’OpenMP. Ces critiques n’affectent généralement pas le point ici, à savoir que Rust est extrêmement économe en énergie. Jetez un œil aux données de performance les plus récentes. L’amélioration de la chaîne d’outils pourrait même apporter une amélioration supplémentaire. Veuillez comparer comment Python, bien qu’un langage merveilleux, se comporte dans cette analyse.

Dans son article “Rust – Le langage de programmation pour chaque industrie,Cosmin Cartas présente les données sous un autre angle. Il a des chiffres intéressants sur les performances dans WebAssembly, en particulier par rapport à JavaScript/Node.js. Cette analyse démontre que Rust peut être compétitif dans ce domaine important de l’échange homme-ordinateur.

Données GitHub

GitHub fournit peut-être les aspects les plus révélateurs de cette augmentation de l’adoption de Rust. Dès nov. 10, il y a au moins 24 dépôts de tendances écrits avec Rust comme langue principale. Une recherche directe simple montre qu’il y en a 165 209 spécifiant le langage Rust. Il s’agit d’une augmentation de plus de 9 000 référentiels depuis septembre de la même année.

Awesome Rust (non officiel) sur GitHub compte environ 1 300 entrées couvrant apparemment la plupart des principaux domaines d’intérêt de l’informatique moderne à au moins un degré modeste. Comme l’API de GitHub a suffisamment changé ces dernières années pour empêcher la récupération en temps opportun des résultats significatifs pour cette enquête, de plus amples détails sur l’utilisation par le secteur industriel seront publiés dans un prochain article.

Critiques et lacunes

Les lacunes dans les environnements d’exécution ou de bibliothèque sont rares dans le sens où peu de domaines restent intacts. Il y a quelques thèmes récurrents dans la maturité. Amélioration de la mise en réseau asynchrone et hautement parallélisée, production de systèmes d’apprentissage automatique / d’intelligence artificielle de pointe, besoin d’une certaine clarté ou direction de l’implémentation de l’interface utilisateur et juste en général, pour réitérer, la maturité de la caisse dans certains domaines.

Cargo, le gestionnaire de packages / build, a une variété de critiques mitigées malgré sa puissance. La plupart de cela semble provenir de ceux qui souhaitent créer de grandes versions multilingues ou peut-être ont-ils un fort biais « Make/CMake ». Cargo a des réponses à ces défis, mais bien sûr « le diable se cache dans les détails ». Souvent, ce qui est simple pour un ingénieur est un défi pour un autre, tout dépend de l’exposition, du temps et de l’état d’esprit.

Les commentaires suivants sont partiellement extraits des commentaires de développeurs connus et d’Internet :

  • Les durées de vie sont déroutantes pour beaucoup
  • La syntaxe et le style sont différents des langages plus courants
  • Les craintes d’une complexité supplémentaire se profilent
  • Les erreurs peuvent être difficiles à déboguer
  • Trouver de l’aide au-delà des informations souvent obsolètes des moteurs de recherche
  • Certains ont ouvert que des bibliothèques importantes sont encore immatures ou ont des verrues
  • Les E/S asynchrones dans Rust peuvent être difficiles
  • La plupart des programmes de systèmes nécessitent des niveaux de codage supplémentaires pour la « sécurité »
  • Dépendance à LLVM dans certains cas.

Un graphique de l’enquête Rust 2020 fournit un peu plus de couleurs sur les sentiments des gens sur les sujets liés à la langue. Cela s’avère être une bonne liste sur la façon de concentrer vos études après avoir dépassé les bases.

Certains considèrent la « rigidité » de Rust comme un inconvénient, tandis que d’autres estiment qu’il s’agit d’un atout considérable à long terme. Ce que vous ressentez peut dicter un certain degré de réussite. Cependant, si un peu de frustration supplémentaire vous aide à expédier du code avec un ensemble de bogues minimisé, vous pourriez penser qu’il vaut la peine de faire face à une certaine “strictité”.

Rust dépendra de LLVM pour l’avenir grand public. Cela pourrait être un inconvénient distinct pour l’utilisation d’enchères (ou créant une complexité excessive) pour certains environnements embarqués, par exemple. Même avec cela, de nombreux backends LLVM sont créés pour générer du code sur de très petits microcontrôleurs. Les microcontrôleurs ESP-32, par exemple, ont été très populaires auprès des amateurs et semblent bien pris en charge.

Il y a du travail dans l’espace GCC (GNU Compiler Collection) qui portera inévitablement ses fruits pour aider aussi. De nombreux environnements ont également un moyen de compiler de manière croisée et d’utiliser une couche d’abstraction matérielle en C comme un moyen utile pour un ordinateur à carte unique (SBC) ou une puce particulière. Le backend Cranelift est également adapté à des fins dans cet espace.

Bien que Rust ne soit pas un monde complètement étranger pour la plupart des développeurs, certaines généralisations sont faites sur le flux et une variété de syntaxes obscures qui doivent d’abord être maîtrisées pour devenir vraiment productifs. Cela inclut également ce que j’appelle la lignée de la mémoire (pas un terme Rust). Vous devez réfléchir un peu à la façon dont la mémoire est transmise et gérée par le système en utilisant les concepts de durée de vie, de propriété, d’emprunt, de clonage et de mutabilité. La maîtrise de cette pensée, cependant, vous libère des terreurs de déploiement des ordures qui s’effondrent. Oui, cela peut vous amener à vous demander si l’époque du ramasseur d’ordures touche à sa fin.

Prochaine étape – Partie 2

Il est évident que le langage Rust est sur une tendance haussière et a des raisons substantielles derrière son succès, malgré quelques défis. Que Rust ait été adopté dans de nombreux domaines est facilement perceptible. Dans le prochain article, nous examinerons quelques domaines spécifiques d’adoption et approfondirons son histoire fascinante.

Groupe Créé avec Sketch.

Leave a Comment

Your email address will not be published. Required fields are marked *