JetBrains annonce la sortie de la version 2019.1 de Meta Programming System (MPS)
JetBrains annonce la sortie de la version 2019.1 de Meta Programming System (MPS)
son environnement de développement de langages dédiés (DSL)
À l'instar de la plupart de ses EDI, JetBrains a annoncé la sortie de la première mise à jour majeure de cette année pour Meta Programming System (MPS), son environnement de développement de langages dédiés.
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.
Pour ceux qui sont déjà familiarisés avec MPS, l'EDI de JetBrains pour les langages dédiés embarque un bon lot de nouveautés dans sa version 2019.1. Au niveau de l'éditeur par exemple, les concepteurs de langage peuvent désormais définir le style et la priorité des éléments du menu de complétion de code. Il est possible de changer la couleur de fond et du texte, mettre un élément en gras ou italique, et même de masquer des éléments, comme cela est illustré dans l'image suivante. Notez toutefois que cette fonctionnalité est expérimentale et que sa conception peut subir des modifications dans le futur.
Au niveau de BaseLanguage, la principale nouveauté est que MPS vous permet maintenant de créer des méthodes statiques dans des interfaces. Pour information, BaseLanguage est un langage équivalent à Java, qui partage avec Java presque le même ensemble de constructeurs. Il a en effet été créé en tant que copie de Java 6 avant de se doter de plusieurs extensions au fil du temps. BaseLanguage est également la cible la plus courante de la génération de code dans MPS.
MPS 2019.1 améliore aussi sa prise en charge des plug-ins. Il est par exemple possible d'utiliser les plug-ins MPS à partir de la tâche de migration Ant : maintenant, si un plug-in est nécessaire à la migration d'un projet, vous pouvez le spécifier dans la tâche <migrate>. Le plug-in correspondant sera activé, ainsi que ses dépendances.
En outre, l'instruction "run code from solution" vous permet d'activer des plug-ins dans l'instance MPS qui exécutera le code. Les dépendances du plug-in seront également incluses.
Bon nombre d'améliorations ont été apportées à l'EDI. L'une d'entre elles est la possibilité de créer un thème d'interface utilisateur personnalisé. La plateforme IntelliJ vient d'introduire cette fonctionnalité intéressante et, puisque MPS est basé sur cette plateforme, vous pouvez désormais personnaliser les thèmes de l'interface utilisateur pour votre EDI. Vous pouvez le faire de deux manières : importer les nouveaux thèmes prédéfinis sous forme de plug-ins ou créer simplement vos propres thèmes avec Intellij IDEA.
Toujours au niveau de l'EDI, la configuration d'exécution de JUnit accepte désormais le déploiement des plug-ins. Vous pouvez maintenant fournir une liste de plug-ins IntelliJ IDEA à déployer lors de l'exécution d'un test. La tâche Before launch "Assemble Plugins" est également disponible dans la configuration d'exécution de JUnit. Elle génère automatiquement les plug-ins qui sont en train d'être déployés et copie les artefacts dans le répertoire des paramètres.
Entre autres améliorations, l'EDI indique maintenant si les validations (commits) entrantes et sortantes sont disponibles pour les branches individuelles dans la fenêtre contextuelle Branches.
Vous trouverez la liste exhaustive des nouveautés et améliorations dans MPS 2019.1 sur le site officiel de l'EDI. Mais ajoutons encore pour les utilisateurs de MPS que toute la documentation est en train d'être migrée de Confluence vers le centre d’aide de JetBrains. Plus d'améliorations sont prévues de ce côté dans les prochaines versions de l'environnement de développement de langages dédiés.
:fleche: Télécharger MPS
Source : Annonce officielle de JetBrains
Voir aussi :
:fleche: IntelliJ IDEA 2019.1 est disponible, l'EDI pour Java vient avec les expressions Switch et offre enfin la possibilité de personnaliser les thèmes
:fleche: CLion 2019.1 disponible : l'EDI C/C++ vient avec un meilleur support du développement embarqué, ClangFormat comme formateur de code alternatif et plus
:fleche: Python en 2018, les chiffres clés de la communauté : EDI, frameworks, utilisation, SGBD, ORM, tests...
:fleche: WebStorm 2019.1 disponible : tour d'horizon des nouveautés de l'EDI de JetBrains pour les développeurs JavaScript
:fleche: IntelliJ IDEA, PhpStorm, PyCharm... Il est enfin possible de personnaliser des thèmes en couleur pour les EDI JetBrains grâce à un changement dans la plateforme IntelliJ
:fleche: JetBrains fait le bilan de son année 2018 : six millions de développeurs ont utilisé ses produits, plus d'un million de licences ont été offertes
JetBrains annonce la sortie de MPS 2019.3, son environnement de développement de langages dédiés
JetBrains annonce la sortie de la version 2019.3 de MPS (Meta Programming System)
la dernière mise à jour majeure de l'année pour son environnement de développement de langages dédiés
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.
Pour en venir à la version 2019.3 de MPS, elle est un peu spéciale, car c'est la première fois que JetBrains consacre un cycle de développement complet à la stabilisation du produit. Pour les versions précédentes, l'entreprise se concentrait sur le développement de fonctionnalités, et la correction des bogues était une préoccupation secondaire. Bien que la communauté apprécie toujours une version avec beaucoup de fonctionnalités, JetBrains a également reçu de nombreuses demandes d'amélioration des performances et de stabilisation en général. En tant que réponse à ces demandes, MPS 2019.3 est une version axée principalement sur la correction des bogues : en plus d'améliorations significatives, plus de 700 problèmes ont été corrigés. Toutefois, cela ne signifie pas qu'il n'y a pas de nouvelles fonctionnalités dans MPS 2019.3. Quelles sont donc les nouveautés et améliorations dans l'environnement de développement de langages dédiés de JetBrains ?
Déchargement de modèle
Dans les versions précédentes, MPS n'était pas en mesure de décharger les modèles. Cela signifie que si vous travaillez avec MPS sur une longue période et que vous avez accédé à de nombreux modèles, tous ces modèles seraient chargés en mémoire. Ainsi, la consommation de mémoire augmenterait avec le temps, ce qui affectait également les pauses du ramasse-miettes. Mais il est maintenant possible d'améliorer la consommation de mémoire en retirant explicitement tous les modèles de la mémoire. Vous pouvez cliquer sur l'indicateur de mémoire ou définir un paramètre de nettoyage programmé (en secondes) avec l'action Registry. Il s'agit d'une fonctionnalité qui est pour le moment expérimentale et que JetBrains prévoit d'améliorer dans les futures versions de MPS.
Conversion de concepts et d'interfaces
JetBrains a ajouté une nouvelle intention qui convertit un concept en un concept d'interface et inversement. Vous pouvez utiliser cette fonction lors de la création d'une structure de langage, et cela n'en change pas les utilisations.
Action Quick Definition
Quick Definition est similaire à son homologue dans IntelliJ IDEA. Il suffit de cliquer sur un nœud, maintenir les touches Ctrl-Maj-I, et vous obtenez une fenêtre contextuelle affichant la définition du nœud. Cette fenêtre contextuelle vous permet de naviguer, de sélectionner d'autres nœuds et de lancer l'action Find. Il n'est donc pas nécessaire d'ouvrir un nouvel onglet à chaque fois que vous souhaitez avoir un aperçu du nœud.
Modules de générateurs indépendants et plusieurs générateurs par langage
Vous pouvez à présent créer plusieurs générateurs par langage, et soit les héberger à l'intérieur d'un langage (comme dans les versions précédentes), soit les ajouter à côté d'un langage comme un module de niveau supérieur normal. L'utilisation de plans de générateurs vous permet de tirer le meilleur parti de plusieurs générateurs. Pour faciliter la transition, un seul des générateurs de langage continuera d'être impliqué pour un modèle sans plan de génération explicite. Le nouveau générateur peut être créé à partir du menu contextuel du langage et la boîte de dialogue ci-dessous a une nouvelle case que vous pouvez cocher pour le rendre autonome.
Créer à partir d'une utilisation
Il est maintenant possible de créer des concepts, des méthodes et des classes à partir d'utilisations dans le code. L'intention peut créer une classe sur de nouvelles déclarations, des méthodes dans les expressions, ainsi que des concepts et des interfaces dans des rôles enfant/référence et dans extends/implements.
Génération d'identifiants Java valides à partir de INamedConcepts
Une nouvelle déclaration de générateur vous permet de générer un identifiant Java valide à partir de tout INamedConcepts. Cela crée un nom unique en supprimant les symboles illégaux, en transformant des lettres en majuscules et en ajoutant un préfixe si nécessaire.
Find Usages : nouvelle déclaration pour signaler un résultat de recherche arbitraire lors de l'écriture d'un module de recherche
Dans les versions précédentes de MPS, la déclaration "add result" du module de recherche n'acceptait que des résultats de recherche basés sur "node<>". Maintenant, avec "add raw result", le concepteur de langage peut afficher tous les résultats que la vue Find Usages est en mesure de visualiser.
:fleche: Télécharger MPS 2019.3
Voir aussi :
:fleche: Sortie de DataGrip 2019.3, l'EDI de JetBrains destiné aux administrateurs de bases de données vient avec le support de MongoDB et une première version du débogueur PL/SQL
:fleche: RubyMine 2019.3 est disponible avec la possibilité de configurer le mappage pour RuboCop, apporte un meilleur aperçu du code et améliore le débogueur
:fleche: IntelliJ IDEA 2019.3 est disponible avec une amélioration notable des performances et de la qualité, ainsi que de nombreuses corrections de bugs
:fleche: WebStorm 2019.3 est disponible avec un démarrage plus rapide, une prise en charge plus avancée de Vue.js et une complétion de code plus intelligente pour JavaScript
:fleche: PhpStorm 2019.3 est disponible et intègre un support complet de PHP 7.4, le style de code PSR-12, le support de MongoDB, le Windows Subsystem for Linux (WSL), et autres
:fleche: Sortie de CLion 2019.3, la dernière version majeure de l'année 2019 pour l'EDI C/C++ de Jetbrains