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 !

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

Le , par Stéphane le calme

45PARTAGES

18  0 
Apple semble s'intéresser de plus en plus à l'utilisation de Rust pour la programmation de bas niveau. Voici la description d'une offre d'emploi ainsi que les qualifications requises :

« Vous êtes passionné par le développement de logiciels sécurisés et performants au niveau des systèmes ? Nous développons et déployons des logiciels qui constituent la base de certains des services les plus importants d'Apple, notamment iCloud, Maps, iTunes, etc. Notre logiciel garantit que les services d'Apple sont fiables, évolutifs, rapides et sécurisés. Dans ce rôle, vous aurez une occasion unique de participer à la fourniture de certains des services cloud les plus importants au monde ».
  • 3-5 ans d'expérience avec C.
  • Expérience avec Rust souhaitable et un énorme plus
  • Expérience de travail avec les réseaux de bas niveau.
  • Expertise avec les systèmes d'exploitation de type Unix.
  • Compétences de communication claires.

« Nous recherchons un ingénieur logiciel expérimenté avec une passion pour les réseaux informatiques et la sécurité. Faites partie d'une petite équipe hautement qualifiée de services d'infrastructure réseau chez Apple.

« L'équipe Apple Cloud Traffic fournit une couche réseau sécurisée pour étayer les applications destinées aux consommateurs. Basée sur une implémentation personnalisée d'IPsec, elle doit gérer le chiffrement de chaque paquet passant entre les serveurs au sein et entre les vastes centres de données, avec une surcharge minimale. Les protocoles RPC sécurisés personnalisés gèrent la saisie, l'authentification et l'autorisation de tous les flux de trafic.

« Les performances et la sécurité des systèmes que nous construisons sont essentielles. Nous nous connectons directement aux interfaces du noyau Linux de bas niveau, en utilisant des E / S asynchrones et des threads pour distribuer la charge de travail. Après une première incursion très réussie dans Rust, nous migrons une base de code établie de C vers Rust et créons de nouvelles fonctionnalités principalement dans Rust ».

Rust de plus en plus évoqué pour la programmation système

Le développement du système UNIX a débuté en 1969 et son code a fait l’objet de réécriture en langage C en 1972. En 1985, c’était la sortie de Windows 1.0. Même si le code source du système d’exploitation de la firme de Redmond est fermé, l’entreprise elle-même a indiqué que le noyau du système d’exploitation est principalement écrit en C. C’est pareil pour Linux dont la plus grosse part de la base de code est écrite en C. En matière de programmation système, le langage C peut désormais être considéré comme l’actuelle norme. « Le langage C est le nouvel assembleur », déclarait alors Josh Triplett d’Intel.

Le C s’est imposé aux travailleurs de la filière programmation système pour plusieurs raisons. À l'occasion de l'édition 2019 de l'Open Source Technology Summit, Josh Triplett est revenu sur certaines d'entre elles. Tout d'abord, en tant que langage évolué, le C permet aux développeurs de gagner en matière d’utilisabilité et de productivité ; c’est moins de lignes du code pour accomplir les mêmes tâches en comparaison à l’assembleur. C’est aussi un niveau de performance qui proche de celui de l’assembleur. Ensuite, le passage au C n’induit pas de pertes en termes de possibilités que l’assembleur offre.

Pourtant, lors de l'édition 2019 du Linux Security Summit, des chercheurs en sécurité ont mis le doigt sur l’une des plus grosses tares que le langage C traîne : les problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon. Lors de sa sortie à l’Open Source Technology Summit, l’ingénieur d’Intel est revenu sur ce détail en ajoutant que « les développeurs ont besoin d’un langage évolué qui apporte réponse aux problèmes qui ne peuvent être résolus en C et qui introduit des fonctionnalités intéressantes. »

C'est dans ce contexte que Rust a été évoqué et l'ingénieur a estimé que « Rust est le futur de la programmation système et C le nouvel assembleur », prenant la peine d'expliquer en quoi.


La communauté Linux est elle-même lancée sur des réflexions en lien à la façon d’intégrer la prise en charge de Rust. « Nous devons adopter une approche de prise en charge identique à celle des compilateurs et procéder à la vérification de la disponibilité de divers drapeau de compilation à l’étape de configuration », a précisé Linus Torvalds. La sortie du créateur du célèbre noyau open source marque en principe son accord avec le principe de la prise en charge de plus en plus importante du langage Rust au sein de Linux.


De façon graduelle, Microsoft migre vers Rust au détriment du C/C++ que l’entreprise ne juge plus acceptable pour la mise sur pied d’applications dites système. Motif : Rust offre de meilleures garanties en matière de sécurisation des logiciels que le couple C/C++. Les initiatives allant dans le sens de faire un usage plus extensif du langage se multiplient donc chez l'éditeur. Cette année par exemple, Microsoft a annoncé l’arrivée d’un nouveau membre dans la famille des outils de projection de langage dont fait partie C++/WinRT : Rust/WinRT. 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.

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.

Source : Apple

Et vous ?

Que pensez-vous de Rust ?
Est-il, selon vous, un bon candidat pour pallier les lacunes du C/C++ décriées par les chercheurs en sécurité ?

Voir aussi :

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
L'année 2020 est-elle celle de Rust au sein du noyau Linux ? C'est ce que suggère une sortie de Linus Torvalds qui donne des instructions sur l'introduction de son support au système de build
« Rust est le futur de la programmation système et C le nouvel assembleur », d'après un ingénieur d'Intel, qui explique pourquoi il est pertinent de passer à Rust

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

Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 14/09/2020 à 11:21
Citation Envoyé par JPLAROCHE Voir le message
je trouve que dire de "C/C++" que c'est une vraie passoire et mal programmé, est aller vite en besogne, sert certain son peu regardant, mais ce n'ait pas le cas de tout le monde , Lire les cahiers sur dévellopez de bonne conduite de programmation ils sont encore en ligne.
Les bonnes pratiques c'est très bien, et même indispensable en C++, mais ça ne sont pas des garanties.
En C++ avoir un code bien sécurisé est une tache complexe qui n'est pas a la portée du premier venu et qui requiert une attention de tout les instants, même pour les développeurs chevronnés, car la moindre inattention peut très vite se transformer en faille de sécurité. Et la plupart des sociétés (notamment Microsoft, Oracle, Mozilla, Apple) qui ont fait des revues de vulnérabilité sur leurs grosses applications C++ sont arrivées a des résultats similaires : même avec des politiques de qualité élevées, environ 70% des failles de sécurité critiques relèvent de catégories de problèmes qui seraient techniquement impossibles avec un langage comme Rust.

Citation Envoyé par JPLAROCHE Voir le message
d'autre part je n'ai pas besoin de vouloir pouver que mon langage XXX est le meilleurs au détriment YYY ... Bref de savoir que certaine entreprise prennent RUST me suffit. Quand au reste libre à moi de choisir selon mes besoins.
Il ne s'agit pas de prouver que le langage X est meilleur que le langage Y, mais de connaitre leur différence pour savoir lequel est le plus adapté à quelle situation.

Citation Envoyé par CaptainDangeax Voir le message
Un nouveau langage, rust, dont tout le monde parle. J'ai essayé. Un bête "hello world" en C, compilé avec GCC, fait entre 7 et 8 ko. Le même en Rust, donne peu ou prou le même code assembleur (oui, je regarde le code assembleur) et le linker en fait un fichier de 7Mo. Oui, oui, oui...
Les projets où je programme sont des projets perso, et c'est soit en C soit en ASM parce que je cible des µcontrolleurs. Il n'y a même pas de compilateur C++. Alors, le rust...
La différence de taille pour une compilation basique est tout a fait normale vu que, par défaut, Rust lie la lib standard en statique et inclus plus d'infos de débogage.
Mais si tu compile avec la bibliothèque liée dynamiquement et que tu strippe les info de débogage, les tailles sont quasi identique à du C++. En fait, c'est même légèrement plus petit en Rust chez moi, mais l'écart est tellement faible que je suppose que ça doit varier en fonction des version de compilateurs.
8  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 16/09/2020 à 13:02
Citation Envoyé par mh-cbon Voir le message
le seul projet made in rust que j'utilisais au quotidien c'était servo pour firefox. Après des mois d'attente d'améliorations suite aux nombreux crash que celui ci provoquait et subissait au jour le jour j'ai abandonné et je suis repartit vers chromium. de là à dire que rust n'atteint pas ses objectifs, voir, est tout buggé, il n'y a que la possibilité que les dev de servo sont mauvais qui m'en empêche. Mais bon ça me laisse songeur quand à ces décisions. On verra bien ce que ça donne.
Attribuer a un langage les défaut d'un programme c'est déjà cavalier en soi comme raisonnement, mais en plus Firefox est très loin d'être majoritairement en Rust ce qui rend la chose d'autant plus incorrecte.

Citation Envoyé par Montaigne Voir le message
Rust est le remplaçant de C ET de C++, car il a un système de type largement, voire plus évolué que celui de C++, et lui au moins n'a pas une spécification de 1500 pages complètement incohérente. Quiconque a voulu écrire un parser C++ sait de quoi je parle.
Ce a quoi on peu facilement rétorquer que c'est difficile de comparer Rust sur ce point, vu qu'il ne dispose pas d'une spécification officielle.
Je ne dirais pas que le système de type est plus évolué, juste différent. En particulier, il n'est pas basé sur un système de hiérarchie des classes, ce qui peut être vu comme une qualité ou un inconvénient.
4  0 
Avatar de Montaigne
Membre du Club https://www.developpez.com
Le 16/09/2020 à 11:06
Citation Envoyé par mh-cbon Voir le message
le seul projet made in rust que j'utilisais au quotidien c'était servo pour firefox. Après des mois d'attente d'améliorations suite aux nombreux crash que celui ci provoquait et subissait au jour le jour j'ai abandonné et je suis repartit vers chromium. de là à dire que rust n'atteint pas ses objectifs, voir, est tout buggé, il n'y a que la possibilité que les dev de servo sont mauvais qui m'en empêche. Mais bon ça me laisse songeur quand à ces décisions. On verra bien ce que ça donne.
Sauf que la comparaison n'est pas valable : Firefox n'est pas totalement écrit en Rust, loin de là, il y a encore énormément de C++
Donc attribuer les crash de Firefox à Rust, c'est risqué
2  0 
Avatar de JPLAROCHE
Membre confirmé https://www.developpez.com
Le 14/09/2020 à 0:16
je trouve que dire de "C/C++" que c'est une vraie passoire et mal programmé, est aller vite en besogne, sert certain son peu regardant, mais ce n'ait pas le cas de tout le monde , Lire les cahiers sur dévellopez de bonne conduite de programmation ils sont encore en ligne.

d'autre part je n'ai pas besoin de vouloir prouver que mon langage XXX est le meilleurs au détriment YYY ... Bref de savoir que certaines entreprises prennent RUST me suffit. Quand au reste libre à moi de choisir selon mes besoins.
0  0 
Avatar de CaptainDangeax
Membre éprouvé https://www.developpez.com
Le 14/09/2020 à 10:03
Un nouveau langage, rust, dont tout le monde parle. J'ai essayé. Un bête "hello world" en C, compilé avec GCC, fait entre 7 et 8 ko. Le même en Rust, donne peu ou prou le même code assembleur (oui, je regarde le code assembleur) et le linker en fait un fichier de 7Mo. Oui, oui, oui...
Les projets où je programme sont des projets perso, et c'est soit en C soit en ASM parce que je cible des µcontrolleurs. Il n'y a même pas de compilateur C++. Alors, le rust...
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 14/09/2020 à 10:27
Hello

@JPLAROCHE, le problème avec C/C++ est que tu auras beau avoir les meilleurs développeurs, tu n'es jamais à l'abri d'une fuite de mémoire, aussi le langage est permissif rien ne t'oblige à utiliser les smarts pointers, avec Rust c'est implicite.

@CaptainDangeax, actuellement j'ai 2.8Mo, je pense que c'est le static linking qui veut ça
0  0 
Avatar de JPLAROCHE
Membre confirmé https://www.developpez.com
Le 14/09/2020 à 16:22
Citation Envoyé par Uther Voir le message
Les bonnes pratiques c'est très bien, et même indispensable en C++, mais ça ne sont pas des garanties.
En C++ avoir un code bien sécurisé est une tache complexe qui n'est pas a la portée du premier venu et qui requiert une attention de tout les instants, même pour les développeurs chevronnés, car la moindre inattention peut très vite se transformer en faille de sécurité. Et la plupart des sociétés (notamment Microsoft, Oracle, Mozilla, Apple) qui ont fait des revues de vulnérabilité sur leurs grosses applications C++ sont arrivées a des résultats similaires : même avec des politiques de qualité élevées, environ 70% des failles de sécurité critiques relèvent de catégories de problèmes qui seraient techniquement impossibles avec un langage comme Rust.
D'abords merci pour la réponse , je préfère votre réponse, le langage Rust par définition oblige le programmeur à respecter cette sécurité pour moi c'était une évidence.
0  0 
Avatar de freesket
Membre du Club https://www.developpez.com
Le 15/09/2020 à 10:20
Rust semble vraiment intéressant... Vu le support des éditeurs, il y a moyen que ce langage attire pas mal de développeurs... Donc la création de librairie et le cercle vertueux qui va avec.
Pour moi, c'est quand même plus un remplaçant de C que de C++.
De ce que je vois, la communauté C++ a réagi pour pallier au manque de sécurisation "automatique" (gros avantage de Rust) avec la création de checker post compilation (à automatiser donc...) :
https://devblogs.microsoft.com/cppbl...019-preview-2/
Il existe l'équivalent pour Clang.
Ces outils ne sont pas terminés, mais c'est pour moi cela est très prometteur, par contre, je ne vois rien d'équivalent en C... (ceci dit, il est possible que ces checkers fonctionnent sur du code C).
0  0 
Avatar de Montaigne
Membre du Club https://www.developpez.com
Le 16/09/2020 à 11:11
Citation Envoyé par freesket Voir le message
Rust semble vraiment intéressant... Vu le support des éditeurs, il y a moyen que ce langage attire pas mal de développeurs... Donc la création de librairie et le cercle vertueux qui va avec.
Pour moi, c'est quand même plus un remplaçant de C que de C++.
De ce que je vois, la communauté C++ a réagi pour pallier au manque de sécurisation "automatique" (gros avantage de Rust) avec la création de checker post compilation (à automatiser donc...) :
https://devblogs.microsoft.com/cppbl...019-preview-2/
Il existe l'équivalent pour Clang.
Ces outils ne sont pas terminés, mais c'est pour moi cela est très prometteur, par contre, je ne vois rien d'équivalent en C... (ceci dit, il est possible que ces checkers fonctionnent sur du code C).
Rust est le remplaçant de C ET de C++, car il a un système de type largement, voire plus évolué que celui de C++, et lui au moins n'a pas une spécification de 1500 pages complètement incohérente. Quiconque a voulu écrire un parser C++ sait de quoi je parle.
C++ vivra de son inertie, mais il est enfin temps de se débarrasser de ce dinosaure mal conçu.
0  0 
Avatar de mh-cbon
Membre extrêmement actif https://www.developpez.com
Le 15/09/2020 à 7:59
le seul projet made in rust que j'utilisais au quotidien c'était servo pour firefox. Après des mois d'attente d'améliorations suite aux nombreux crash que celui ci provoquait et subissait au jour le jour j'ai abandonné et je suis repartit vers chromium. de là à dire que rust n'atteint pas ses objectifs, voir, est tout buggé, il n'y a que la possibilité que les dev de servo sont mauvais qui m'en empêche. Mais bon ça me laisse songeur quand à ces décisions. On verra bien ce que ça donne.
0  4