Nouveautés de MPS 2026.1

MPS utilise désormais la plateforme IntelliJ 2026.1, JDK 25 et Kotlin 2.3. Build Language gère les dépendances transitives, les migrations sont plus fiables et reproductibles, et la qualité des stubs Java a été considérablement améliorée. Le plugin Projectional Agent Toolkit fourni permet aux agents de programmation IA de lire et d'écrire des modèles MPS, ce qui permet aux développeurs MPS et aux concepteurs de langage d'accéder à différents concepts de développement avancés.

Nous vous invitons à explorer la liste complète de modifications ci-dessous.

Projectional Agent Toolkit : les agents de programmation IA peuvent désormais interagir directement avec les modèles MPS

MPS est fourni avec Projectional Agent Toolkit, un plugin qui expose la projection MPS, le modèle et l'atelier de conception de langages aux agents de programmation IA via le protocole MCP (Model Context Protocol). Des agents tels que Claude Code, OpenAI Codex, JetBrains Junie et tout autre client compatible MCP peuvent se connecter à une instance MPS active et interagir avec cette dernière comme un développeur : en parcourant les modules et les modèles, en lisant et en modifiant des nœuds depuis l'éditeur projectionnel, en résolvant des références, en inspectant des hiérarchies de concepts, en générant du code et en exécutant des configurations. Ils n'ont plus à traiter les fichiers .mps comme du code XML opaque.

Le plugin Projectional Agent Toolkit apporte plusieurs outils couvrant tous les aspects d'un projet MPS :

  • Projets, modules et modèles : ils permettent aux agents d'énumérer des solutions, des langages et des devkits, d'ouvrir et de créer des modèles, et de résoudre des dépendances.
  • Langages et concepts : ils donnent aux agents la possibilité d'inspecter les hiérarchies de concepts, les propriétés, les enfants, les références et les composants hérités, ainsi que d'implémenter des concepts de structure à partir d'un blueprint JSON.
  • Nœuds racine et nœuds : ils permettent aux agents de lire, de créer, de mettre à jour, de déplacer et de supprimer des nœuds au moyen d'opérations tenant compte des nœuds et respectant les contraintes des concepts, plutôt que par des modifications au niveau du texte.
  • Références et portées : les agents peuvent interroger les cibles assignables pour un lien de référence, de sorte que l'agent sélectionne un référent valide dès le premier essai.
  • Configurations d'exécution : elles donnent aux agents la possibilité de lister et d'exécuter les configurations de lancement du projet afin de valider les modifications de bout en bout.

Afin de s'assurer que les agents deviennent productifs aussi rapidement que possible, les outils incluent également un ensemble de skills : des playbooks ciblés livrés avec les outils et qui tiennent compte des modèles. Elles apprennent à l'agent comment les langages MPS sont organisés, comment implémenter des concepts de structure, comment travailler avec l'éditeur, comment écrire BaseLanguage en tant qu'AST JSON et comment enregistrer les mémoires propres au DSL pour les futures sessions. Les skills peuvent être découvertes via le même canal MCP ; ainsi, un agent qui vient de se connecter peut demander à MPS ce qu'il doit savoir avant de commencer l'édition.

L'expérience de travail avec différents assistants IA dans les IDE basés sur IntelliJ s'étend désormais naturellement au développement de langages et de DSL : un agent peut implémenter un nouveau concept, configurer son éditeur et ses contraintes, ajouter des méthodes de comportement, créer du code DSL, le régénérer et le tester, puis l'exécuter sans quitter le modèle sémantique MPS. Pour les concepteurs de langage, cela transforme l'assistance IA, qui de simple outil de saisie semi-automatique du code devient un collaborateur qui comprend la projection.

Le plugin Projectional Agent Toolkit est une fonctionnalité expérimentale qui peut être sujette à des modifications d'API à l'avenir. Elle est intégrée et activée par défaut. Démarrez simplement le serveur MCP intégré et pointez votre agent compatible MCP vers l'instance MPS pour afficher automatiquement les outils et les skills.

Lisez la documentation de Projectional Agent Toolkit pour prendre connaissance de toutes les informations.

Migration vers la plateforme IntelliJ 2026.1, JDK 25 et Kotlin 2.3

MPS 2026.1 marque l'achèvement de la transition vers la génération actuelle de la plateforme IntelliJ. L'environnement d'exécution est JDK 25, tandis que la version intégrée de Kotlin est 2.3.0. De plus, MPS crée et fournit ses propres artefacts kotlinx-metadata-klib / kotlin-metadata-jvm depuis le référentiel Kotlin avec la balise 2.3.0 correspondante, restaurant ainsi la prise en charge des stubs Kotlin basés sur KLib que la dernière version publique de kotlinx-metadata-klib:0.0.6 ne pouvait pas fournir.

Possibilité de vérification de ICheckedNamePolicy par rapport à des langages naturels spécifiques

MPS dispose désormais de la prise en charge du langage naturel de la plateforme IntelliJ, assurée par Grazie. Cela signifie que vous pouvez vérifier si les valeurs de chaîne des instances de ICheckedNamePolicy, telles que les intentions, les actions ou les outils, utilisent bien les règles d'utilisation des majuscules du langage naturel cible.

Vous pouvez maintenant installer la prise en charge du langage naturel pour les langues voulues dans MPS, afin de permettre à l'IDE de détecter la langue utilisée dans les chaînes et de s'assurer que les majuscules sont employées à bon escient. Il est également possible de contourner le mécanisme de détection de la langue et de spécifier la langue voulue de façon explicite.

En complément des règles d'utilisation des majuscules Title-case par défaut, MPS offre trois autres options :

  • Sentence-case, qui applique les règles de la plateforme IntelliJ
  • Inherited, qui utilise les règles d'application des majuscules de l'ancêtre ICheckedNamePolicy le plus proche
  • No capitalization rules (Aucune règle d'utilisation des majuscules)

Possibilité de répartition des opérations binaires sur plusieurs lignes

Dans l'éditeur, vous pouvez désormais fractionner les lignes longues comportant des opérations binaires. Une intention dédiée permet de basculer entre les dispositions sur une ou plusieurs lignes pour une opération BinaryOperation donnée.

Nouveau style d'éditeur booléen : read-only-inspector

Le nouveau style read-only-inspector applique la propriété en lecture seule à l'ensemble des cellules d'édition de l'inspecteur. Lorsque ce style est appliqué à l'une des cellules de l'éditeur principal, l'inspecteur bascule en lecture seule pour le nœud inspecté lorsque la cellule utilisant ce style est sélectionnée. Le nouveau style dispose des propriétés suivantes :

  • Il est désactivé par défaut.
  • Ce style peut être hérité ou ignoré, tout comme le style read-only.
  • Il n'a pas d'effet sur les cellules de l'éditeur principal.
  • Le style read-only défini par ce mécanisme peut être ignoré dans toute autre cellule située plus bas dans l'arborescence de cellules de l'éditeur de l'inspecteur.

Dépendances transitives dans Build Language

Build Language n'impose plus la mention de chaque script de build atteignable de façon transitive dans dependencies. Cela signifie qu'un script de build, BuildA, qui dépend de BuildB peut désormais atteindre BuildC via BuildB (à condition que BuildB dépende de BuildC) sans avoir à spécifier BuildC de façon explicite. Le générateur émet des propriétés Ant ${artifacts.BuildC} dans ces cas, et ces propriétés peuvent être fournies depuis l'outil de build externe (Gradle, Maven, etc.).

Cela vous permet de diviser les builds volumineux en plus petites entités sans forcer chaque utilisateur à mettre à jour les listes de dépendances. Par exemple, un simple script de build platform peut englober un nombre toujours plus important de bibliothèques externes utilisées dans différents sous-projets.

Migrations plus fiables via les dépendances enregistrées

Auparavant, le code de migration décidait quelles migrations appliquer en fonction des dépendances réelles des modules et des langages utilisés recueillis au moment de la migration, mais il lisait les versions à partir de l'instantané des dépendances enregistré dans le descripteur de module. Cette discordance pouvait amener les migrations à utiliser une représentation du monde différente de celle sur laquelle reposait la dernière modification du module.

Dans la version 2026.1, le mécanisme de migration utilise systématiquement les dépendances et les langages utilisés qui sont enregistrés dans le descripteur de module lors de la dernière modification et non pas l'état actuellement observable. Le vérificateur de migration a été refactorisé en conséquence. Il recycle désormais les informations déjà collectées pour le processus de migration au lieu de les recalculer à la demande.

Stubs Java améliorés

Tout un ensemble de bugs liés aux stubs Java a été corrigé, ce qui améliore visiblement la précision des stubs BaseLanguage produits pour les fichiers .jar et les racines de modèle Java Sources :

  • MPS-33174 (ouvert depuis 2021) – Les classes avec des attributs InnerClasses sont désormais transformées correctement en stubs BaseLanguage. Les informations sur les classes internes dans la signature, ainsi que les types propriétaires paramétrés, sont conservées, ce qui permet aux champs et méthodes des classes internes de classes externes génériques d'afficher désormais le type correct au lieu d'être ramenés au type de la classe externe.
  • MPS-39375 : pour les variables de type des méthodes génériques des classes internes, les méthodes référençant les variables de type de la classe externe n'affichent plus java.lang.Object à la place de la véritable variable de type.
  • MPS-39007 : le message erroné Java imports annotation is present ne s'affiche plus sur chaque racine de modèle de stub de source Java.
  • MPS-39565 : les racines de stub de source Java ne disparaissent plus lors de la modification des propriétés du module contenant, ce qui permet de conserver intactes les références du code du projet vers ces racines lorsque les propriétés du module changent.

Cycle de vie de projet modernisé

Étant donné que MPSProject est passé d'un ancien composant ProjectComponent d'IntelliJ IDEA à un service de projet, les fonctionnalités MPS doivent disposer d'un mécanisme fiable pour être informées de l'apparition et de la disparition de MPSProject.

Cette version introduit un mécanisme dédié de gestion des activités de démarrage et d'arrêt de MPSProject, ce qui donne à MPS le contrôle du séquençage, du groupement, du tri et du threading de ces activités. Les composants ProjectActivity et MPSProjectActivity de la plateforme ne permettaient pas de faire cela.

Explication : les implémenteurs s'enregistrent sur le point d'extension jetbrains.mps.project.lifecycleListener (déclaré dans MPSCore.xml) via un bean ProjectLifecycleListener.Bean avec un attribut listenerClass et un entier facultatif priority. L'élément LifecycleEventDispatch.java de MPSProject peut déclencher :

  • projectReady (non bloquant)
  • projectDiscarded (bloquant)
  • asyncProjectClosed (non bloquant)

Wayland par défaut

MPS permet désormais d'utiliser Wayland comme protocole d'affichage par défaut sur les systèmes Linux pris en charge. Lors de l'exécution dans un environnement compatible avec Wayland, MPS bascule automatiquement vers un backend Wayland natif au lieu d'utiliser les couches de compatibilité X11, conformément aux standards de bureau Linux modernes.

Cette transition améliore l'intégration globale avec le système, en offrant davantage de stabilité au niveau des compositeurs Wayland, une prise en charge adaptée aux méthodes d'entrée et au glisser/déposer, sans oublier un rendu plus constant, notamment sur les installations HiDPI et à mise à l'échelle fractionnaire. L'expérience utilisateur reste familière, mais quelques différences (telles que le positionnement de la fenêtre ou au niveau des décorations) peuvent apparaître en raison de l'architecture de Wayland.

Nombreux correctifs de bugs

MPS 2026.1 comprend de nombreux correctifs de bugs. Vous trouverez la liste complète des problèmes résolus ici.

Nouveautés de la plateforme

Mises à jour de l'interface utilisateur

JetBrains MPS 2026.1 privilégie toujours le confort d'utilisation et une interface utilisateur ergonomique, afin de créer un espace de travail aussi accessible et personnalisable que votre code.

La fonctionnalité très attendue de synchronisation du thème de l'IDE avec le système d'exploitation est désormais disponible pour les utilisateurs de Linux, ce qui rétablit l'équilibre par rapport à macOS et Windows. Vous pouvez l'activer dans Settings | Appearance & Behavior | Appearance.

Les utilisateurs de Windows qui utilisent principalement le clavier peuvent désormais mettre le focus sur le menu principal de l'IDE en appuyant sur la touche Alt. Cette modification améliore l'accessibilité pour les utilisateurs de lecteurs d'écran.

Mises à jour du contrôle de version

Nous continuons d'apporter des améliorations à fort impact par petites touches, afin de fluidifier et de faciliter votre travail au quotidien.

Vous pouvez désormais modifier les commits récents directement depuis la fenêtre d'outils Commit sans avoir à vous soucier des arcanes du rebase interactif. Sélectionnez simplement le commit cible et les modifications voulues, et confirmez-les : l'IDE s'occupe du reste.

En plus des arbres de travail Git, nous avons amélioré les workflows de branches avec la nouvelle action Checkout & Update qui récupère toutes les modifications réalisées à distance.

De plus, il est désormais possible d'automatiser l'extraction des modifications sans passer par un autre plugin. Pour cela, activez Fetch remote changes automatically dans Settings | Git.

Mises à jour du terminal

  • Arrêtez de mémoriser des commandes. Commencez à les découvrir. La saisie semi-automatique intégrée au terminal vous permet d'explorer instantanément les sous-commandes et les paramètres disponibles au fil de la saisie. Que vous utilisiez des outils CLI complexes comme Git, Docker ou kubectl, ou vos propres scripts personnalisés, cette fonctionnalité suggère intelligemment des options valides en temps réel.

    Initialement disponible pour les shells Bash et Zsh, cette fonctionnalité est désormais également proposée dans PowerShell.

  • Nous avons corrigé le comportement de la touche Échap qui est désormais traité par le shell et non plus en transférant le focus à l'éditeur, de façon à ne pas interférer avec le workflow de l'agent d'IA. De plus, Maj+Entrée insère désormais une nouvelle ligne, afin de faciliter l'écriture directe de prompts et de commandes sur plusieurs lignes. Ce comportement peut être désactivé dans Settings | Advanced Settings | Terminal.

Guide de migration

Pour chaque nouvelle version majeure de MPS, nous fournissons des instructions pour vous aider à effectuer la migration dans les meilleures conditions. Veuillez les examiner attentivement dans le guide de la migration actualisé.