Rust n'était pas exempt des critiques de Linus Torvalds

Il y'a quelques semaines l'actualité de certaines implémentations qui ont été faites en la branche linux-next, qui comprend un ensemble initial de composants pour développer des pilotes de périphériques dans la langue Rust.

Cette documentation a été publiée séparément sur l'utilisation de Rust dans le noyau Linux et un exemple de module de noyau avec un pilote de périphérique de caractères en langage Rust. Le code a été ajouté par Stephen Rothwell, responsable de la branche.

Après cela, Linus Torvalds a passé en revue la revue de la mise en œuvre patch de possibilités pour définir les pilotes de langage Rust dans le noyau Linux et a émis des critiques.

Les plus grosses plaintes ont été causées par le potentiel d'évasion "Panicen run-time failure" dans de mauvaises situations, par exemple, dans une situation de mémoire insuffisante, lorsque les opérations d'allocation de mémoire dynamique, y compris les opérations du noyau, peuvent échouer.

Torvalds a déclaré qu'une telle focalisation sur le noyau est fondamentalement inacceptable, Et si vous ne comprenez pas ce point, vous pouvez rejeter complètement tout code qui tente d'utiliser une telle approche. D'un autre côté, le développeur du patch était d'accord avec le problème et le considérait comme résoluble.

Un autre problème a été les tentatives d'utiliser des types à virgule flottante ou 128 bits, qui ne sont pas valides pour des environnements comme le noyau Linux.

Vous ne comprenez peut-être pas les ramifications du moment où cela peut arriver, alors peut-être
est moins problématique que je ne le pense, mais fondamentalement
Je pense que si une cartographie Rust peut provoquer la panique, c'est tout simplement
_ fondamentalement_ pas acceptable.

Mappage des échecs dans un contrôleur ou un code non-core, et c'est-à-dire pour
définition, tout nouveau code Rust, ne peut JAMAIS causer
panique valablement. Il en va de même pour «oh, dans certains cas, je n'ai pas essayé d'utiliser
Entiers de 128 bits ou virgule flottante '.

Donc, si le compilateur Rust provoque des affectations cachées qui ne peuvent pas être
détecter et renvoyer comme des erreurs, alors je crois sérieusement que tout cela
l'approche doit être complètement NAK'ed, et l'infrastructure Rust,
soit au niveau du compilateur, soit dans les wrappers du noyau, vous avez besoin de plus
travail.

Cela s'est avéré être un problème plus grave., car à ce moment La bibliothèque centrale de Rust est indivisible et représente une grande tache; il n'y a aucun moyen de demander uniquement certaines des fonctionnalités, évitant ainsi l'utilisation de l'une ou l'autre fonctionnalité problématique.

La solution au problème peut nécessiter des modifications du compilateur et de la bibliothèque rust, bien que l'équipe n'ait pas encore de stratégie sur la façon d'implémenter la modularité pour les bibliothèques de langage.

En outre, Torvalds a souligné que l'exemple de contrôleur fourni est inutile et conseillé de joindre comme exemple un pilote qui résout l'un des vrais problèmes.

Avant ça Google a annoncé sa participation à une initiative visant à promouvoir la prise en charge de Rust dans le noyau Linux y fourni des aspects techniques de la faisabilité de l'implémentation de Rust pour lutter contre les problèmes résultant d'erreurs de travail avec la mémoire.

Google pense que Rust est prêt à rejoindre C en tant que langage de développement Composants du noyau Linux. L'article fournit également des exemples d'utilisation du langage Rust pour développer des pilotes de noyau, dans le cadre de son utilisation sur la plate-forme Android (Rust est reconnu comme un langage officiellement pris en charge pour le développement Android).

Notez que Google a préparé un premier prototype de contrôleur écrit en Rust pour le mécanisme de communication inter-processus de Binder, qui permettra une comparaison détaillée des performances et de la sécurité des implémentations de Binder en C et Rust.

Dans sa forme actuelle, le travail n'est pas encore terminé, mais pour presque toutes les abstractions de base des fonctionnalités du noyau requises pour que Binder fonctionne, des couches ont été préparées pour utiliser ces abstractions dans le code Rust.

Enfin, si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


2 commentaires, laissez le vôtre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Miguel Rodriguez dit

    Toutes leurs critiques sont valables, étant donné que Rust est un nouveau langage qui fonctionne avec un paradigme différent de celui de C, il est compréhensible le souci de tout détail dans les bibliothèques ou dans le compilateur lui-même où, bien que le code soit valide, il sera provoquent également la rupture du noyau, comment il est implémenté et construit. C'est pourquoi des suggestions telles que la possibilité de modulariser la bibliothèque pour appeler et ne garder actives que les fonctions nécessaires au programme (ou dans ce cas à n'importe quel contrôleur) fonctionnent correctement. Ce que vous demandez n'est pas non plus déraisonnable, qu'ils vous apportent un vrai prototype de contrôleur qui fait bien un travail sur un problème actuel (ou du moins fait le même travail qu'un existant dans le noyau et fonctionne sans paniquer).

  2.   Sete dit

    De temps en temps, je relis des articles de Linux Adictos Mais il me faut très peu de temps pour désespérer quand je vois que malgré un très bon contenu, le résultat final est détruit avec une orthographe horrible.
    L'orthographe et la grammaire seront-elles si difficiles?
    C'est dommage!
    Courage!