Première release candidate pour la 1.0 de RLS !

Une toolchain plutôt musclée

RLS est une chaîne d’outils, indépendante de toute plateforme connue (e.g. Eclipse, IntelliJ), destinée à fournir le confort d’un IDE tout en offrant une interface aux éditeurs qui souhaitent la supporter. Dans les faits, RLS est un serveur communiquant en arrière-plan avec un client (qui peut être un éditeur ou un environnement complet), qui se chargera de fournir les diagnostics respectifs de chaque outil du backend. Par ailleurs, vous pouvez consulter une implémentation du frontend de RLS pour Visual Studio Code sur son dépôt.

Ce 19 août, la première release candidate à la version 1.0 a été annoncée et prévue pour le 3 septembre. Durant cette période, la communauté est vivement encouragée à chercher le moindre bug, le moindre problème et à le signaler pour ceux qui en ont le temps et l’envie. Passons à la révision ! :)

Ferris le crabe (mascotte officieuse de Rust) !
Ferris le crabe (mascotte officieuse de Rust) !

Support

Bien que toute jeune, la suite est supportée par 4 outils (dont 1 IDE) présentés ci-dessous:

  1. Visual Studio Code;
  2. Atom;
  3. Sublime Text;
  4. Eclipse (lien original).

Rust disposant dès maintenant de son propre module pour IntelliJ, nous pourrions espérer que cette plateforme rejoigne bientôt la liste !

Fonctionnalités proposées

Au même titre qu’un environnement de développement intégré "classique", vous pourrez y retrouver tout le nécessaire pour ne plus avoir à jouer avec ALT+TAB toute la journée.

Coloration syntaxique

Chaque éditeur (standalone ou non) supportera sa propre coloration pour la syntaxe du langage.

Complétion du code

Comme précisé dans le billet, la complétion ne sera que syntaxique. Cela signifie que l’analyseur peut parfois vous transmettre un diagnostic incorrect dû à son champ d’action réduit. Comme contre exemple, je pourrais présenter l’analyseur statique des IDE IntelliJ qui, lui, analyse également la structure de votre code et peut pratiquement remplacer les retours du compilateur du langage cible (ce n’est toutefois pas encore le cas pour Rust).

Pour les curieux, cette fonctionnalité est fournie par la crate Racer.

Erreurs et avertissements

Les erreurs et avertissements normalement renvoyés par le compilateur seront directement affichés à la ligne près, rendant la résolution de ces erreurs de compilation plus aisée.

Formatage

Géré évidemment par Rustfmt, lui-même en phase de passer à sa première version stable(0.99.3) à l’heure où j’écris ces lignes.

Analyse intelligente du code

Comme cité plus haut, cette fonctionnalité se rapproche de l’analyse statique. Entre autre, elle permettra de:

  • détecter la documentation d’une signature en passant sa souris dessus au lieu d’aller directement chercher ce que nous voulons sur le site de la crate en question;
  • trouver toutes les occurrences d’une signature dans notre code;
  • détecter les implémentations des traits et des types concrets;
  • détecter et réajuster les modèles d’imports obsolètes;

En revanche, il est précisé que toutes ses aides à l’analyse ne seront pas disponibles au sein de la logique écrite dans les macros, voire même lors de leur utilisation. Elles ne seront pas non plus disponibles pour des éléments parents d’un élément courant.

foo::bar::baz
// ^ Dans ce chemin, nous ne
// bénéficierons que d'une analyse
// pour `baz` et non `bar` ni `foo`.

Me concernant, j’ai, jusqu’ici, toujours utilisé chacun de ces outils séparément (sans RLS, donc) et offrent déjà, selon moi, une aide très précieuse sur beaucoup de points. N’étant "qu’une" amélioration de ce qui existe déjà, cette préversion sera un prétexte comme un autre pour tester la chaîne et certainement l’adopter.

Amusez-vous bien !

Source

6 commentaires

Les versions précédentes de RLS avaient tendance à planter assez facilement, notamment quand le code commence à grossir, avec des erreurs assez énigmatiques. J’espère que ça sera mieux avec cette version.

backmachine

C’est ce que j’ai cru comprendre. Je ne suis pas allé voir sur le bug tracker, mais peut-être que ces problèmes ont été réglé depuis. Tu saurais me dire à quel moment tu as utilisé RLS ?

[…] Merci pour ce billet ! :)

Ekron

De rien !

Bonne journée à vous deux ! :)

Ah bah voilà, moi qui cherchais un outil pour avoir la complétion sous Vim (qui ne semble pas inclue dans le rust-mode), ce billet m’a fait découvrir vim-racer. Je teste ça immédiatement !

Faudrait que je trouve le temps de m’y mettre…

Ekron

Ça vaut le coup d’oeil.

Après quelques jours de pratique un peu sérieuse je commence à jouer avec des projets non-triviaux (qui reproduisent des problématiques bas niveau rencontrées au boulot, typiquement résolues en C++ dans un système majoritairement en Python). Clairement c’est trop tôt pour parler "d’adoption", parce que je ne pense pas en avoir assez vu pour faire une idée définitive, et parce que la techno est tellement jeune que la version stable n’est pas encore compatible avec la seule crate vraiment indispensable à ma pratique (PyO3), mais je trouve que le langage lui-même, la façon dont il a été pensé et son écosystème sont hyper prometteurs.

+0 -0

C’est ce que j’ai cru comprendre. Je ne suis pas allé voir sur le bug tracker, mais peut-être que ces problèmes ont été réglé depuis. Tu saurais me dire à quel moment tu as utilisé RLS ?

Songbird

Je ne l’ai pas utilisé personnellement, une personne qui fait du Rust sur Twitch l’utilisait avec VScode. Il faisait des choses diverses, un bot, lire les fichiers md2 de mod pour quake (géométrie + texture de monstres il me semble) et faire le rendu avec wasm, un émulateur pour je ne sais plus quoi, …
Personnellement je suis plutôt vim + youcompleteme mais je manque d’idées/besoins et temps pour utiliser Rust.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte