Nouveautés de MPS 2021.3

MPS 2021.3 apporte la nouvelle fonctionnalité de langage Coderules, la prise en charge expérimentale de Kotlin, les lambdas Java, de nombreuses améliorations pour le VCS, et bien plus encore.

Coderules

Nous travaillons sur un nouveau système de types depuis quelques années. Le chemin pour y parvenir n'a pas été simple mais nous avons enfin quelque chose à vous montrer. Coderules est encore en version bêta, c'est pourquoi il n'est pas intégré à MPS.

Comme il s'agit d'un sous-système complet, nous avons préparé un cours en ligne pour vous guider dans ses principes fondamentaux.

Accéder au cours

Prise en charge expérimentale du langage Kotlin

Prise en charge expérimentale du langage Kotlin

Une implémentation expérimentale de Kotlin est maintenant intégrée à MPS. Bien que la plupart des éléments de structure du langage (et leur génération de texte) soient pris en charge, cette dernière reste incomplète.

En savoir plus.

Action Hide revision dans les annotations

Action Hide revision dans les annotations

La nouvelle action Hide revision vous permet d'exclure une révision du résultat de l'annotation sur place et d'afficher le résultat à la fois dans l'éditeur et dans la gouttière. Les révisions exclues peuvent être restaurées avec l'action opposée Restore Hidden Revisions.

En savoir plus.

Optimisation des résultats de l'action Annotate revision

L'action Annotate dans MPS n'est pas aussi rapide que l'opération git blame pour les fichiers texte puisque le résultat de l'annotation est construit pour les modèles. Les actions Annotate revision et Annotate previous revision utilisent le même algorithme pour construire le résultat que l'action Annotate, et étaient donc également lentes. Le résultat des actions Annotate revision et Annotate previous revision peut être construit instantanément à l'aide du résultat des actions Annotate initiales.

Boîte de dialogue des détails dans les racines de fusion

Boîte de dialogue avec plus de détails dans les racines de fusion

L'action Show Details a été introduite pour apporter plus de détails sur les branches pendant une fusion. L'action est accessible depuis la fenêtre Merge revision.

Courte description des modifications dans des infobulles dans la boîte de dialogue Diff

Descriptions des modifications plus courtes dans des infobulles de la boîte de dialogue Diff

Nous inaugurons une nouvelle action qui permet de modifier la description des modifications dans les infobulles de la boîte de dialogue Diff. La description est plus courte et plus lisible.

Amélioration des infobulles de l'éditeur
Demandé par nos utilisateurs

Lorsque vous cliquez sur les liens dans les infobulles, la fenêtre contextuelle des infobulles reste maintenant dans la fenêtre principale de l'application. Vous pouvez également faire défiler le texte d'une infobulle si elle en contient beaucoup.

Nouvel algorithme de diff dans le processus de fusion

Nouvel algorithme de diff dans le processus de fusion
Demandé par nos utilisateurs

Le nouvel algorithme a été développé pour trouver les changements conflictuels, non conflictuels et symétriques pour les modifications de nouveaux types. Nous inaugurons un mécanisme d'interface utilisateur pour basculer entre les algorithmes avec et sans suivi du mouvement des nœuds dans la fenêtre Merge.

En savoir plus.

Détection des modifications imbriquées et non imbriquées dans la boîte de dialogue Diff

Détection des modifications d'encapsulation et de désencapsulation dans la boîte de dialogue Diff
Demandé par nos clients

Même s'il était auparavant possible de détecter les insertions, les suppressions et les déplacements à l'intérieur des modifications d'encapsulation ou de désencapsulation, ces modifications elles-mêmes n'étaient pas détectées. Il est désormais possible de détecter des modifications d'encapsulation et de désencapsulation imbriquées.

Réorganisation des paramètres VCS

Réorganisation des paramètres de VCS

Les paramètres de VCS ont été réorganisés pour les rendre plus facilement accessible et simplifier leur utilisation. Dans Preferences/Settings | Version Control, vous trouverez maintenant une liste des paramètres disponibles pour configurer votre VCS. Nous avons en outre ajouté un nœud Directory mappings distinct, et les opérations en arrière-plan sont maintenant activées par défaut.

Si vous accédez au nœud Git à partir de là, vous remarquerez que nous avons divisé les paramètres en sections correspondant aux processus les plus importants : Commit, Push, et Update.

Génération de fermetures compatibles dans les lambdas Java

Génération de fermetures compatibles dans les lambdas Java
Demandé par nos clients

Les fermetures MPS sont maintenant générées en expressions lambda Java si elles sont compatibles. Les incompatibilités incluent l'utilisation des éléments suivants :

  • Opérations yield
  • Classes abstraites « fonctionnelles »
  • Annotations
  • Variables locales en conflit avec la portée du parent

En savoir plus.

Mapping label pour les tuples

Mappage d'étiquettes pour les tuples
Demandé par nos utilisateurs

Nous introduisons une fonctionnalité expérimentale qui permet d'utiliser une paire de nœuds en tant que clé pour le mappage node<>, node<> --> node<>. Elle est utile dans les situations où vous devez prendre en charge deux concepts sources. Si vous souhaitez l'essayer, elle s'utilise de la même manière que les étiquettes avec un seul nœud clé.

En savoir plus.

Accéder à toutes les valeurs de deux mappages clés dans les générateurs
Demandé par nos clients

En plus de la fonctionnalité de mappage d'étiquettes pour les tuples, nous prenons maintenant en charge une requête pour accéder à tous les mappages connus pour deux clés données, genContext.get output list LABEL for (node1, node2).

Consignation du temps passé à résoudre les références dynamique dans le suivi des performances

En raison des nombreuses évaluations de portée, la résolution des références dynamiques ralentit souvent la transformation de modèle à modèle. Le suivi des performances contenait cette information vitale sous l'intitulé « restoring references ». Désormais, le temps passé à restaurer les références dynamiques est consigné séparément du temps passé à restaurer les références régulières ou statiques.

Améliorations de la migration des projets

Améliorations de la migration des projets

Dans cette version, nous avons simplifié le processus de création des migrations de projets. Il vous suffit de créer une solution de plugin, d'écrire la racine du plugin de migration et d'application, et d'inclure cette solution de plugin avec le script du build.

Améliorations de la tâche Ant <migrate>

La tâche Ant <migrate> prend désormais en charge plusieurs spécifications de projets et peut migrer plusieurs projets à la fois. Vous pouvez utiliser les éléments imbriqués <project path="”/> ou le <dirset> normal d'Ant pour énumérer les emplacements de projets pour la tâche.

Checkout and Rebase onto Current pour les branches distantes

Checkout and Rebase onto Current pour les branches distantes

L'action Checkout and Rebase onto Current vous permet d'extraire la branche sélectionnée et de la rebaser sur une branche actuellement extraite. Auparavant, cela n'était possible que pour les branches locales, mais dans MPS 2021.3, vous pouvez également l'utiliser pour les branches distantes.

Nouvelle fenêtre d'outil Changes

Nouvelle fenêtre d'outils Changes

Dans MPS 2021.3, l'IDE montre la différence entre les commits dans une fenêtre d'outils Changes séparée, située sur la gauche de l'éditeur.

Nouvelle action Push All up to Here

Nouvelle action Push All up to Here

Cette fonctionnalité vous permet de n'envoyer en push que les commits sur lesquels vous n'avez pas de doute et de laisser le reste pour plus tard. Pour l'utiliser, choisissez le commit auquel vous voulez vous arrêter, faites un clic droit pour appeler le menu contextuel, et sélectionnez la nouvelle action Push All up to Here.

Guide de migration 2021.3

Comme pour chaque version, nous avons préparé un Guide de migration pour une transition fluide depuis une ancienne version.