Das ist neu in MPS 2022.3

MPS 2022.3 bietet verbesserte Constraint-Regeln, Migrationssynchronisierung mit MPS-Erweiterungen, Kotlin-Stubs für die JVM und mehr.

Update für Constraint-Regeln
Von Kunden gewünscht

Die Constraint Rules-Sprache wurde geschaffen, um die Unzulänglichkeiten der Constraint-Sprache zu beheben. Durch Constraint Rules macht dieses Release einen Schritt nach vorn in Bezug auf die Nutzbarkeit der Sprache.

  • Die Definitionen der Constraint-Regeln können jetzt von NodeTestCases aus referenziert werden. Zuvor war dies nicht möglich.
  • Die experimentellen Constraint-Regel-Definitionen ermöglichen die Anzeige von Protokollierungsmeldungen im Inspector-Fenster zur verbesserten Nachverfolgung und zum Debugging.
  • Fehlermeldungen für Constraint-Regeln können auf bestimmte Knoteneigenschaften oder Referenzen verweisen. Anstatt den gesamten Knoten hervorzuheben, kann die Meldung so konfiguriert werden, dass nur eine Eigenschaft oder eine Referenz hervorgehoben wird.

Verbessertes Laden von Modulklassen

MPS-Module dienen unterschiedlichen Zwecken – sie können eine Sandbox zum Experimentieren mit Ihrer Sprache bereitstellen oder aktiven Plugin-Code enthalten, der das Verhalten von MPS oder der IntelliJ-IDEA-Plattform modifiziert. In MPS 2022.3 haben wir all diese Einsatzzwecke unter einem Dach vereint. Die Java-Facet-Seite des Solution-Moduls wurde überarbeitet, um alle relevanten Einstellungen zusammenzuführen und häufige Szenarien zu identifizieren, damit Sprachentwickler*innen und Anwender*innen den Verwendungszweck eines Moduls leicht erkennen können. Das IDEA-Plugin „Module Facet“ wurde als veraltet gekennzeichnet und wird nicht mehr verwendet. Wir haben nur die Einstellungen für Solution-Module zugänglich gemacht – Language- und Generator-Module verfolgen zwar den gleichen Ansatz, ihre Einstellungen werden jedoch implizit konfiguriert. Mehr erfahren.

Synchronisierung von Migrationen mit MPS-Erweiterungen

Das MPS-Ökosystem wurde schon immer durch eine aktive Community bereichert, und wir haben unsere Anwender*innen stets ermutigt, die Funktionalität des Produkts mit externen Bibliotheken zu erweitern. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. Neben den zahlreichen Vorteilen hat dies für die Gemeinschaft jedoch auch einen signifikanten Nachteil – Anwender*innen müssen die Migration der Drittanbieter-Bibliotheken abwarten, bevor sie die MPS-Version aktualisieren können. Wir haben mit itemis, unserem offiziellen Partner und Haupt-Maintainer von MPS-Erweiterungen, gemeinsam daran gearbeitet, unsere Releases zu synchronisieren, um eine reibungslosere Migration auf die neueste Produktversion zu ermöglichen.

Zusätzliche Hilfsmethoden in der Sprachdefinition

Sprachdesigner*innen können jetzt den Umfang des sich wiederholenden Codes reduzieren, indem sie diesen Code in Hilfsmethoden extrahieren, die sich direkt innerhalb des Root-Knotens der Definition befinden. Diese zusätzlichen Methoden können an folgenden Orten definiert werden:

  • Constraints
  • Transformations- und Ersatzaktionen
  • Inferenz- und Prüfregeln
  • Quick-Fixes
  • Intentions

Intentions erlauben auch zusätzliche Felder für die Erhaltung der in der Methode isApplicable berechneten Werte, damit diese in der Methode execute verwendet werden können.

Kotlin-Stubs für die JVM

Kotlin-Stubs für die JVM

Sie können jetzt Stubs aus kompilierten Kotlin/JVM-Bibliotheken importieren – bisher konnten nur Kotlin/Common-Bibliotheken importiert werden. Dank dieser Verbesserung können Sie Bibliotheken, die für die JVM (Java, Kotlin oder gemischt) kompiliert wurden, in Ihren Moduloptionen über den Modell-Root Kotlin JVM verwenden. Mehr erfahren.

Verbesserungen für die Kotlin-Edition

Diese neue MPS-Version enthält verschiedene kleinere Änderungen und Verbesserungen:

  • Kotlin-Klassen sind jetzt Root-fähige Knoten und haben ihre eigenen Symbole.
  • Sie können in Kotlin-Code jetzt auf Java-Enum-Einträge verweisen.
  • Der Ausdruck this kann korrekt auf ein Label verweisen (z. B. this@EineKlasse).
  • withKotlin-Flags in Buildskripten fragen jetzt nach einem $kotlinc_home-Makro, anstatt wie bisher einen fest kodierten Speicherort zu verwenden.
  • Stubs wurden verbessert:
    • Das Ausschließen/Einschließen von Paketen in den Stub-Optionen funktioniert jetzt genauso wie bei Java-Stubs.
    • Mehrere Methoden mit instabilen IDs, die zu fehlerhaften Referenzen führten, wurden korrigiert.
Transformation zum Erstellen eines Konstruktors aus einem Typ

Transformation zum Erstellen eines Konstruktors aus einem Typ

Sie können jetzt einen Konstruktor-Aufruf für einen bestimmten Aufruf mit einer Rechtstransformation erstellen, indem Sie eine öffnende Klammer eingeben. Dies funktioniert mit jedem Kotlin-Typ, der diese Operation unterstützt (dies kann Benutzertypen einschließen), und dadurch wird die Erstellung eines Standardausdrucks für einen bestimmten Typ erleichtert, z. B. bei der Erstellung eines Lambdas aus einem funktionalen Schnittstellentyp.

Verbesserte Erweiterungsfunktionen in Scopes

Verbesserte Erweiterungsfunktionen in Scopes

Erweiterungsfunktionen in Scopes wurden geändert, um kompatible Methoden in Scopes nicht auszuschließen. Der Preis dafür ist, dass einige Elemente in Scopes enthalten sind, die aufgrund der Performance der aktuellen Systemimplementierung nicht anwendbar sind.

Durch die automatische Auflösung von Funktionsreferenzen können Referenzen korrigiert werden, wenn eine nicht anwendbare Funktion ausgewählt wird.

Neue Intention zum Zurücksetzen des Klassenpfads und der VM-Optionen

Neue Intention zum Zurücksetzen des Klassenpfads und der VM-Optionen

Eine neue Intention aktualisiert den MPSStartupScript-Knoten und setzt VM-Optionen und Klassenpfadwerte auf die aktuellen MPS-Werte. MPS-VM-Optionen und Klassenpfadwerte ändern sich mit jeder neuen Version. Bisher mussten Benutzer*innen Build-Projekte für eine eigenständige IDE manuell aktualisieren.

Migrationsleitfaden

Für jede Hauptversion erstellen wir eine Anleitung für die Migration von älteren MPS-Versionen, um einen reibungslosen Ablauf zu gewährleisten. Bitte lesen Sie diese sorgfältig durch.