• [^] # Re: mode Brice on

    Posté par . En réponse au journal Linus répond à la controverse sur R4L (Rust pour Linux). Évalué à 4.

    TL;DR: Pourquoi des contributeurs souhaitent-ils écrire des parties du noyaux Linux en Rust ? Quel est cet intérêt, ou quels sont-ils, si important qu’il pourraient justifier une complexification global du projet, à plusieurs égards et de façon assez évidente.

    Aucun langage à ce jour s’est montré à même de remplacer le C. S’il n’est pas devenu aussi rare qu’un Fortran ou Cobol, et qu’une « nouvelle » standardisation voit le jour tous les 15 ans environ, c’est peut-être qu’il est en pratique impossible de faire mieux en matière de langage, pour avoir un langage qui soit à la fois « de haut niveau », et réduit au strict minimum afin de rester assez générique pour être une abstraction des différents codes assembleurs.

    En 2025 les ordinateurs fonctionnent toujours en manipulant des « mots mémoires », des « adresses ». Leurs architectures n’ont fondamentalement pas changé.

    J’ai le souvenir d’une personne ayant appris le C très jeunes et n’ayant jamais fait le moindre effort pour s’ouvrir à un autre langage , qui répondait à celles et ceux qui lui demandaient pourquoi il n’avait jamais cru bon d’apprendre un autre langage : « J’ai toujours pu écrire les programmes que je voulais en C, toujours, pour quelle raison devrais-je passer du temps à apprendre un autre langage ? »

    Me vient à l’esprit une réponse : pour le challenge intellectuel, pour ouvrir d’autres chemins de pensée, élargir son horizon. Puis tout de suite la réalisation qu’écrire un programme en C possède intrinsèquement tout le nécessaire pour un « exercice intellectuel de qualité », que les langage est par essence tellement versatile, tellement universel, qu’apprendre ou utiliser un autre langage doit être justifié sérieusement. Alors dans certains cas ça se justifie, bien entendu, mais dans le cas d’un noyau de système d’exploitation je me demande bien quel sont les prétextes avancés par les développeurs souhaitant introduire Rust, et l’ayant déjà fait, j’avais eu l’occasion de voir ça en m’astreignant à compiler un noyau Linux récent, par curiosité et humeur nostalgique. Quand j’ai commencé à utiliser Linux c’était courant de le faire, nécessaire pour un tas de trucs. Depuis je dirais au moins une quinzaine d’année je n’y avais plus jamais touché. Et bien ça n’a pas changé, en tous cas sur la manière de le faire, par contre c’est devenu vraiment énorme.

    D’ailleurs faudra que je retente l’expérience. J’avais fait une tentative l’année dernière, le noyau a compilé mais pas booté. Faut dire que j’ai pas pris le mode easy : je suis parti de "allnoconfig" déjà. Comme je suis curieux j’allais souvent faire une recherche sur le web afin de savoir le quoi ou le pourquoi de telle ou telle option. Je faisais donc l’exercice sur plusieurs jours, ce qui m’a incité à mettre à jour le code source entre chaque session (tant qu’à faire dans le didactique... _o_). Donc forcément, en fusionnant à chaque fois la config déjà faite avec les nouvelles options disponibles (le fichier de configuration évoluant : nouvelles options, certaines renommée, c’est rare, des options qui disparaissent, assez rare aussi).

    Je pense que je retenterai de manière moins hardcore la prochaine fois :)

    si vous aimez bâtir des structures complexes d’objets simples, faites du C. Si vous préférez les structures simples d’objets complexes, alors C++ répondra à toute vos attentes et plus encore.
    Si vous aimez Rust, alors écrivez en OS en Rust. Vous pouvez écrire un Unix en Rust, commencez par un micro-kernel bien sûr, pour faire quelque chose de pro, pas comme Linus et son Unix de bricoleur qui était déjà obsolète en 1994 !