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.
Nous avons 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.
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, nous les avons 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é. Nous n'avons 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. En savoir plus.
MPS a toujours eu une communauté active, génératrice de valeur pour l'écosystème, et nous encourageons les utilisateurs à recourir à des bibliothèques externes pour enrichir les fonctionnalités du produit. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with 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. Nous avons travaillé avec itemis, notre partenaire officiel et principal mainteneur de l'extension MPS, pour synchroniser nos versions afin de faciliter la migration vers la dernière version du produit.
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 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.
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. En savoir plus.
Plusieurs modifications et améliorations mineures ont été apportées à cette nouvelle version de MPS :
this
peut désormais se référer correctement à un libellé (par exemple this@SomeClass
). $kotlinc_home
au lieu d'un emplacement codé en dur comme précédemment. 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.
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.
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 IDE autonome.
Lors de la publication de chaque nouvelle version majeure, nous préparons des instructions pour la migration à partir de versions plus ancienne de MPS pour s'assurer que tout fonctionne correctement. Veuillez les étudier attentivement.