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 !

JetBrains annonce la sortie de la version 2022.3 de MPS (Meta Programming System) :
Un aperçu des nouveautés de l'environnement de développement de langages DSL

Le , par Michael Guilloux

9PARTAGES

5  0 
JetBrains vient de publier la version 2022.3 de Meta Programming System (MPS), son environnement de développement de langages DSL. Cette version devait sortir l'année dernière, mais a dû être retardée en raison de problèmes techniques, qui sont à présent résolus. MPS 2022.3 améliore les règles de contrainte, la migration de la synchronisation avec les extensions MPS, les stubs Kotlin pour la JVM, et plus encore.

Avant d'entrer dans le détail des nouveautés et améliorations, rappelons qu'un langage dédié (en anglais, Domain specific language ou DSL) est un langage de programmation dont les spécifications sont conçues pour répondre aux contraintes d’un domaine d'application précis. Il s'oppose conceptuellement aux langages de programmation classiques (ou généralistes) comme Java ou C, qui tendent à traiter un ensemble de domaines. Dans de nombreux cas, les DSL ne sont pas conçus pour être utilisés par des développeurs, mais par des non-programmeurs maîtrisant parfaitement le domaine couvert par le langage dédié.

La construction des langages dédiés diffère fondamentalement de celle d'un langage classique. Le processus de développement peut s’avérer très complexe. Sa conception nécessite en effet une double compétence dans le domaine à traiter et en développement informatique. Mais un langage dédié étant basé sur les concepts et les fonctionnalités d'un domaine spécifique, il reste un moyen efficace de décrire et de générer des programmes dans ce domaine ; ce que veut faciliter JetBrains avec MPS.

MPS vous permet de concevoir votre propre langage dédié avec un environnement de développement complet. Il offre un éditeur de code et est fourni avec son propre moteur de génération de code, qui peut être utilisé pour fournir une sémantique aux DSL basés sur MPS. Vous pouvez donc créer des générateurs pour compiler votre DSL dans plusieurs langages cibles, tels que Java, C, XML, etc. Cela dit, pour ceux qui sont déjà familiers à MPS en particulier, quelles sont les nouveautés et améliorations de cette nouvelle version ?

La mise à jour des règles de contrainte (demandée par les utilisateurs)

JetBrains a créé le langage des règles de contrainte pour combler les lacunes du langage des contraintes. Pour cette version, les règles de contrainte ont été améliorées afin de rendre le langage plus facile à utiliser.

Il est maintenant possible de faire référence aux définitions des règles de contrainte à partir de NodeTestCases. Ce n'était pas possible auparavant.


Les définitions expérimentales des règles de contrainte permettent de spécifier des messages de journalisation dans la fenêtre Inspector afin d'améliorer la traçabilité et le débogage.


Le message d'erreur pour les règles de contrainte peut cibler des propriétés ou des références de nœuds spécifiques. Plutôt que l'erreur mette en évidence l'ensemble du nœud, il est possible de la configurer pour qu'elle ne mette en évidence qu'une seule propriété ou référence.


Amélioration du chargement des classes des modules

Les modules MPS ont divers objectifs, allant d'une sandbox pour tester votre langage à un code de plugin actif permettant d'altérer le comportement de MPS ou de la plateforme IntelliJ IDEA. Dans MPS 2022.3, JetBrains les a tous rassemblés sous le même toit. La page Java Facet du module Solution a été repensée pour inclure tous les paramètres pertinents et identifier les scénarios courants afin d'aider toute personne concevant ou utilisant un langage à reconnaître facilement l'utilisation prévue d'un module. IDEA Plugin Module Facet est obsolète et ne sera plus utilisé. JetBrains n'a exposé les paramètres que pour les modules Solution. Les modules Language et Generator suivent la même approche, mais leurs paramètres sont configurés de façon implicite.

Synchronisation de la migration avec les extensions MPS

MPS a toujours eu une communauté active, génératrice de valeur pour l'écosystème, et JetBrains encourage les utilisateurs à recourir à des bibliothèques externes pour enrichir les fonctionnalités du produit. Les bibliothèques tierces, telles que MPS Extensions, ont joué un rôle essentiel dans l'amélioration de l'expérience utilisateur des produits créés avec MPS. En dépit des nombreux avantages apportés à la communauté, il reste un inconvénient important : il faut attendre la migration de la bibliothèque tierce pour mettre à jour la version de MPS. JetBrains a travaillé avec itemis, son partenaire officiel et principal mainteneur de l'extension MPS, pour synchroniser leurs versions afin de faciliter la migration vers la dernière version du produit.

Autres méthodes utilitaires dans la définition du langage

Les concepteurs de langages peuvent désormais réduire la quantité de code répétitif en l'extrayant dans des méthodes d'assistance à l'intérieur même du nœud racine de la définition. Ces méthodes supplémentaires peuvent être définies dans :

  • Les contraintes
  • Les actions de transformation et de substitution
  • Les règles d'inférence et de vérification
  • Les correctifs rapides
  • Les intentions

Les intentions permettent également d'ajouter des champs supplémentaires afin de préserver les valeurs calculées dans la méthode isApplicable et de les utiliser dans la méthode execute.

Stubs Kotlin pour la JVM

Il est désormais possible d'importer des stubs à partir de bibliothèques Kotlin/JVM compilées, alors qu'il n'était auparavant possible d'importer que des bibliothèques Kotlin/Common. Avec cette amélioration, il est possible d'utiliser des bibliothèques compilées en JVM (Java, Kotlin ou mixtes) via la racine du modèle Kotlin JVM dans les options de votre module.


Améliorations de l'édition en Kotlin

Plusieurs modifications et améliorations mineures ont été apportées à cette nouvelle version de MPS :

  • Les classes Kotlin sont désormais des nœuds racinables et disposent de leurs propres icônes.
  • Le code Kotlin peut désormais faire référence aux entrées enum de Java.
  • L'expression this peut désormais se référer correctement à un libellé (par exemple this@SomeClass).
  • Les indicateurs withKotlin dans les scripts de build demandent maintenant une macro $kotlinc_home au lieu d'un emplacement codé en dur comme précédemment.
  • Les stubs ont été améliorés :
    • L'exclusion et l'inclusion de paquets dans les options de stub fonctionnent désormais comme avec les stubs Java.
    • Plusieurs méthodes dont l'identifiant était instable, ce qui entraînait des références erronées, ont été corrigées.


Transformation permettant de créer un constructeur à partir d'un type

Il est maintenant possible de créer un appel de constructeur pour un appel donné, à l'aide d'une transformation droite en tapant une parenthèse ouvrante. Cela peut fonctionner pour tout type Kotlin prenant en charge cette opération (vous pouvez l'étendre à des types utilisateurs) et peut faciliter la création d'une expression par défaut pour un type donné, comme lors de la création d'une lambda à partir d'un type d'interface fonctionnelle.


Améliorations des fonctions d'extension dans les portées

Les fonctions d'extension dans les portées ont été modifiées afin de ne pas exclure des méthodes compatibles dans les portées. En contrepartie, certains éléments sont maintenant inclus dans les portées alors qu'ils ne sont pas applicables en raison des performances du type actuel d'implémentation du système.

La résolution automatique des références de fonctions permet de corriger les références si vous sélectionnez une fonction non applicable.


Nouvelle intention de réinitialisation du classpath et options de machine virtuelle

Une nouvelle intention met à jour le nœud MPSStartupScript et définit les options de machine virtuelle et les valeurs de classpath en fonction des valeurs MPS actuelles. Les options de machine virtuelle et de classpath de MPS changent à chaque nouvelle version. Auparavant, l'utilisateur devait mettre à jour manuellement les projets de build d'un EDI autonome.


Guide de migration

Lors de la publication de chaque nouvelle version majeure, JetBrains prépare des instructions pour la migration à partir de versions plus ancienne de MPS pour s'assurer que tout fonctionne correctement. JetBrains vous invite à les étudier attentivement.

Nouveautés et téléchargement de MPS 2022.3

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