IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

Présentation de la première release de Rust Language Server, un kit d'outils de programmation en Rust et bien d'autres langages,
Par Nick Cameron

Le , par Songbird

0PARTAGES

Une toolchain plutôt musclée

RLS (Rust Language Server) 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 !


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.

Code Rust : Sélectionner tout
1
2
3
4
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écieusement 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

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