Journal Librsvg utilise maintenant le langage Rust

Posté par  . Licence CC By‑SA.
44
5
jan.
2017

Bonjour nal,

Tu te souviens peut-être de Rust le langage de Mozilla qui apporte une syntaxe de haut niveau et protège des bugs liés à la gestion de la mémoire tout en ayant les mêmes caractéristiques de performance que le C++ (pas de garbage-collector, code compilé et optimisé avec LLVM, etc.)

Mozilla l'utilise depuis quelques mois dans Firefox et s'est lancé dans un vaste chantier pour 2017 : le projet Quantum.

Mais bien que Mozilla soit les créateurs du langages, ce ne sont pas les seuls à s'y intéresser. Ces derniers mois les développeurs de GNOME ont commencé à étudier la possibilité d'utiliser Rust, tant pour remplacer Vala, que pour remplacer le C.

Et ce mardi 3 janvier, le premier fruit de ce rapprochement a vu le jour : la dernière version de Librsvg utilise maintenant le langage Rust, même si le C reste encore majoritaire à l'heure actuelle :

librsvg-2.41.0$ cloc .
     303 text files.
     288 unique files.                                          
     169 files ignored.

github.com/AlDanial/cloc v 1.68  T=3.59 s (37.6 files/s, 21668.2 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Bourne Shell                    11           4166           4769          26258
C                               37           3349           1972          13869
m4                              13           1151            187          10090
HTML                            19              8              0           3597
Rust                            14            819            252           3178
C/C++ Header                    26            493            584           1342
make                            11            165            124            696
CSS                              1             35             36            408
XML                              2             17              8            132
Vala                             1              3              0             34
-------------------------------------------------------------------------------
SUM:                           135          10206           7932          59604
-------------------------------------------------------------------------------

(via https://www.reddit.com/r/rust/comments/5m1vsk/librsvg_a_significant_package_on_many_linux/dc07276/)

Pour les distributions qui package GNOME, ce changement va leur demander un peu de boulot :

Apologies in advance to distros who will have to adjust their build systems for Rust - it's like taking a one-time vaccine; you'll be better off in the end for it.

«Je m'excuse d'avance pour les distros qui vont devoir ajuster le système de “build”[1] pour inclure Rust. Dites-vous que c'est comme prendre un vaccin, vous vous en porterez mieux plus tard»

Mais j'imagine que la plupart d'entre elles ont déjà été confrontées au problème à cause de Firefox.

De mon point de vue c'est une très bonne nouvelle. Le C et le C++ n'ont jamais pu être totalement remplacés par des langages plus sûrs pour des questions de performances et du coup au 21ème siècle on subit toujours des catastrophes liées à une mauvaise gestion de la mémoire. Rust est un très grand pas en avant vers une informatique enfin débarrassée des «segfault» et autres «arbitrary code execution» et c'est bien de voir que ce projet arrive à prendre pied hors des frontières du projet qui l'a vu naître.

source : https://mail.gnome.org/archives/desktop-devel-list/2017-January/msg00001.html

[1]: Ça se dit comment en bon français ?

  • # En français, ça se dit...

    Posté par  . Évalué à 6.

    À "build system", je ne connais aucune traduction exacte. Mais beaucoup d'idées me viennent en tête

    • système d'assemblage
    • système qui fait
    • système faiseur (avec une référence à Dune :-)
    • système de compilation

    ou encore, en se passant du mot système

    • chaîne d'assemblage
    • chaîne de compilation

    et même, dans ce cas particulier

    «Je m'excuse d'avance auprès des distros qui vont devoir adapter leurs outils d'empaquetage pour gérer Rust. Dites-vous que c'est comme prendre un vaccin, en fin de compte vous en sortirez gagnantes.»

    Bref, je m'égare. Je partage par ailleurs ton enthousiasme à l'adoption du Rust.

  • # Bourne

    Posté par  (site web personnel) . Évalué à 5.

    Je suis surpris par le nombre de ligne de Shell dans un tel projet ! Ce sont les autotools ?

    • [^] # Re: Bourne

      Posté par  . Évalué à 1.

      D'après le fil de discussion reddit d'où je tire le cloc, il semblerait que oui.

    • [^] # Re: Bourne

      Posté par  . Évalué à 5. Dernière modification le 06 janvier 2017 à 12:55.

      J'ai aussi tiqué sur le passage sur la répartition par langage.
      Si les 26k de shell sont générées par des outils, elles de devraient pas être comptabiliser.
      Ensuite, sur la méthode elle même, compter des lignes est très brutale.
      Si Rust est moins verbeux alors sont empreinte totale est sous estimée.
      Si un langage est utilisé sur une partie critique et d'autres sur de l'enrobage, il devrait ressortir.
      Bref, IMHO, un tel indicateur n'est pas très pertinent et je suis content de voir une deuxième réalisation concrète en Rust après Servo.

      • [^] # Re: Bourne

        Posté par  . Évalué à 5.

        je suis content de voir une deuxième réalisation concrète en Rust après Servo.

        Je ne suis pas sûr qu'on puisse parler de Servo comme d'une «réalisation concrète», c'est avant tout un projet de recherche qui vise à expérimenter sur le parallélisme dans le navigateur, on est encore très loin d'avoir un vrai navigateur fonctionnel.

        Firefox utilisant du Rust pour l'analyse des fichiers mp4 c'est un vrai projet concret par contre.

        Niveau truc concret écrit en Rust, il y a aussi ripgrep qui est cool.

        • [^] # Re: Bourne

          Posté par  (site web personnel, Mastodon) . Évalué à 5.

          Il y a déjà un OS complet, avec GUI et tout: http://www.redox-os.org
          Il faut quoi de plus? :o)

          • [^] # Re: Bourne

            Posté par  (site web personnel) . Évalué à 4.

            Redox is a Unix-like Operating System written in Rust, aiming to bring the innovations of Rust to a modern microkernel and full set of applications.

            Fichtre serait ce un Hurd killer ? Oo
            Cette société numérique dans laquelle les jeunes venus se permettent de piétiner les vénérables avec de la rouille en plus, pfff moi ça me fait grincer
            :-D

            kentoc'h mervel eget bezan saotred

        • [^] # Re: Bourne

          Posté par  (site web personnel) . Évalué à 4.

          Je ne suis pas sûr qu'on puisse parler de Servo comme d'une «réalisation concrète», c'est avant tout un projet de recherche qui vise à expérimenter sur le parallélisme dans le navigateur, on est encore très loin d'avoir un vrai navigateur fonctionnel.

          Servo comme navigateur complet, sans aucun doute, mais par contre l'intégration de composants de Servo dans firefox semble être pour dans pas longtemps (cette année) : c'est le projet Quantum.

        • [^] # Re: Bourne

          Posté par  (site web personnel, Mastodon) . Évalué à 6. Dernière modification le 08 janvier 2017 à 16:12.

          Je ne suis pas sûr qu'on puisse parler de Servo comme d'une «réalisation concrète»,

          De mon point de vue, c'est une réalisation concrête pour Rust. Je veux dire par là, c'est une application qui existe, qui fonctionne, avec laquelle d'ailleurs il a pu être montré les avantages de Rust.

          Certes, ça n'en fait pas un bon navigateur dans le sens où il manque encore beaucoup de choses pour qu'il puisse remplacer un navigateur existant, dans la vraie vie. Mais ce n'est pas non plus un hello world amélioré. Il y a du concret. son developpement est suffisement avancé pour dire, "regardez, on peut faire un navigateur en Rust". C'est d'ailleurs bien pour cela que certains de ses composants vont être intégré dans Firefox.

  • # Regain de développement sur librsvg?

    Posté par  (site web personnel, Mastodon) . Évalué à 10.

    Ah si ça veut dire un regain sur le développement de librsvg, c'est surtout cela qui m'intéresse! Car librsvg a été assez moribond depuis pas mal d'années maintenant avec une quasi absence de maintenance. D'ailleurs je viens de jeter un œil sur le dépôt, je constate effectivement un afflux soudain de commits à partir de fin octobre 2016.
    Depuis pas mal d'années, les sorties de librsvg, c'était à peine quelques commits.

    J'ai pas mal de rapports de bugs (et même plusieurs patchs) qui attendent dans le bugtracker. Peut-être mes patchs vont-ils enfin avoir une revue de code et une intégration? :-) Ce serait bien, car librsvg est en effet utilisé par beaucoup de logiciels, mais il a des bugs assez sévères qui le rendent dans certains cas presque inutile pour le traitement de fichiers SVG (ce qui est triste quand on sait que c'est son cas d'utilisation!).

    À moins que ça signifie que nos patchs seront simplement abandonnés si les portions de code sont convertis en Rust? Bon si ça veut dire que ça marche mieux, moi je veux bien. J'espère donc que ce regain d'activité va perdurer dans le temps!

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

  • # erreur de copier/coller de lien ?

    Posté par  (site web personnel) . Évalué à 2.

    "Ces derniers mois les développeurs de GNOME ont commencé à étudier la possibilité d'utiliser Rust,"

    Le lien sous "mois" est-il le bon ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.